一、复制的基本原理:
1、slave会从master读取binlog进行数据同步。
2、复制的步骤及原理图:
(1)master将改变记录到二进制日志(binary log),这些记录过程叫二进制日志事件(binary log events);
(2)slave将master的binary log events拷贝到它的中继日志(relay log);
(3)slave重做中继日志中的事件,将改变应用到自己的数据库中。
MySQL复制是异步且串行化的。
二、复制的基本原则:
1、每个slave只有一个master;
2、每个slave只能有一个唯一的服务器ID;
3、每个master可以有多个slave。
三、复制的最大问题:
存在延时问题。
四、一主一从常见配置:
前提:
主:Window;
从:Linux;
MySQL版本一致且后台以服务运行;
主从均配置在【mysqld】节点下,最好为小写。
(一)主机修改my.ini配置文件:
1、【必须】 主服务器唯一ID:server-id=1;
2、【必须】 启用二进制日志:log-bin=…/…/mysql/data/mysqlbin;
3、【可选】启用错误日志:log-err=…/…/mysql/data/mysqlerr;
4、【可选】根目录:basedir="…/…/mysql/";
5、【可选】临时目录:tmpdir="…/…/mysql/";
6、【可选】数据目录:datadir="…/…/mysql/data/";
7、主机允许读写:read-only=0;
8、【可选】设置不要复制的数据库:binlog-ignore-db=mysql;
9、【可选】设置需要复制的数据库:binlog-do-db=需要复制的主数据库名称;
(二)从机修改my.cnf配置文件:
1、【必须】 从服务器唯一ID;
2、【可选】启用二进制日志;
主从机修改完配置文件后,注意需要重启服务;
3、主、从机关闭防火墙;
# Linux防火墙关闭
service iptables stop
4、在Windows主机上建立账户并授权slave:
# 授权
grant replication slave on *.* to 'zhangsan'@'从服务器数据库ip' identified by '123456';
# 刷新系统权限相关表
flush privileges;
# 查看主服务器二进制日志文件的状态信息(记录File和Position的值)
show master status;
5、在Linux从机上配置需要复制的主机:
change master to master_host='主机IP', master_user='zhangsan', master_password='123456', master_log_file='mysqlbin.具体数字', master_log_pos=Position数字;
# 启动从服务器复制功能
start slave;
# 查看主从同步的状态
show slave status\G
Slave_IO_Running与Slave_SQL_Running都为Yes,说明主从配置成功。
6、停止从服务器复制功能:
stop slave;