文章目录
- 一、前期环境准备
- 二、主库配置
- 1.设置server-id值并开启binlog参数
- 2.建立同步账户并给上权限
- 3.查看主库状态
- 4.锁表设置只读
- 5.备份数据库数据
- 三、从库配置
- 1.设置server-id值并开启binlog参数
- 2.还原从主库备份数据
- 3.设定从主库同步
- 4.启动从库同步开关
- 四.测试
- 1.在主库上创建数据库
- 2.在主库上删除数据库
- 总结
一、前期环境准备
前期需要准备三台主机
二、主库配置
1.设置server-id值并开启binlog参数
vim /etc/my.cnf 去这个配置文件下,
[mysqld]
log_bin=mysql-bin
server_id = 11
server_id 要与从库不一样
改完配置文件后需要重启数据库
systemctl restart mysqld
2.建立同步账户并给上权限
grant replication slave on *.* to 'rep'@'192.168.45.%' identified by 'redhat';
查看账户的权限
show grants for 'rep'@'192.168.45.%';
3.查看主库状态
show master status;
可以看见当前日志名和偏移量
4.锁表设置只读
为后面备份准备,注意生产环境要提前申请停机时间;
flush tables with read lock;
如果超过设置时间不操作会自动解锁
show variables like '%timeout%';
测试锁表后是否可以创建数据库
5.备份数据库数据
我这里使用mydb3数据库
备份该数据库
mysqldump -uroot -predhat -B mydb3 > my.sql
然后将该数据库传给两个从库
scp my.sql 192.168.45.142:/opt/
去两个从库查看是否有该文件
最后进行解锁
unlock tables;
三、从库配置
1.设置server-id值并开启binlog参数
注意server_id不能一样,这里将它设置成12
设置完配置文件之后需要重启mysql
2.还原从主库备份数据
mysql -uroot -p < /opt/my.sql
两个从库都做一样的配置
然后去查看还原的数据库
3.设定从主库同步
在从库的mysql上
change master to
-> master_host='192.168.45.140',
-> master_port=3306,
-> master_user='rep',
-> master_password='redhat',
-> master_log_file='mysql-bin-000011',
-> master_log_pos=439;
show master status;
#去查看日志名
4.启动从库同步开关
mysql> start slave;
#检查状态:
mysql> show slave status\G
这里要注意的时,因为我使用的时克隆机器,因此三台机器的uuid都是一样的,会出现报错,因此需要去修改uuid
如果您的三台主机不是克隆的可一忽略这个问题
#去这个配置文件下进行修改
vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=816b68b8-1ad6-11ee-9ffb-000c29f9526b
改完配置文件记得重启数据库
然后去查看从库状态
当Slave_IO_Running和Slave_SQL_Running参数都为yes时,说明配置成功
四.测试
1.在主库上创建数据库
然后去从库上查看
2.在主库上删除数据库
测试成功,主从复制没有问题。
总结
在大家进行主从复制的时候,如果遇到Slave_IO_Running和Slave_SQL_Running参数有no时,大致有一下几种情况
1.server-id可能一样
2.server-uuid可能一样
3.主库的密码不一样
所有大家在进行配置时,一定要细心,防止出错。