docker搭建mysql多主多从环境

环境

搭建两主两从的环境,具体为:

主服务器从服务器
127.0.0.1:3007127.0.0.1:3009
127.0.0.1:3008127.0.0.1:3010

参数说明

master_host

主数据库的IP地址;
master_port主数据库的运行端口;
master_user在主数据库创建的用于同步数据的用户账号;
master_password在主数据库创建的用于同步数据的用户密码;
master_log_file指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry连接失败重试的时间间隔,单位为秒。

配置文件

master1(主节点)

my.cnf配置文件如下:

注意:需要给改my.cnf配置文件设置644权限,测试时给了777权限,总是报错

chmod 644 my.cnf
[mysqld]## 设置server_id,同一局域网中需要唯一
server_id=101 
#
### 指定不需要同步的数据库名称
binlog-ignore-db=mysql,information_schema,sys  
#
### 同步的数据库名称,如果不配置,表示同步所有的库
binlog-do-db=db1,db2
### 开启二进制日志功能
log-bin=master-bin  
### 设置二进制日志内存大小(事务)
binlog_cache_size=1M  
### 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates 
### 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
### 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
### 自动增长的步长,在设置主键自动增长时,防止多个主服务同步时主键冲突的问题,一般有几个主服务就设置为几
auto_increment_increment=2
### 设置自动增长的偏移量,要每个主服务设置的不一样,防止出现重复
auto_increment_offset=1

运行master1

docker run -p 3007:3306 --name master1 \
-v /mysql_more/master1/logs:/var/log/mysql \
-v /mysql_more/master1/data:/var/lib/mysql \
-v /mysql_more/master1/conf/my.cnf:/etc/mysql/my.cnf \
-v /mysql_more/master1/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.16

登录mysql 并获取同步参数的数据 

#登录mysqldocker exec -it master1 /bin/bashmysql -u<用户> -p<密码>#查看状态show master status;mysql> show master status;
+-------------------+----------+-------------------+------------------------------+-------------------+
| File              | Position | Binlog_Do_DB      | Binlog_Ignore_DB             | Executed_Gtid_Set |
+-------------------+----------+-------------------+------------------------------+-------------------+
| master-bin.000002 |      154 | db1,db2           | mysql,information_schema,sys |                   |
+-------------------+----------+-------------------+------------------------------+-------------------+

master2(主节点)

master2配置文件如下:

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=sys
## 同步的数据库名称,如果不配置,表示同步所有的库
binlog-do-db=plcgather,plcview
## 开启二进制日志功能
log-bin=master-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates 
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
### 自动增长的步长,在设置主键自动增长时,防止多个主服务同步时主键冲突的问题,一般有几个主服务就设置为几
auto_increment_increment=2
#### 设置自动增长的偏移量,要每个主服务设置的不一样,防止出现重复
auto_increment_offset=2

运行master2

docker run -p 3008:3306 --name master2 \
-v /mysql_more/master2/logs:/var/log/mysql \
-v /mysql_more/master2/data:/var/lib/mysql \
-v /mysql_more/master2/conf:/etc/mysql \
-v /mysql_more/master2/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.16

登录master2并获取同步参数数据

#登录mysqldocker exec -it master1 /bin/bashmysql -u<用户> -p<密码>#查看状态show master status;mysql> show master status;
+-------------------+----------+-------------------+------------------------------+-------------------+
| File              | Position | Binlog_Do_DB      | Binlog_Ignore_DB             | Executed_Gtid_Set |
+-------------------+----------+-------------------+------------------------------+-------------------+
| master-bin.000002 |      154 | db1,db2           | information_schema,mysql,sys |                   |

两个主节点相互同步数据

同步的前提

在master1 同步master2之前,需要在master2创建用于同步的账号,先创建同步账号逼并分配权限

CREATE USER 'syn2'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'syn2'@'%';

master1同步master2的数据

change master to master_host='127.0.0.1', master_user='syn2', master_password='123456', master_port=3008, master_log_file='master-bin.000002', master_log_pos=154, master_connect_retry=30;#开启同步
start slave;#关闭stop slave;

查看同步状态;

命令:

show slave status \G;
mysql> show slave status \G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.15.17Master_User: slaveMaster_Port: 3007Connect_Retry: 30Master_Log_File: master-bin.000002Read_Master_Log_Pos: 8058Relay_Log_File: 86bf90cfac1b-relay-bin.000003Relay_Log_Pos: 2106Relay_Master_Log_File: master-bin.000002Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 8058Relay_Log_Space: 8606Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 101Master_UUID: 690c90ba-9018-11ef-ae85-0242ac110004Master_Info_File: /var/lib/mysql/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 
1 row in set (0.00 sec)

master2同步master1的数据,同理

创建从节点并同步从节点的数据

slave1的my.cnf配置文件

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=103
## 指定不需要同步的数据库名称
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=sys
## 同步的数据库名称,如果不配置,表示同步所有的库
#### 同步的数据库名称,如果不配置,表示同步所有的库
binlog-do-db=db1,db2
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1

运行slave1

docker run -p 3009:3306 --name slave1 \
-v /mysql_more/slave1/logs:/var/log/mysql \
-v /mysql_more/slave1/data:/var/lib/mysql \
-v /mysql_more/slave1/conf:/etc/mysql \
-v /mysql_more/slave1/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.16

同步数据

change master to master_host='192.168.15.17', master_user='syn_master1_user', master_password='123456', master_port=syn_master1_pwd, master_log_file='master-bin.000002', master_log_pos=154, master_connect_retry=30;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456734.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分享】全国各省份农业-瓜果类面积(1993-2018年)

数据介绍 一级标题指标名称指标全称单位指标解释农业瓜果类面积农业-瓜果类面积-瓜果类面积千公顷根据第三次全国农业普查结果&#xff0c;对2007年-2017年农业生产有关数据进行了修正。农业西瓜面积农业-瓜果类面积-西瓜面积千公顷根据第三次全国农业普查结果&#xff0c;对2…

守护头顶安全——AI高空抛物监测,让悲剧不再重演

在城市的喧嚣中&#xff0c;我们享受着高楼林立带来的便捷与繁华&#xff0c;却往往忽视了那些隐藏在高空中的危险。近日&#xff0c;震惊全国的高空抛物死刑案件被最高院核准并执行。案件中被告人多次高空抛物的举动&#xff0c;夺去了无辜者的生命&#xff0c;也让自己付出了…

django5入门【03】新建一个hello界面

文章目录 1、前提条件⭐2、操作步骤总结3、实际操作示例 1、前提条件⭐ 将上一节创建的 Django 项目导入到 PyCharm 中。 2、操作步骤总结 &#xff08;1&#xff09;在 HelloDjango/HelloDjango 目录下&#xff0c;新建一个 views.py 文件。 &#xff08;2&#xff09;在 H…

解决运行jar错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序

报错 众所周知jdk8以上都没有Javafx java -jar target/myyscan-1.0-SNAPSHOT.jar 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序解决 https://gluonhq.com/products/javafx/ 去下载/javafx/到本地&#xff0c;选择自己的型号 然后记得指定路径 java --m…

arcgis中dem转模型导入3dmax

文末分享素材 效果 1、准备数据 (1)DEM (2)DOM 2、打开arcscene软件 3、加载DEM、DOM数据 4、设置DOM的高度为DEM

yub‘s Algorithm exercise Day13

用栈实现队列 link&#xff1a;232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 思路分析 首先理清楚栈和队列的异同. 队列是先进先出 栈先进后出【两者都能存储元素】 再来看peek()和poll(). 栈和队列都有peek() 可以称之为“瞄一眼”只是看一下当前栈顶/队头元…

基于vue框架的的高校消防设施管理系统06y99(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;设备分类,设备信息,维修人员,报修信息,维修进度,院系,消防知识,培训记录,培训信息,备件信息,备件申请,派发信息,采购信息 开题报告内容 基于Vue框架的高校消防设施管理系统开题报告 一、项目背景与意义 随着高校规模的不断扩大和校园建…

61 mysql 存储引擎之动态格式 MyISAM

前言 我们这里来看一下 MyISAM 存储引擎, 我们常见的那些 user, db, table_priv, proc 等等是基于 MyISAM 这是我们经常会提及的 两种持久化的存储引擎之一, 一是 MyISAM存储引擎, 另外一个是 InnoDB存储引擎 我们这里来看一下 MyISAM 中动态长度的数据表的相关处理 mysql…

图片怎么转换成word文档?5种方法快速实现转换

不管是在学校学习还是在工作中&#xff0c;我们经常需要将图片中的文字转换成Word文档&#xff0c;以便于编辑和保存&#xff0c;但是很多小伙伴不知道该怎样转换&#xff0c;今天&#xff0c;就为大家介绍5种高效的图片转Word文档的方法&#xff0c;一起来学习下吧。 方法一&a…

IDEA设置JDK

IDEA设置JDK的前提是我们电脑中要下载安装了JDK 下面有JDK下载安装的详细教程 2024最新版JDK安装-CSDN博客文章浏览阅读3.4k次&#xff0c;点赞33次&#xff0c;收藏38次。安装JDK以及配置环境变量&#xff0c;检查是否安装成功_jdkhttps://blog.csdn.net/m0_61840987/articl…

威胁 Windows 和 Linux 系统的新型跨平台勒索软件:Cicada3301

近年来&#xff0c;网络犯罪世界出现了新的、日益复杂的威胁&#xff0c;能够影响广泛的目标。 这一领域最令人担忧的新功能之一是Cicada3301勒索软件&#xff0c;最近由几位网络安全专家进行了分析。他们有机会采访了这一危险威胁背后的勒索软件团伙的成员。 Cicada3301的崛…

笔记本电脑充不进去电怎么回事 笔记本电脑充不上电解决

当你满心欢喜地准备使用笔记本电脑&#xff0c;却突然发现它充不进去电&#xff0c;这无疑会让人感到十分困扰。究竟是什么原因导致了这一问题的出现呢&#xff1f;别着急&#xff0c;让我们一起来探寻笔记本电脑充不进去电的奥秘&#xff0c;并找到相应的解决办法。 一、原因…

批量修改YOLO格式的标注类别

1.解决的问题 假如你有一个YOLO格式的数据集&#xff0c;标注类别为0&#xff0c;1&#xff0c;2&#xff0c;3四个类别标签。如果你想删除标签1&#xff0c;只保留0&#xff0c;2&#xff0c;3类别的标注信息&#xff0c;或者想将标签0和标签1合并为标签1&#xff0c;只剩下标…

【Vulnhub靶场】DC-2

DC-2 靶场下载地址&#xff1a;https://download.vulnhub.com/dc/DC-2.zip 目标 本机IP&#xff1a;192.168.118.128 靶机IP&#xff1a;192.168.118.0/24 信息收集 常规我使用nmap三扫描&#xff0c;扫存活主机、扫端口、扫服务 第一步探测到存活主机IP为&#xff1a;192.1…

虚拟机网络设置为桥接模式

1、打开VMware Workstation Pro&#xff0c;点击“虚拟机—设置”&#xff0c;进入虚拟机设置页面 2、点击“网络适配器”&#xff0c;网络连接选择桥接模式 3、点击“编辑—虚拟网络编辑器”&#xff0c;进入虚拟网络编辑器页面 4、选择桥接模式&#xff0c;并选择要桥接到的…

Docker 部署 EMQX 一分钟极速部署

部署 EMQX ( Docker ) [Step 1] : 拉取 EMQX 镜像 docker pull emqx/emqx:latest[Step 2] : 创建目录 ➡️ 创建容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器 # 创建目录 mkdir -p /data/emqx/{etc,data,log}# 创建容器 docker run -d --name emqx -p 1883:1883 -p 1808…

内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)

内网穿透&#xff1a;如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)-含详细原理配置说明介绍 前言 远程桌面协议(RDP, Remote Desktop Protocol)可用于远程桌面连接&#xff0c;Windows系统&#xff08;家庭版除外&#xff09;也是支持这种协议的&#xff0c;无需安装…

代理与 Hubstudio 集成

文章目录 一、什么是 Hubstudio?二、为什么是动态住宅代理&#xff1f;三、使用 Hubstudio 设置 Smartdaili 代理3.1. 与动态住宅代理的整合 3.2. 使用 Hubstudio 设置代理 总结 将 Smartdaili 动态住宅代理与 Hubstudio 反检测浏览器配对使用&#xff0c;即可轻松管理多个账户…

npm、yarn、pnpm的workspaces使用

示例项目中总会遇到npm的packages中出现的workspaces键值对&#xff0c;自己的项目中没接触过这个东西&#xff0c;到底是什么&#xff1f;怎么用的&#xff1f;简单研究记录一下&#xff1a; abbrev是一个npm包&#xff0c;提供缩写展开功能。‌ 当你定义一个缩写后&#xff0…

设计一个html+css+js的注册页,对于注册信息进行合法性检测

综合使用HTML、JavaScript和CSS进行注册页面设计&#xff0c;实现以下若干功能&#xff1a; 注意整个页面的色调和美观使用FramesetTable布局&#xff08;div也可&#xff09;对用户ID和用户名、口令不符合条件及时判断对口令不一致进行及时判断&#xff08;34的及时判断&#…