基于 Centos7 + Mariadb 的主从复制与读写分离
搭建环境:
操作系统 | mysql版本 | 身份 | ip地址 |
---|---|---|---|
Centos7 | Ver 15.1 Distrib 5.5.68-MariaDB | Master | 192.168.177.130 |
Centos7 | Ver 15.1 Distrib 5.5.68-MariaDB | Slave1 | 192.168.177.129 |
Centos7 | Ver 15.1 Distrib 5.5.68-MariaDB | Slave2 | 192.168.177.128 |
这个文章只是起个学习作用,所以我们只是用Master + Slave1 环境做搭建。
注:服务器的时区必须同步。
搭建
- 安装Mariadb并启用
我们在这里使用Yum进行快速安装。
# 安装mariadb
yum -y install mariadb mariadb-server
# 启动mariadb
systemctl start mariadb
# 查看mariadb启动状态
systemctl status mariadb
mariadb启动成功后,默认占用端口号是3306,我们确认下:
如图所示,mariadb就已经成功启动了。
- 配置mysql用户 (Master/Slave1)
# 使用 mysqladmin 命令来更改 MySQL root 用户的密码
mysqladmin -uroot -p password 'your_password';
# 进入数据库
mysql -uroot -p
Enter password: 'your_password' # 回车即可
# 想要配置一主多从,那么需要对my.cnf进行配置,但是Master和Slave的配置是不同的
vim /etc/my.cnf
主要是加上 server-id、log-bin、relay-log 三项。
server-id
: server-id 就是标识一个 MySQL 实例的唯一标识符 当你需要将一个 MySQL 数据库设置为主库(Master)并将数据同步到另一个 MySQL 数据库作为从库(Slave)时,需要在主库和从库中分别配置 server-id 参数,并在主库上启用二进制日志(binary logging)。这样就可以确保在主库执行的所有更改都被记录到二进制日志中,并且从库可以通过读取主库的二进制日志来获取并应用这些更改。
log-bin
:它用于启用二进制日志(binary logging)二进制日志是一种记录数据库所有更改操作的方式,包括更新、插入和删除等操作。通过启用二进制日志,可以实现MySQL主从复制、数据恢复和安全审计等功能。
relay-log
:用于配置中继日志,在 MySQL 主从复制中,中继日志是指从库上用于存储从主库同步过来的二进制日志事件的文件。
my.cnf (Master
)配置如图所示:
my.cnf (Slave1
)配置如图所示:
修改完 my.cnf之后需要重新启动mariadb。
systemctl restart mariadb
-
配置主从
- Master
# 进入数据库 mysql -uroot -p123123 # 在 MySQL 数据库中为复制从库(Replication Slave)和复制客户端(Replication Client)添加权限 grant replication slave,replication client on *.* to 'slave'@'192.168.177.129%' identified by "your_slave_password"; # 刷新权限 flush privileges; # 查看主库当前的二进制日志状态 show master status\G;
记住File
Position
两个值, 在后续配置Slave1
需要使用。 自此,Master就已经配置完成了。 - Slave1
# 进入数据库 mysql -uroot -p Enter password: your_password # 回车即可 # 配置 MySQL 主从复制的命令,将当前服务器作为从服务器。 change master to master_host="192.168.177.130", master_user="slave1", master_password="your_master_password", master_log_file="log_file", master_log_pos=pos; # 上方配置的log_file 和 pos 就是上面配置Master完成后让你记住的两个值 `File` 和 `Position`,如果忘记的话,可以在Master服务器中进入数据库输入一下命令查看。 show master status
# 启动从服务器复制进程 start slave # 查看从服务器复制状态 show slave status\G;
最主要就是看这两个(Slave_IO_Running / Slave_SQL_Running) 是否开启(YES)
如果IO线程没有开启,那么下方Last_Error会显示错误信息,一般来说第一次会出现链接超时,那是因为链接不上主数据源,Master可以直接关闭防火墙再试。如果显示的都是YES那么就是主从复制配置成功,接下来我们就可以进行测试了。
- Master
-
测试
进入Master中进入数据库中创建一个库,然后切换到Slave1中查看从数据源中是否也会自动创建这个库。如果创建成功了,那么则主从复制配置成功了。
读写分离 (SpringBoot + MybatisPlus + Druid + Mysql5)
文章太长,单独写了一篇读写分离(多数据源)的文章:添加链接描述