主从复制原理
MySQL的复制过程分三步:
Master将更新记录到二进制日志文件,这些记录过程叫做二进制日志事件。
Slave拷贝Master的二进制日志事件到它的中继日志。
Slave重做中继日志中的事件,把数据改变应用到自己的数据库中。
主从复制配置
主从配置的基本规则
- 每个slave只有一个master
- 每个slave只能有一个唯一的server-id
- 每个master可以有多个slave
一主一从配置示例
实验环境说明:Master和Slave都是在centos7系统下,mysql数据库版本5.5.48.
Master配置文件的设置(/etc/my.cnf)
配置是在mysqld节点下的
以下两个选项是可选配置:
binlog-ignore-db=<数据库名> #设置不需要复制的数据库
binlog-do-db=<数据库名> #设置需要复制的数据库,不设置复制所有
Slave配置文件的设置(my.cnf)
配置是在mysqld节点下的
重启Master和Slave的mysql服务
service mysql stop
service mysql start
或
systemctl restart mysql
关闭Master和Slave的防火墙
systemctl stop firewalld.service;
在Master上建立账户并授权slave
在mysql下执行下列语句:
GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'192.168.52.128' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
查看File和Position的值
SHOW MASTER STATUS;
在slave上配置复制的master
CHANGE MASTER TO MASTER_HOST ='192.168.150.100',MASTER_USER='zhangsan',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=341;
MASTER_LOG_FILE和,MASTER_LOG_POS的值就是由master上查询的结果决定的。
结果验证
在slave的mysql下查看slave的状态
show slave status\G
以上两个选项都是Yes表示配置成功。