同步机制
Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。
环境搭建
本文使用docker-machine
创建了2个docker虚拟机,首先需要确保本机已经安装了docker和docker-machine的环境
- 创建2个docker-machine的vm机器
docker-machine create --driver virtualbox master1
docker-machine create --driver virtualbox slave1
这里master主服务机器的ip为192.168.99.101,slave从服务机器的ip为192.168.99.100
-
配置主服务
- 连接master主机器
docker-machine ssh master1
- 主服务设置
mkdir mysql cd mysql mkdir conf cd conf touch my.cnf vi my.cnf
- 主服务my.cnf配置
[mysqld] server_id=1 log-bin=mysql-bin binlog-do-db=test
- 创建用来同步的用户和权限
create user 'mytest'@'%' identified by '123456'; grant replication slave on *.* to 'mytest'@'%' identified by '123456'; flush privileges; show master status;
-
复制从服务
- 连接slave从机器
docker-machine ssh slave1
- 从服务设置
mkdir mysql cd mysql mkdir conf cd conf touch my.cnf vi my.cnf
- 从服务my.cnf配置
[mysqld] server_id=1 log-bin=mysql-bin replicate-do-db=test
- 主从设置
change master to master_host='192.168.99.101',master_user='mytest',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=1032;
启动从服务:
start slave;
查看从服务状态:
show slave status \G;
这里
Slave_IO_Running
和Slave_SQL_Running
都是yes就ok了
测试
此时我们在master主服务上面修改test库的任何数据,slave上都会同步过来
可以看到,所有的举动都是一毛一样