docker运行mysql主从备份,读写分离

1)从Docker官方下拉MySQL的image
打开https://hub.docker.com/
搜索mysql
这里写图片描述
在docker中运行 默认tag为latest
docker pull mysql/mysql-server
也可以指定mysql版本
docker pull mysql/mysql-server:5.7

2)设置目录
为了使MySql的数据保持在宿主机上,我们先建立几个目录。
mkdir -pv /mysql/data
建立主服务器的配置目录
mkdir -pv /mysql/101
建立从服务器的配置目录
mkdir -pv /mysql/102

3)设置主从服务器配置
vi /mysql/101/101.cnf

[mysqld]
log-bin=mysql-bin
server-id=101

vi /mysql/102/102.cnf

[mysqld]
log-bin=mysql-bin
server-id=102

3)创建主从服务器容器

docker create --name mysqlsrv101 -v /home/docker/mysql/data/mysql101:/var/lib/mysql -v /home/docker/mysql/101:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7
docker create --name mysqlsrv102 -v /home/docker/mysql/data/mysql102:/var/lib/mysql -v /home/docker/mysql/102:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3316:3306 mysql:5.7

启动容器
docker start mysqlsrv101
docker start mysqlsrv102
这里写图片描述

4)登录主服务器的mysql,查询master的状态
这里写图片描述

主库创建用户

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';

5)登录从服务器的mysql,设置与主服务器相关的配置参数

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
change master to master_host='192.168.56.101',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=2500;

master_host为docker的地址不能写127.0.0.1
master_user是在主库创建的用户
master_log_pos是主库show master status;查询出的Position

启动服务

start slave;

查看服务状态

show slave status;

这里写图片描述
Waiting for master to send event 就是成功了
Connecting to master 多半是连接不通

之后主库的修改都能同步到从库了

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要配置 MySQL 主从复制在 Docker 中,你可以按照以下步骤进行操作: 1. 首先,创建一个用于存储 MySQL 数据的文件夹。例如,创建一个名为 `mysql-data` 的文件夹: ``` mkdir mysql-data ``` 2. 创建一个名为 `mysql-master` 的容器,并启动一个 MySQL 实例作为主数据库: ``` docker run -d --name mysql-master -v /path/to/mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<root密码> -e MYSQL_DATABASE=<数据库名> mysql:latest ``` 3. 创建一个名为 `mysql-slave` 的容器,并连接到主数据库的网络中。确保将 `<master_IP>` 替换为主数据库容器的 IP 地址: ``` docker run -d --name mysql-slave --network container:mysql-master -e MYSQL_ROOT_PASSWORD=<root密码> -e MYSQL_DATABASE=<数据库名> mysql:latest ``` 4. 检查容器是否正常运行: ``` docker ps ``` 5. 在主数据库中进行配置。进入 `mysql-master` 容器内部: ``` docker exec -it mysql-master bash ``` 6. 进入 MySQL 命令行: ``` mysql -uroot -p<root密码> ``` 7. 在 MySQL 命令行中执行以下命令来配置主数据库: ``` GRANT REPLICATION SLAVE ON *.* TO '<用户名>'@'<从节点IP>' IDENTIFIED BY '<密码>'; FLUSH PRIVILEGES; SHOW MASTER STATUS; ``` 8. 记下 `SHOW MASTER STATUS;` 命令的输出内容,包括 `File` 和 `Position` 的值。 9. 在从数据库中进行配置。进入 `mysql-slave` 容器内部: ``` docker exec -it mysql-slave bash ``` 10. 进入 MySQL 命令行: ``` mysql -uroot -p<root密码> ``` 11. 在 MySQL 命令行中执行以下命令来配置从数据库: ``` CHANGE MASTER TO MASTER_HOST='<主节点IP>', MASTER_USER='<用户名>', MASTER_PASSWORD='<密码>', MASTER_LOG_FILE='<主节点的File值>', MASTER_LOG_POS=<主节点的Position值>; START SLAVE; ``` 12. 检查主从复制是否正常运行: ``` SHOW SLAVE STATUS\G ``` 完成上述步骤后,你应该已经成功配置了 Docker 中的 MySQL 主从复制。请确保在命令中替换 `<root密码>`、`<数据库名>`、`<用户名>`、`<从节点IP>`、`<密码>`、`<主节点IP>`、`<主节点的File值>` 和 `<主节点的Position值>` 为实际的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值