MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL受权许可。php
开发这个分支的缘由之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,所以社区采用分支的方式来避开这个风险。python
MariaDB的目的是彻底兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。mysql
Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。linux
- 源码编译安装nginx
- 下载rpm包安装redis
- yum安装sql
- 路径有区别,yum安装的软件是他自定义的,源码编译安装的软件./configure --preifx=软件安装的绝对路径;数据库
- yum仓库的软件,版本可能比较低,而源码编译安装,版本可控;apache
- 编译安装的软件,支持第三方功能扩展./configure 这里能够加上不少参数,定制功能;vim
yum仓库之间的区别?
- 咱们以前使用过阿里云的yum仓库,其中有咱们须要的一些软件包;
- 假设要下载mysql软件,则mysql官网,也会提供rpm包,源码包,以及yum源,供给下载;
阿里云提供的yum仓库和epel源仓库,它们都也有mariadb,可是版本可能会很低,因此咱们下面就选用mariadb的官方yum源。
第一步:添加 MariaDB yum 仓库
1
|
vi
/
etc
/
yum.repos.d
/
MariaDB.repo 编辑建立mariadb.repo仓库文件
|
将下面代码写入建立的MariaDB.repo仓库中,即配置官方的mariadb的yum源 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
第二步:在 CentOS 7 中使用yum命令安装 MariaDB
当 MariaDB 仓库地址添加好后,你能够经过下面的一行命令轻松安装 MariaDB。
1
|
yum install MariaDB
-
server MariaDB
-
client
-
y 安装mariadb服务端和客户端
|
注意:因为是国外镜像源,所以下载速度可能很慢
若不想使用MariaDB官方的yum源,而选择使用阿里云的yum源中的mariadb,则将上述的Mariadb.repo删除,并清空yum缓存,而后使用以下命令从阿里云的yum下载
1
|
yum install mariadb
-
server mariadb
-
y 注意阿里云的包名是小写,官方是大写
|
第三步:启动mariadb相关命令
1
2
3
4
|
systemctl start mariadb
#启动MariaDB
systemctl stop mariadb
#中止MariaDB
systemctl restart mariadb
#重启MariaDB
systemctl enable mariadb
#设置开机启动
|
此时数据库客户端即可以去链接数据库,以下:
第四步:初始化mysql
在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要当即使用。为了确保数据库的安全性和正常运转,须要先对数据库程序进行初始化操做。确保mariadb服务器启动后,执行以下命令初始化:
1
|
mysql_secure_installation
|
这个初始化操做涉及下面 5 个步骤:
- 设置 root 管理员在数据库中的密码值(注意,该密码并不是 root 管理员在linux系统中的密码,这里的密码值默认应该为空,可直接按回车键)。
- 设置 root 管理员在数据库中的专有密码。
- 随后删除匿名帐户,并使用 root 管理员从远程登陆数据库,以确保数据库上运行的业
务的安全性。
- 删除默认的测试数据库,取消测试数据库的一系列访问权限。
- 刷新受权列表,让初始化的设定当即生效。
具体效果以下图:
进入数据库,输入 \s 查看数据库编码,以下图:
1
|
vi
/
etc
/
my.cnf 编辑文件
/
etc
/
my.cnf,在[mysqld]下边写入下面两行代码
|
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci
1
|
systemctl restart mariadb 重启mariadb服务,读取my.cnf新配置
|
登陆数据库,再次\s查看字符编码,此时都为utf8,以下图:
注意:此时若编码问题还没解决,那问题应该是数据库建立时没有指定编码,默认了非utf8编码,按以上方法修改完/etc/my.cnf文件后再进行建立的数据库编码就是utf8了。
1
|
MariaDB [(none)]> show create database s15; 查看数据库s15的编码
|
1
|
MariaDB [(none)]>
set
password
=
PASSWORD(
'redhat123'
); 修改mysql密码
|
生产环境里不会死磕root用户,为了数据库的安全以及和其余用户协同管理数据库,就须要建立其余数据库帐户,而后分配权限,知足工做需求
1
2
3
|
MariaDB [(none)]> create user wll@
'127.0.0.1'
identified by
'wll123'
; 建立用户wll
MariaDB [(none)]> use mysql; 切换到mysql数据库下,其中user表存放用户信息
MariaDB [mysql]> select host,user,password
from
user where user
=
'wll'
; 查看用户信息
|
切换普通用户wll,查看数据库信息,发现没法看到完整的数据库列表
1
2
|
[root@master ~]
# mysql -uwll -p -h 服务器地址 以普通用户wll身份登陆数据库
MariaDB [(none)]> show databases; 查看数据库信息,没法看到完整的数据库列表
|
1)mysql使用grant命令对帐户进行受权,grant命令常见格式以下:
grant 权限 on 数据库.表名 to 帐户@主机名; 对特定数据库中的特定表受权 grant 权限 on 数据库.* to 帐户@主机名; 对特定数据库中的全部表受权 grant 权限1,权限2,权限3 on *.* to 帐户@主机名; 对全部库中的全部表给予多个受权 grant all privileges on *.* to 帐户@主机名; 对全部库和全部表受权全部权限
使用root用户登陆,进行权限设置
1
|
[root@localhost ~]
# mysql -uroot -p
|
授予用户wll操做全部数据库的全部表的全部权限
1
2
3
4
|
MariaDB [(none)]> grant
all
privileges on
*
.
*
to wll@
127.0
.
0.1
;
MariaDB [(none)]> flush privileges; 刷新权限表
MariaDB [(none)]> use mysql;
MariaDB [mysql]> show grants
for
wll@
127.0
.
0.1
;
|
2)受权配置
远程链接设置,设置全部库,全部表的全部权限,赋值权限给全部ip地址的root用户
1
2
3
|
> grant
all
privileges on
*
.
*
to root@
'%'
identified by
'password'
;
> create user
'username'
@
'%'
identified by
'password'
; 建立用户
> flush privileges; 刷新权限
|
mysqldump命令用于备份数据库数据,导出当前数据库中的全部db到一个文件,以下:
1
|
[root@localhost ~]
# mysqldump -u root -p --all-databases > /tmp/db.dump
|
进入mariadb数据库,删除一个db,以下:
1
2
|
[root@localhost ~]
# mysql -uroot -p
MariaDB [(none)]> drop database s15;
|
进行数据恢复,把刚才重定向备份的数据库文件导入到mysql中,再查看数据库显示已经恢复
方式一:经过命令方式导入
1
|
[root@localhost ~]
# mysql -uroot -p < /tmp/db.dump
|
方式二:登陆数据库后经过source导入
1
2
|
[root@localhost ~]
# mysql -uroot -p
MariaDB [(none)]> source
/
tmp
/
db.dump
|
MySQL数据库的主从复制方案,是其自带的功能,而且主从复制并非复制磁盘上的数据库文件,而是经过binlog日志复制到须要同步的从服务器上。
MySQL数据库支持单向、双向、链式级联等不一样业务场景的复制。在复制的过程当中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其余的服务器充当从服务器(slave),接收来自Master上binlog文件的日志内容,解析出SQL,从新更新到Slave,使得主从服务器数据达到一致。
主从复制的逻辑有如下几种:
1)一主一从,单向主从同步模式,只能在Master端写入数据;
2)一主多从;
3)双主复制逻辑架构,此架构能够在Master1或Master2进行数据写入,或者两端同时写入(特殊设置);
在生产环境中,MySQL主从复制都是异步的复制方式,即不是严格的实时复制,可是给用户的体验都是实时的。MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,且有效的保护了服务器宕机的数据备份。
应用场景:利用复制功能当Master服务器出现问题时,咱们能够人工的切换到从服务器继续提供服务,此时服务器的数据和宕机时的数据几乎彻底一致。复制功能也可用做数据备份,可是若是人为的执行drop,delete等语句删除,那么从库的备份功能也就失效了。
主从机制实现原理,以下图:
1)master将改变记录到二进制日志(binary log)中(这些记录叫作二进制日志事件,binary log events);
2)slave将master的binary log events拷贝到它的中继日志(relay log);
3)slave重作中继日志中的事件,将改变反映它本身的数据;
练习主从复制架构:mysql的主从复制架构,须要准备两台机器,而且能够通讯,安装好2个mysql,保持版本一致性。
1
|
mysql
-
V
# 查看数据库版本
|
一、master主库配置
1
2
|
systemctl status mariadb
# 查看数据库状态
systemctl stop mariadb
# 若数据库开启,则中止mariadb服务
|
在主库的配置文件/etc/my.cnf文件中写入开启主库的参数
1
|
vi
/
etc
/
my.cnf
# 编辑配置文件/etc/my.cnf,写入下面两行代码
|
server-id=1 # 一个标注,表明主库的身份id log-bin=s15mysql-bin # 那个binlog的文件名
1
2
3
|
[root@localhost ~]
# systemctl restart mariadb # 重启mairadb,读取配置文件
[root@localhost ~]
# mysql -uroot -p # 登陆数据库
MriaDB [(none)]> show master status;
# 查看日志文件的名字,以及数据起始点
|
二、master主库添加从库帐号
建立用于主从数据同步的帐户
1
|
MriaDB [(none)]> create user
'yuanhao'
@
'%'
identified by
'passwd'
;
|
授予主从同步帐号的,复制数据的权限
1
|
MriaDB [(none)]> grant replication slave on
*
.
*
to
'yuanhao'
@
'%'
;
|
进行数据库的锁表,防止数据写入,从库导入数据后解锁
1
2
|
MriaDB [(none)]> flush table with read lock;
# 锁表
MriaDB [(none)]> unlock tables;
# 解锁表,从库同步完数据后解锁
|
将数据导出
1
|
[root@localhost ~]
# mysqldump -u root -p --all-databases > /tmp/zhucong.dump
|
而后将主库的数据,发送给从库
1
|
[root@localhost ~]
# scp /tmp/zhucong.dump root@从库:/tmp/
|
三、slave从库配置
编辑配置文件/etc/my.cnf,写入从库的身份信息
1
|
vi
/
etc
/
my.cnf
# 编辑文件,写入下面代码
|
[mysqld] server-id=10 # 标注从库身份,区别开主库便可
检查一下主库和从库的参数信息
1
2
|
MriaDB [(none)]> show variables like
'server_id'
;
# 查看server_id
MriaDB [(none)]> show variables like
'log_bin'
;
# 查看是否开启log_bin
|
登陆从库的mysql,导入主库的数据,保持数据一致性,执行完毕后即可解锁了
方式一:
1
2
|
[root@localhost ~]
# mysql -uroot -p
MriaDB [(none)]> source
/
tmp
/
zhucong.dump
|
方式二:
1
|
[root@localhost ~]
# mysql -uroot -p < /tmp/zhucong.dump
|
注意:导入前可先将从库中数据删除以确保数据一致!
经过一条命令,开启主从同步
1
2
3
4
5
|
MriaDB [(none)]> change master to master_host
=
'192.168.13.78'
,
-
> master_user
=
'yuanhao'
,
-
> master_password
=
'passwd'
,
-
> master_log_file
=
's15mysql-bin.000001'
,
-
> master_log_pos
=
571
;
|
开启从库的slave同步
1
|
MriaDB [(none)]> start slave;
|
查看主从同步的状态
1
|
MriaDB [(none)]> show slave status\G;
|
查看两条参数 ,确保主从正常
1
2
|
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
|
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它能够用做数据库、缓存和消息中间件。
Redis是VMware开发的开源免费的KV型NoSql缓存产品;
Redis具备很好的性能,最多能够提供10万次/秒的读写;
目前新浪微博团队组建了世界上最大规模的Redis集群;
高速缓存介绍:
- 高速缓存利用内存保存数据,读写速度远超硬盘;
- 高速缓存能够减小I/O操做,下降I/O压力;
1
|
yum
list
redis
# 查看是否有redis包,以下图
|
1
2
3
4
5
6
|
yum install redis
-
y
# 安装redis
systemctl start redis
# 启动redis服务端,注意:使用yum安装的可使用systemctl
netstat
-
tunlp|grep redis
# 查看redis端口状态,如有结果则表示已经开启redis服务
redis
-
cli
# redis 客户端工具
127.0
.
0.1
:
6379
> ping
PONG
|
进入交互式环境,执行ping,返回pong表示安装成功,以下图:
编译安装的优点是:
- 编译安装时能够指定扩展的module(模块),php、apache、nginx都是同样有不少第三方扩展模块,如mysql,编译安装时候,若是须要就定制存储引擎(innodb,仍是MyIASM);
- 编译安装能够统一安装路径,linux软件约定安装目录在/opt/下面;
- 软件仓库版本通常比较低,编译源码安装能够根据需求,安装最新的版本;
第一步:下载redis源码包
1
|
[root@localhost opt]
# wget http://download.redis.io/releases/redis-4.0.10.tar.gz
|
第二步:解压缩
1
|
[root@localhost opt]
# tar -zxf redis-4.0.10.tar.gz
|
第三步:切换redis源码目录
1
2
|
[root@localhost opt]
# cd redis-4.0.10
[root@localhost redis
-
4.0
.
10
]
# ls # 查看redis-4.0.10中文件
|
注意:上面解压缩源码包后已经有了Makefile文件,以下图,因此下一步直接执行make编译便可
第四步:编译源文件
1
|
[root@localhost redis
-
4.0
.
10
]
# make && make install
|
第五步:指定配置文件/opt/redis-4.0.10/redis.conf启动redis
1
|
[root@localhost redis
-
4.0
.
10
]
# redis-server redis.conf 启动redis,以下图:
|
咱们发现启动redis服务器,终端hung住,要再开一个终端进行redis操做,咱们能够经过开启redis的后台服务,使开启redis再也不独占一个终端,这只须要咱们修改redis.conf文件中的daemonize参数为yes,以下:
vim /opt/redis-4.0.10/redis.conf # 编译redis的配置文件 将文件中的daemonize no 改成 daemonize yes
注意:因为发现有些同窗,在使用云服务器时,安装的redis3.0+版本都关闭了protected-mode(保护模式),于是都遭遇了挖矿病毒的攻击,使得服务器99%的占用率!!
所以咱们在使用redis时候,最好更改默认端口,而且使用redis密码(redis没有用户概念,redis只有密码)登陆。配置文件redis.conf中的默认参数配置以下:
1
|
grep
-
v
"^#"
redis.conf | grep
-
v
"^$"
# 过滤出文件中的非空白行和非注释行
|
1)更改bind参数,让redis能够远程访问
bind 0.0.0.0
2)更改redis的默认端口
port 6380 # 也能够改成其余端口
3)使用redis的密码进行登陆
requirepass xxx 设置登陆redis的密码是xxx 注意:redis.conf文件中requirepass是注释掉的参数,放开注释,后边写上密码便可
第六步:经过新的端口和密码登陆redis
方式一:
1
2
3
|
[root@localhost ~]
# redis-cli -p 6380 # 登陆redis服务器
127.0
.
0.1
:
6380
> auth xxx
# 登陆后,auth和刚设置的密码便可登陆redis
OK
|
方式二(交互式的参数登陆数据库,暴漏密码,不安全):
1
|
[root@localhost ~]
# redis-cli -p 6380 -a xxx
|
第七步:使用redis
登陆后就可使用redis存取数据了,以下: