docker搭建mysql,实现主从复制(一主两从)

发布时间:2023年12月20日

????????安装docker的步骤、使用命令就不写了,本文章是基于会使用docker、linux基本命令的基础上来写的。

开始步骤:

1. 拉取 mysql 镜像?

docker pull mysql

2. 启动容器并运行mysql

-- 启动一个mysql将数据挂载到本地目录:/Users/wangqinmin/docker/mysql/master_slave/master_data
docker run --name mysql_master_33066 -v /Users/wangqinmin/docker/mysql/master_slave/master_data:/var/lib/mysql -p 33066:3306 -e MYSQL_ROOT_PASSWORD=wangqinmin -d mysql:8.0.32

-- 启动一个mysql将数据挂载到本地目录:/Users/wangqinmin/docker/mysql/master_slave/slave_data1
docker run --name mysql_slave_33067 -v /Users/wangqinmin/docker/mysql/master_slave/slave_data1:/var/lib/mysql -p 33067:3306 -e MYSQL_ROOT_PASSWORD=wangqinmin -d mysql:8.0.32

-- 启动一个mysql将数据挂载到本地目录:/Users/wangqinmin/docker/mysql/master_slave/slave_data2
docker run --name mysql_slave_33068 -v /Users/wangqinmin/docker/mysql/master_slave/slave_data2:/var/lib/mysql -p 33068:3306 -e MYSQL_ROOT_PASSWORD=wangqinmin -d mysql:8.0.32

3. 从上面的挂载目录命名就可以看出,我准备将 33066 作为主数据库,33067和33068做为从数据库

? ? ?1. 进入33066主库 docker容器中

docker exec -it mysql_master_33066 /bin/bash

? ? ? a. 首先 mysql -uroot -p 进入mysql ,或者用 Navicat 工具连接

? ? ? b. 执行以下两条命令:

-- 创建名字为:copy_file_wangqinmin ,密码为:wangqinmin ,访问ip为任意ip的用户
CREATE USER 'copy_file_wangqinmin'@'%' IDENTIFIED BY 'wangqinmin';

-- 为名字是 copy_file_wangqinmin 的用户,只设置 REPLICATION SLAVE (复制数据的权限)
GRANT REPLICATION SLAVE ON *.* TO 'copy_file_wangqinmin'@'%';

? ? ? ? c.?在主库上执行以下命令,并记下 "File" 和 "Position" 的值:?

SHOW MASTER STATUS;

我这里获取到的数据为:

? ? ?2. 进入33067从库 docker容器中

docker exec -it mysql_slave_33067 /bin/bash

?

? ? ?3. 进入33068从库 docker容器中

docker exec -it mysql_slave_33068 /bin/bash

4. 主从复制就是在数据库上做配置的设置。

5. 要完成读写分离的话,我使用 sharding jdbc来完成。让主库完成 (增、删、改的操作),让从库的轮询访问来完成读的操作。

文章来源:https://blog.csdn.net/chuxin_mm/article/details/135104807
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。