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