该文是基于docker的mysql的主从复制内容 ,mysql采用的是最新的8.0。
1.准备mysql镜像
是最新的镜像 ,数据库版是8.0,官网说比以前的要快2倍。
2.master mysql容器
docker run -p 3307:3306 --name mysqlmaster --privileged=true -v /myconf/mysql/master/master.cnf:/etc/mysql/conf.d/my.cnf -v /var/lib/dockermysql/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 6a834f03bd02
因为本地已经安装过mysql ,所以直接用了3307的端口。
进入容器,再进去mysql查看sever_id,和master status
创建具备复制权限的账号
create user pig@'%' identified by '123456';
grant all privileges on *.* to pig@'%' with grant option;
flush privileges;
ALTER USER 'pig'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
记住最后修改密码验证的一定要改 ,mysql8.0以上版本的要注意,我也是因为这个没改导致链接不上。
官网有一个重要提示,但是我远测链接是正常的,以为是没问题。
3.slave mysql容器
docker run -p 3308:3306 --name mysqlslave --privileged=true -v /myconf/mysql/slave/slave.cnf:/etc/mysql/conf.d/my.cnf -v /var/lib/dockermysql/slave:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 6a834f03bd02
同样进入容器查看MySQL 看sever_id
进入之后就需要对master进行链接
change master to
master_host='172.17.0.5',
master_port=3306,
master_user='zachary',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=850;
以上由于隔天测试的,用了2个账户。
采用的是二进制的文件复制,官网还有全局事物复制方法,主服务器主要是把操作模式复制到从服务器中,以前的数据并不会过去。