当前位置: 首页 > news >正文

Docker 容器 mysql 配置主从

1、前提条件

  • 集群的条件下    服务器 172.16.11.195 13316:3306   服务器 172.16.11.196 13317:3306 
  • 配置好主数据库和从数据

2、配置主从数据库

2.1使用portainer 来管理容器

建立数据库密码

新增配置文件

# mysql-master.cnf
[mysqld]
server_id=110
log-bin=mysql-binrelay_log=mysql-relay-bin
log_replica_updates=on
secure_file_priv=/var/lib/mysql
# mysql-slave.cnf
[mysqld]
server_id=111
log-bin=mysql-bin
slave-skip-errors=1032read_only=1
relay_log=mysql-relay-bin
log_replica_updates=on
secure_file_priv=/var/lib/mysql

# eip-mysql-cluster
version: '3.7'
services:eip-mysql-master:image: harbor.hkc.cn/jpaas/mysql:8privileged: truehostname: eip-mysql-master    container_name: eip_mysql_masternetworks:- golbal-service-jpaas-netports:- 13316:3306volumes:- /etc/localtime:/etc/localtime- mysql-master-data:/var/lib/mysqlconfigs:- source: mysql-master.cnftarget: /etc/mysql/my.cnfcommand:--default-authentication-plugin=mysql_native_password--max_connections=6000--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1--default-time-zone='+8:00'--expire-logs-days=7--sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"deploy:replicas: 1placement:constraints: [node.labels.zone == dbmaster]restart_policy:condition: on-failuresecrets:- mysql-secrtenvironment:- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-secrteip-mysql-slave:image: harbor.hkc.cn/jpaas/mysql:8privileged: truehostname: eip-mysql-slave  container_name: eip_mysql_slavenetworks:- golbal-service-jpaas-netports:- 13317:3306volumes:- mysql-slave-data:/var/lib/mysql- /etc/localtime:/etc/localtimeconfigs:- source: mysql-slave.cnftarget: /etc/mysql/my.cnfcommand:--default-authentication-plugin=mysql_native_password--max_connections=6000--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1--default-time-zone='+8:00'--expire-logs-days=7--sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"deploy:replicas: 1placement:constraints: [node.labels.zone == dbslave]restart_policy:condition: on-failuresecrets:- mysql-secrtenvironment:- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-secrtsecrets:mysql-secrt:external: trueconfigs:mysql-master.cnf:external: truemysql-slave.cnf:external: truevolumes:mysql-master-data:mysql-slave-data:networks:golbal-service-jpaas-net:external: true

3、配置主从同步

3.1 配置主节点访问账号

进入容器里面的mysql

# 登录mysql 
mysql -uroot -ptryyiuer 

创建访问账户

## 创建从节点的访问账号
CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';## 查看用户
SELECT User, Host FROM mysql.user;## 查看用户权限
SHOW GRANTS FOR 'slave'@'%';## 查看master状态
show master status; 

这里记住 File   和 Position 这里属性的值。

退出mysql 执行 exit即可;

退出容器执行 exit即可;

3.2 配置从节点同步

如上一样,进入到从节点容器的mysql中。执行以下指令

# MASTER_HOST是互通的IP地址,如果是容器管理,加入同一个网络,使用容器的服务名称
# 端口默认3306  可以加上 Master_Port=3306  可以改成自己mysql 配置的端口
CHANGE MASTER TO
MASTER_HOST='eip-mysql-master',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='ON.000004',
MASTER_LOG_POS=7639;## 执行完成后,开启同步
start slave;## 查看状态(不需要分号)
SHOW SLAVE STATUS\G

两个关键进程:下面两个参数都是Yes,则说明主从配置成功! 

4、测试

5、可能会出现的问题

4.1、数据库结构一致

  • 配置之前,一定要保证两个数据的结构一样

4.2、网络原因

  • 是否关闭防火墙。
# 查看防火墙状态
systemctl status firewalld.service# 关闭防火墙
systemctl stop firewalld.service# 开启防火墙
systemctl start firewalld.service# 防火墙随系统开启启动
systemctl enable firewalld.service# 执行开机禁用防火墙自启命令
systemctl disable firewalld.service
  • ping ip 是否连通。
ping 172.16.11.195

4.3、实在不行就:重置从服务器(重新配置)

# 如果上述方法都无法解决问题,或者从服务器的复制状态变得混乱,你可能需要重置从服务器的复制状态:
STOP SLAVE;
RESET SLAVE ALL;
http://www.lryc.cn/news/366451.html

相关文章:

  • 64. UE5 RPG 创建新的双手攻击怪物
  • (求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。例如:整数是 932,各位数字之和为14。
  • 大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)
  • 【因果推断python】24_倾向得分2
  • 部件库(Widget Factory)
  • tomcat启动闪退解决办法
  • OpenStack云平台管理
  • 内部类(超详细)
  • Android的SELinux详解
  • R语言中的列表list
  • 10、有条件提前退出关键字Return From Keyword If【robot framework】
  • JAVA开发的一套(智造制造领航者云MES系统成品源码)saas云MES制造执行系统源码,全套源码,支持二次开发
  • 探究JSON和XML:两种常见的数据交换格式之异同
  • SQL查询的优化方案
  • 【C语言题解】1、写一个宏来计算结构体中某成员相对于首地址的偏移量;2、写一个宏来交换一个整数二进制的奇偶位
  • LabVIEW阀性能试验台测控系统
  • Flutter 中的 LayoutBuilder 小部件:全面指南
  • webman中创建udp服务
  • Vue 学习笔记 总结
  • 云计算导论(3)---分布式文件系统
  • 后端进阶-分库分表
  • Apple开发者应用商店(AppStore)描述文件及ADHOC描述文件生成
  • 【Git】修改设置 git 的 username、email
  • python脚本打包为exe并在服务器上设置定时执行
  • STM32-呼吸灯仿真
  • 【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b
  • Spring Security系列之Handler
  • Thinkphp使用Elasticsearch查询
  • 开源日志分析平台ELK实战应用
  • css基本操作及使用