docker 配置mysql(主从篇)

  1、创建MySQL

        1.1 本地创建mysql相关文件 data, conf

docker cp docker_mysql:/etc/my.cnf ./conf/

        结构如图:

        

         1.2 创建mysql容器

 docker run -itd --name docker_mysql_3312 --privileged=true -p 3312:3306 -v /usr/local/software/mysql/3312/data:/var/lib/mysql -v /usr/local/software/mysql/3312/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/software/mysql/3312/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=1234 mysql

        创建成功后data文件内容

        创建主从设备中的从设备就是再创n个端口不同的mysql即可,如:

2、配置主从设备

        2.1 修改配置文件

        修改conf文件夹中的my.conf文件(如果权限不足无法更改则使用chmod来修改文件权限)

        主设备:

                从设备:

                 重启docker

        2.2 配置主设备

        进入主设备        

          在主设备中配置从设备权限

         查看master状态

        查看master IPAddress

        2.3 配置从设备

        操作执行顺序:关闭从设备中的从设备服务,重置该服务,然后设置修改该服务内对主服务的设置为主设备的信息,然后启动从设备服务。

 查看从服务状态:

        

 3. 总结

1. 进master(3306)  docker  exec -it mysql_3306 bash
2. 显示master状态:   show master status;    ---记住 mysql-bin , position
3. 退出容器
4. 进入slave(3310)  docker  exec -it mysql_3310 bash
5. mysql -uroot -p123
6. stop slave;
7. reset slave;
8. change master to master_host='172.17.0.2',master_user='slave',master_password='1234',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=606;(master_host为master的IPAddress地址,slave为债之前在master创建的 用户名,密码为对应的密码, MASTER_LOG_FILE为master中的file,MASTER_LOG_POS为master中的position)
9. start slave;
10. show slave status \G:

PS:

        当出现问题时,查看报错信息,针对报错信息解决问题,比如:

跟随报错信息,进入performance_schema数据库,查询表replication_applier_status_by_worker,从而得到具体的报错内容,然后解决。

进而针对问题解决问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置 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值>` 为实际的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值