一、主从复制的基本原理
-
Slave会从master读取binlog来进行数据同步。
-
master会将自身的改变记录到二进制日志(binary log)。这些记录过程称为二进制日志事件(binary log event)。
-
slave将master的binary log events拷贝到它的中继日志(relay log)。slave参照中继日志,将改变应用到自身。
-
MySQL的主从复制是异步且串行化的。
二、主从复制的基本原则
-
每个slave只有一个master
-
每个slave只能有一个唯一的服务器ID
-
每个master可以有多个slave
三、主从复制存在的最大问题:延时
那么,延时是如何产生的呢? Ans:当主库写压力大,且超过从库一个sql线程的承受范围,延时就产生了!如何避免这个问题呢?这里不做过多讨论。
四、主从复制的配置问题
4.1 主库和从库要求安装的MySQL版本号最好要一致(博文行文中使用MySQL版本号是5.7)
4.2 主库和从库的配置项都配置 在[mysqld]结点下,都采用小写。
以下所述的配置项所处环境皆为Linux环境。
MySQL主库所在机器IP : 192.168.199.209
MySQL从库所在机器IP : 192.168.199.205
4.3 修改MySQL的配置文件,完成master-slave的必要配置项
4.3.1 主库配置
-
【必要】配置主库唯一服务ID。如 server-id = 1
-
【必要】启用二进制日志,并指定文件名。如log-bin=mysqlbin,还要加上 log-bin-index=mysqlbin.index
4.3.2 从库配置
-
【必要】配置从库唯一服务ID。如server-id=2
4.4 由于主库和从库都修改了my.conf 配置文件,故都要重启MySQL。
-
service mysqld stop & service mysqld start
4.5 若使用到防火墙,需要关闭防火墙。
-
关闭防火墙执行 service iptables stop
4.6 主库所在机器创建账户并授权slave
4.6.1 GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.199.205' IDENTIFIED BY 'Root12/34’; -- 192.168.199.205 标识从库所在机器IP。Root12/34 标识从库root账户的登录密码。
4.6.2 flush privileges 4.6.3 查询master状态 show master status; 同时记录下File列和Position列的值。 4.6.4 停止操作MySQL数据库,以防主库的状态值发生变化。 |
4.7 从库所在机器配置需要复制的主库机器
4.7.1 CHANGE MASTER TO MASTER_HOST='192.168.199.209',MASTER_USER='root',MASTER_PASSWORD='Root12/34’, MASTER_LOG_FILE='mysqlbin.000001',MASTER_LOG_POS=604;
-- 192.168.199.209 标识主库所在机器的IP。 mysqlbin.000001 标识步骤4.6记录File列的值,604标识步骤4.6记录Position列的值。
4.7.2 启动从库复制功能 => start slave; 4.7.3 查看slave状态 show slave status; 若 Slave_IO_Running:Yes 和 Slave_SQL_Running:Yes。表明主从复制配置成功! 4.7.4 如何停止从库复制功能:stop slave; |
MySQL主从复制操作步骤到这儿告一段落!