一 原理
slave会从master读取binlog来进行数据同步,slave可以有多个。
1.大概流程
1、 master将数据更新日志记录到二进制日志(binarylog)中,这些记录过程叫做二进制日志事件,binarylogevents;
2、 slave将master的binaryogevents拷贝到自己的中继日志(relaylog)中;
3、 slave还原中继日志中的事件,将数据更新应用到自己的数据库中(该过程是串行化的);
2.原则和环境要求
1、 每个slaver只有一个master;
2、 每个slaver只能有一个唯一的服务器ID;
3、 master可以有多个salver;
4、 mysql的版本要一致;
5、 网络畅通;
二 流程
1.相关配置文件介绍
# 服务唯一id
server-id = 1
# 启用二进制日志
log-bin = 指定路径/xxxx/mysqlbin(文件)
# 启用错误日志
log-err = 指定路径/xxxx/mysqlerr(文件)
# mysql的根目录
basedir = mysql的根目录
# 临时目录
tmpdir = 临时目录
# 数据目录
datadir = 数据目录
# 可读写
read-only = 0
# 配置忽略复制的数据库
binlog-ignore-db =
# 配置需要复制的数据库
binlog-do-db =
其中只有server-id是必须的,master多一个log-bin配置,其他都可以省略。
2.具体流程
1、 配置master的配置文件;
# master服务唯一id
server-id = 1
# 启用二进制日志
log-bin = 指定路径/xxxx/mysqlbin(文件)
# 启用错误日志
log-err = 指定路径/xxxx/mysqlerr(文件)
1、 配置master的配置文件;
# slaver服务唯一id
server-id = 2
1、 修改配置文件后重启生效;
2、 在master上创建账户用于数据复制使用;
# 创建用户并授权
grant replication slave on *.* to '用户名'@'slaveip/ip段' identified by '密码';
# 刷新权限
flush privileges ;
1、 查询master的状态;
show master status ;
记录下此时file的文件名和position的值
1、 在slave上配置从哪里复制数据;
change master to master_host ='master主机ip',
master_user='主机开放的用户名',master_password='主机账户的密码',
master_log_file='哪个二进制文件',master_log_pos=二进制文件的指针数值;
1、 启动slaver的复制功能;
# 启动同步功能
start slave;
# 查看同步状态
show slave status ;
当下面两个值为yes的时候才代表配置成功。
slave_io_running : yes
slave_sql_running: yes
1、 停止slaver的复制功能;
stop slave;