mysql8 主从配置方案
先理论,后实践!在理论的基础上有指导性的实践会更快,也更容易发现错误.理论参考高性能mysql这本书,之前大概看过一遍,但实际生产中并没有怎么注意mysql性能这方面,今天用到主备,就把第十章的复制拿出来学习一下,并做好汇总记录.
概述
复制解决的基本问题是让一台服务器的数据与其他服务器保持同步,mysql支持两种同步,一是基于行的复制和二是基于语句的复制,两种方式都是通过主库上记录二进制日志.
mysql复制大部分是向后兼容的,复制不会增加主库的开销,主要是启用二进制日志带来的开销,也就是网络I/O的开销.
工作原理
复制分为三个步骤:
- 在主库上把数据更改记录到二进制日志中
- 备库将主库上的日志复制到自己的中继日志中
- 备库读取中继日志中的事件,将其重放到备库数据之上
具体配置
- 环境介绍
三台虚拟机:192.168.5.201 hostname:centos01
192.168.5.202 hostname:centos02
192.168.5.203 hostname:centos03
- 主服务器具体配置
三台主机中,我们把201作为主服务器,在主服务器上的配置如下:
1./etc/my.cnf 里配置 server-id=201 log_bin=testMSback #名字自己起 2.mysql 里配置 mysql -uroot -p use mysql; create user 'repl'@'192.168.5.%' identified with 'mysql_native_password' by 'your pwd'; grant replication slave on *.* to 'repl'@'192.168.5.%'; 3.查看master的状态 show master status;
- 从服务器的具体配置
202、203上的配置如下:
1./etc/my.cnf server-id=202 log_bin=testMSback ---------------------------------- server-id=203 log_bin=testMSback 2.mysql里的配置 change master to master_host='192.168.5.201',master_user='repl',master_password='your pwd', master_log_file='testMSback.000003',master_log_pos=1578; 3.开启从服务器 start slave; show slave status;
当看到上面的两个yes,就是成功了。
遇到的问题就是slave_io_Running:connecting,怎么也成不了yes,原因就是登陆用户的权限有问题,好在都解决了。
mysql的日志: