基本原理
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]节点下,都是小写。
主机配置文件
# 必须 服务器唯一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=需要复制的主数据库名字
从机配置文件
# 必须 从服务器唯一ID
# 可选 启用二进制日志
主机授权从机访问
# 授权
GRANT REPLICATION SLAVE ON 数据库名.表名 TO 'username'@'从库IP' IDENTIFIED BY 'password';
# 刷新权限
flush privileges;
# 查询主机状态, 记录下File和Position的值
# 每次配置都需要记录新的File和Position的值。
show master status;
从机设置访问账户
# 设置访问主机的账户、数据起始位置等
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
停止从机复制服务
stop slave;