基本原理
slave会从master读取binlog来进行数据同步
三步骤
- master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重做中继日志中的事件,将改变应用到自己的数据库中。Mysql复制是异步的且串行化的
基本原则
- 每个slave只有一个master
- 每个slave只能有唯一的服务器ID
- 每个master可以有多个salve
最大问题
延时
一主已从常见配置
mysql版本一致且后台以服务运行;
主从都配置在[mysqld]节点下,都是小写。
主机配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # 必须 服务器唯一ID server-id=1
# 必须 启用二进制日志 # 如:log-bin=D:/Mysql5.5/data/mysqlbin log-bin=自己的本地路径/mysqlbin
# 可选 启用错误日志 # 如:log-bin=D:/Mysql5.5/data/mysqlerr log-err=自己的本地路径/mysqlerr
# 可选 根目录 basedir="D:/Mysql5.5/"
# 可选 临时目录 tmpdir="D:/Mysql5.5/"
# 可选 数据目录 datadir="D:/Mysql5.5/data/"
# 设置读写权限(主机应是读写都可) read-only=0
# 可选 设置不要复制的数据库 binlog-ignore-db=mysql
# 可选 设置需要复制的数据库 binlog-do-db=需要复制的主数据库名字
|
从机配置文件
1 2 3
| # 必须 从服务器唯一ID
# 可选 启用二进制日志
|
主机授权从机访问
1 2 3 4 5 6 7 8 9
| # 授权 GRANT REPLICATION SLAVE ON 数据库名.表名 TO 'username'@'从库IP' IDENTIFIED BY 'password';
# 刷新权限 flush privileges;
# 查询主机状态, 记录下File和Position的值 # 每次配置都需要记录新的File和Position的值。 show master status;
|
从机设置访问账户
1 2 3 4 5 6 7 8 9 10
| # 设置访问主机的账户、数据起始位置等 CHANGE MASTER TO MASTER_HOST='主机IP', MASTER_USER='username', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysqlbin.具体数字', MASTER_LOG_POS=具体数值;
# 开启服务器复制功能 start slave;
# 查询从机状态。以下两个参数都是Yes说明配置成功 # Slave_IO_Running:Yes # Slave_SQL_Running:Yes show slave status\G
|
停止从机复制服务