主从复制
原理
slave会从master读取binlog来进行数据同步。主要有以下三个步骤:
①master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件(binary log events)。
②slave将master的binary log events拷贝到中继日志(relay log)。
③slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL的复制是异步且串行化的。
规则:
①每个slave只能有一个master。(一对一)
②每个slave只能有一个唯一的服务器ID。
③每个master可以有多个slave。(一对多)
在主从复制过程中,从原理可以看出必然存在延时。
实现步骤:
- /etc/mysql/my.cnf主机配置中增加
#主服务器唯一ID server-id=1 #启用二进制日志 log-bin=mysql-bin #设置不要复制的数据库(可设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字 #设置logbin格式 binlog_format=STATEMENT |
2在从服务/etc/mysql/my.cnf新增
#从服务器唯一ID server-id=2 #启用中继日志 relay-log=mysql-relay |
3.重启mysql 主机以及从机服务
4.主机从机都关闭防火墙
5. 在主机上建立帐户并授权 slave
#在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'xxxxxx';
#查询master的状态
show master status;
#记录下File和Position的值
#执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
6 在从机上配置需要复制的主机
#复制主机的命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
#启动从服务器复制功能
start slave;
#查看从服务器状态
show slave status;
#下面两个参数都是Yes,则说明主从配置成功!
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
7.主机新建库、新建表、insert记录,从机复制
8.如何停止从服务复制功能
stop slave;
9.如何重新配置主从
stop slave;
reset master;
注意事项
- 一定要在同一个局域网中
- 最好把防火墙全部关闭掉