一、Mysql主从复制分为三步:
1.master将改变的数据记录到二进制日志(binary log)中。这些记录过程叫做二进制日志事件(binary log events);
2.slave将master的binary log events 拷贝到它的中继日志(relay log);
3.slave重做中继日志中的事件,
将改变应用到自己的数据库。
二、复制的基本原则:
每个slave只有一个master;
每个slave只能有一个唯一的服务器ID;
每个master可以有多个slave;
mysql主从版本一致;
主从都配置在[mysqld]的节点下,都是小写;
从机ping主机
主机ping从机
三、配置:
1.关闭主从机防火墙
2.主机修改my.ini配置文件(若在linux环境下是my.cnf):
①server-id=1 主机唯一ID(必须)
[mysqld]的节点下添加 server-id=1
②启用二进制日志(必须)
log-bin=D:/devsoft/mysql/data/mysqlbin 二进制日志记录文件
③启用错误日志(可选)
log-err=D:/devsoft/mysql/data/mysqlerr 错误日志记录文件
④根目录(可选)
basedir="D:/devsoft/mysql/" mysql的根目录
⑤临时目录(可选)
tmpdir="D:/devsoft/mysql/"
⑥数据目录(可选)
datadir="D:/devsoft/mysql/data"
⑧设置不要复制的数据库(可选)
binlog-ignore-db=mysql
⑨设置需要复制的数据库(可选)
binlog-do-db=需要复制的数据库名
3.从机配置文件
[mysqld]节点下
①log-bin=mysql-bin(默认名称,尽量不修改);
②server-id=2
注意:主从机配置文件修改后,需重启mysql服务;
4.主机上建立账号并授权给slave;
①登录主机输入命令:GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'从机ip' IDENTIFIED BY '123456';
用户名:zhangsan,密码:123456
②flush privileges; 刷新命令
③show master status;
记录下两个参数,file下的mysqlbin.000035(二进制日志文件名)和position下的341(从机需要复制的数据在主机上的位置,即主从复制开始记录的位置)
5.在从机上配置需要复制的主机
登录从机mysql输入命令:CHANGE MASTER TO MASTER_HOST='主机ip',
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.000035(主机二进制文件名)',MASTER_LOG_POS=341(主机position值);
6.启动从机
①从机mysql输入命令:start slave;
②查看从机状态:
命令:show slave status\G (\G是为了输出数据以key:value格式显示)
要求,Slave_IO_Running: Yes
Slave_IO_Running: Yes
这两个必须为Yes,否则主从失败
注意:若以上两个不全是Yes,需重新授权,
①先从机stop slave;
②主机how master status; 记录file和position
③从机再次执行5、6操作
————————————————————————————————
至此,主从配置完成,验证,在主表操作,从表自动复制。