mysql的主从复制

该文是基于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

创建具备复制权限的账号

mysql的主从复制_第1张图片

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以上版本的要注意,我也是因为这个没改导致链接不上。

官网有一个重要提示,但是我远测链接是正常的,以为是没问题。 

mysql的主从复制_第2张图片

 

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

mysql的主从复制_第3张图片

进入之后就需要对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;

 

mysql的主从复制_第4张图片

mysql的主从复制_第5张图片

 

以上由于隔天测试的,用了2个账户。 

 

mysql的主从复制_第6张图片

采用的是二进制的文件复制,官网还有全局事物复制方法,主服务器主要是把操作模式复制到从服务器中,以前的数据并不会过去。

 

 

你可能感兴趣的:(Java)