Docker 搭建 Mysql8 数据库的主从同步
2021/7/17 19:11:16
本文主要是介绍Docker 搭建 Mysql8 数据库的主从同步,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一,mysql-master创建,并创建从库连接用户'testSlave'@'%'
#--name指定运行之后的容器的名称为mysql-master; #--privileged指定了当前容器是否真正的具有root权限,所谓的root权限是指具有宿主机的root权限,而不仅仅只是在容器内部有root权限; #-v指定了容器中指定目录挂载到宿主机上的某个目录,这样做的目的在于防止容器中配置的数据丢失,因为docker容器在重启之后是不会保留前一次在其内部运行的相关数据的; #-p表示宿主机上的某个端口映射到docker容器内的某个端口,这里也就是将宿主机的3306端口映射到容器内部的3306端口; #-e表示指定当前容器运行的环境变量,该变量一般在容器内部程序的配置文件中使用,而在外部运行容器指定该参数。这里的MYSQL_ROOT_PASSWORD表示容器内部的MySQL的启动密码; #-d参数指定了当前容器是在后台运行。 #mysql:latest mysql最新版本, docker run --name mysql-master --privileged=true -v /home/mysql/master-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Root2021 -d mysql:latest docker ps docker exec -it mysql-master /bin/bash mysql -uroot -pRoot2021 create user 'testSlave'@'%' identified by 'Root2021'; #这里是我之前创建过一次,所以出现用户已经存在,删掉重新创建就好了 drop user'testSlave'@'%'; create user 'testSlave'@'%' identified by 'Root2021'; #这里需要指定 mysql_native_password 不然文章结尾有踩坑经历 alter user 'testSlave'@'%' identified with mysql_native_password by 'Root2021'; flush privileges;
二,查看master的binlog与Position 。
#接着在mysql-master命令行下执行 show master status;
这里不知道这两个值的含义,就顺便扒了以下主从复制的原理,来源 : 主从复制的原理
三,创建从库
docker run --name mysql-slave --privileged=true -v /home/mysql/slave-data:/var/lib/mysql -p 3307:3306 --link mysql-master:master -e MYSQL_ROOT_PASSWORD=Root2021 -d mysql:latest docker ps docker exec -it mysql-slave /bin/bash mysql -uroot -pRoot2021 #这里的master_log_file 与 master_log_pos 就是之前查看的master的值 change master to master_host='master', master_user='testSlave', master_password='Root2021', master_port=3306, master_log_file='binlog.000003', master_log_pos=1112, master_connect_retry=30; start slave; #这里也是因为我之前搭建过一次,所以重新拉起需要reset reset slave;
#查看从库连接状态 show slave status\G;
不出意外的话应该是下面这种情况
error : The slave I/O thread stops because master and slave have equal MySQL server ids
四,配置主从的server_id 与 server_uuid,注意需要不一致
分别查看主从库的server_id 与 server_uuid,左边从库,右边主库,发现server_id一致
show variables like 'server_id'; show variables like '%server_uuid%';
修改从库server_id
set global server_id=2;
再次查看连接状态
五,赋予'testSalve'@'%'账户复制的权限
进入主库
docker exec -it mysql-master /bin/bash mysql -uroot -pRoot2021 # ★★★★★记得切到mysql数据库★★★★★ use mysql; show grants for 'testSlave'@'%'; grant replication slave on *.* to 'testSlave'@'%'; show grants for 'testSlave'@'%';
修改完成后进入从库查看连接情况
docker exec -it mysql-slave /bin/bash mysql -uroot -pRoot2021 show slave status\G;
六,测试主从同步,
左边主库操作,右边从库查看
七,Authentication plugin 'caching_sha2_password' report error
主库'testSalve'@'%'的密码加密方式不对,需要修改
这篇关于Docker 搭建 Mysql8 数据库的主从同步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程