概述
一、概述
当系统对数据的读取比较多时,为了分摊读的压力,可以采用一主多从架构,实现读写分离。
二、一主三从架构图
三、环境配置
A、在 MySQL 主服务器 (3307) 配置文件 my.cnf 里面加入
#表示启用二进制日志
log-bin = mysql-bin
#表示 server 编号,编号要唯一
server-id = 3307
B、在 MySQL 从服务器 (3308) 配置文件 my.cnf 里面加入
#表示 server 编号, 编号要唯一
server-id = 3308
C、在 MySQL 从服务器(3309) 配置文件 my.cnf 里面加入
#表示 server 编号, 编号要唯一
server-id = 3309
D、在 MySQL 从服务器 (3310) 配置文件 my.cnf 里面加入
#表示 server 编号,编号要唯一
server-id = 3310
四、服务启动
进入/usr/local/mysql-5.7.24/bin目录,重启四个MySQL服务,启动时指定配置文件
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3307/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3308/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3309/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.24/data/3310/my.cnf &
五、主从设置
1. 主服务器 (3307) 设置
需要登录到主服务器3307的客户端
在/usr/local/mysql-5.7.24/bin目录下执行
./mysql -uroot -p -P3307 -h127.0.0.1
(1) 在主服务器上创建复制数据的账号并授权
添加同步用户
grant replication slave on *.* to 'copy'@'%' identified by '123456';
注意 :该语句可完成授权、创建用户、修改密码操作。
(2) 查看主服务器状态
show master status;
mysql主服务器默认初始值:
File :mysql-bin.000001
Position :154
(3) 如果主服务状态不是初始状态,需要重置状态
执行命令:
reset master;
2. 从服务器 (3308 | 3309 | 3310) 设置
需要登录到服务器 3308|3309|3310 的客户端
在 /usr/local/mysql-5.7.24/bin 目录下执行
./mysql -uroot -p -P3308|3309|3310 -h127.0.0.1
(1) 查看从服务器状态
show slave status;
初始状态:Empty set
(2) 如果从服务器不是初始状态,建议重置一下
#停止复制,相当于终止从服务器上的IO和SQL线程
stop slave;
reset slave;
(3) 设置从服务器的 master
在从服务器客户端执行
change master to master_host='192.168.235.128',master_user='copy',master_port=3307,master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;
(4) 在从机器上执行开始复制命令
start slave;
(5) 至此一个一主多从搭建完成
六、主从验证
1. 检查从服务器复制功能状态
在从服务器的客户端执行以下命令:how slave status \G;
\G
表示格式化输出
如果Slave_IO_Running和 Slave_SQL_Running 均为 YES,则表示主从关系正常
2. 修改主服务器查看从服务器状态
- 在Navicat主服务器上创建库test,查看从服务器情况
- 在Navicat主服务器上test库中创建表user(id,name),查看从服务器情况
- 在Navicat主服务器上test库的user中添加数据,查看从服务器情况
- 在Navicat主服务器上test库的user中修改数据,查看从服务器情况
如果以上操作过程若显示正常,则主从服务器配置完成
3. 查看主从复制 binlog 日志文件内容
在主服务器客户端执行:show binlog events in 'mysql-bin.000001'\G;