准备
因为都是自己玩玩,所以肯定是建议大家安装虚拟机,本机安装mysql5.7.6,然后再用docker 安装mysql5.7.6。做主从同步,mysql的版本最好是同一个版本,这也是官网建议的。上面步骤准备完毕,就相当有两天mysql设备了
操作
1、编写好配置文件
主机的my.cnf
[mysqld]
port=3306
datadir=/usr/local/mysql/data
log_error=/var/mysql/log/error.log
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock
server_id=1 #server-id 服务器唯一标识
log-bin=master-mysql-bin #mysql用于同步的二进制文件
binlog_cache_size=1M #binlog缓存,提高记录bin-log的效率
binlog_format=mixed #主从复制的模式
log_slave_updates=0
#忽略同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
2、创建一个账号专门用来同步(主从机器都要做)
我这里是使用一个叫 slave的账号来完成同步的
create user 'slave'@'%' identified by 'root'; #先在mysql.user表里创建账号
grant all privileges on *.* to 'slave'@'%' with grant option; #然后给这个账号赋予可读可写的权限
FLUSH PRIVILEGES; #刷新权限列表,基本上每次修改完账号权限都要做这一步操作
3、在主机指定同步账号
grant replication slave, replication client on *.* to 'slave'@'%' with grant option;
FLUSH PRIVILEGES;
show master status;
记好下图的数据
然后重启主机和从机的MYSQL
4、从机配置主机的信息
change master to master_host='10.211.55.7', #配置主机IP
master_user='slave', #同步使用的账号
master_password='root', #密码
master_port=3306, #端口
master_log_file='master-mysql-bin.000001', #对应上图的file
master_log_pos=612, #对应上图的Position
master_connect_retry=30;
start slave;
show slave status;
如下图,就算从机的同步线程跑起来了
5、测试一下
在主机创建数据库,数据表,并插入数据,然后再去从机是否也有同样的数据
6、如何查看docker虚拟机的IP
docker inspect 容器名 | grep IP
下图就是docker的IP
7、主从同步的逻辑
最后引用别人的文章供参考借鉴
mysql主从复制的原理,写得很好,比很多复制粘贴的要好很多(手动滑稽)
https://zhuanlan.zhihu.com/p/50597960
同步模式是异步模式,半同步需要安装插件
https://www.cnblogs.com/EikiXu/p/9830764.html