1. 简述
1.1. 复制的基本原理
slave 从 master 读取 binlog
文件来进行数据同步
【基本步骤】
① master 将改变记录到二进制文件(binary log)这些记录过程叫做二进制日志事件(binary log events)
② slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
③ slave 重做中继日志中的事件,将改变应用到自己的数据库中。MySQL 复制是异步且串行化的。
1.2. 复制基本原则
① 每个 slave 只有一个 master
② 每个 slave 只能有唯一的服务器 ID
③ 每个 master 可以有多个 salve
1.3. 复制的最大问题
发生多次 IO 可能存在延时问题。
2. 一主一从常见配置
配置前请保证主机和从机在同一局域网内,能够相互 ping 通。
【配置步骤】
① 主机和从机的 MySQL 版本保持一致;
② 主机和从机的配置都在 [mysqld]
节点下;
③ 主机修改配置文件
- 【必须】主服务器ID唯一:
server-id = 1
- 【必须】启用二进制文件:
log-bin=配置路径/mysqlbin
,例:D:/mysql/mysql5.5/data/mysqlbin
- 【可选】启动错误日志:
log-err=配置路径/mysqlerr
,例:D:/mysql/mysql5.5/data/mysqlbin
- 【可选】配置根目录:
basedir="自己的本地路径"
,例:basedir="D:/mysql/mysql5.5"
- 【可选】配置临时目录:
tmpdir="自己本地路径"
,例:tmpdir="D:/mysql/mysql5.5"
- 【可选】配置数据目录:
datadir="自己本地目录/Data"
,例:datadir="D:/mysql/mysql5.5/Data"
read-only=0
:主机读写都可以- 【可选】配置不需要复制的数据库:
binlog-ignore-db="xxx"
,例:binlog-ignore-db="mysql"
- 【可选】配置需要复制的数据库:
binlog-do-db="xxx"
,例:binlog-do-db="mysql_test"
④ 从机修改配置文件
- 【必须】从机服务器ID唯一:
server-id=3
- 【可选】启动二进制文件
⑤ 主机和从机修改配置文件后重启后台 MySQL 服务;
⑥ 主机和从机全部关闭防火墙;
- Linux 关闭防火墙命令:
service iptables stop
⑦ 在主机上建立账户并授权 slave;
- 创建账号命令:
GRANT REPLICATION SALVE ON *.* TO '备份账号'@'从机器数据库 IP'IDENTIFIED BY '密码'
- 查询 master 状态,并记录下 File 和 Position 的值。
show master state;
,执行完成命令后不要再操作主服务器 MySQL,防止主服务器状态值变化。
⑧ 在从机上配置需要复制的主机
- 从服务器配置 master 命令:
CHANGE MASTER TO MASTER_HOST='主机IP',MASTER_USER='创建用户名',MASTER_PASSWORD='创建的密码',MASTER_LOG_FILE='主机FILE名',MASTER_LOG_POS=主机post数字
- 启动从服务器复制功能:
start salve;
- 查看启动后的参数情况:
show salve status\G;
,当Slave_IO_Running:YES
和Slave_SQL_Running:YES
两个参数均为YES
时说明主从配置成功。
【注意】
- 当
Slave_IO_Running
和Slave_SQL_Running
两个参数不全是YES
时说明主从配置可能存在问题,会导致同步复制失败。- 若主从连接配置出现问题,重新配置时需要填入重新查询后新的主机 FILE 名和post数字
⑨ 检验主机新建数据库、数据表、插入记录、从机是否复制;
⑩ 停止从机复制
- 停止复制命令:
stop salve