基于 docker 的mysql 5.7 主主集群搭建

news2025/2/7 4:58:00

创建挂载目录和配置文件

  • 主节点1
mkdir -p /mysql_master_1/mysql/log
mkdir -p /mysql_master_1/mysql/data
mkdir -p /mysql_master_1/mysql/conf
vim /mysql_master_1/mysql/conf/my.cnf
[mysqld]
datadir=/var/lib/mysql #MySQL 数据库文件存放路径
server_id = 1 #指定数据库服务器的唯一标识。同一个复制组下的所有实例的server_id都必须唯一
log-bin= mysql-bin #开启MySQL的bin log日志功能,自定义的值将作为bin log的名称的前缀信息
binlog_do_db=testdb #设置需要同步的库(多个数据库设置可以写多行)
auto-increment-offset=1 #自增值,为了防止 id 重复,我们需要在配置文件中对两个数据库的自增长的 offset 设置为不同的值
auto-increment-increment=2 #漂移值,也就是步长(也就是你准备搞几个实例)
  • 主节点2
mkdir -p /mysql_master_2/mysql/log
mkdir -p /mysql_master_2/mysql/data
mkdir -p /mysql_master_2/mysql/conf
vim /mysql_master_2/mysql/conf/my.cnf
[mysqld]
datadir=/var/lib/mysql #MySQL 数据库文件存放路径
server_id = 2 #指定数据库服务器的唯一标识。同一个复制组下的所有实例的server_id都必须唯一
log-bin= mysql-bin #开启MySQL的bin log日志功能,自定义的值将作为bin log的名称的前缀信息
binlog_do_db=testdb #设置需要同步的库(多个数据库设置可以写多行)
auto-increment-offset=2 #自增值,为了防止 id 重复,我们需要在配置文件中对两个数据库的自增长的 offset 设置为不同的值
auto-increment-increment=2 #漂移值,也就是步长(也就是你准备搞几个实例)

Mysql 容器启动

  • 拉取镜像
docker pull mysql:5.7
  • 启动主节点1
docker run -p 33061:3306 --name mysql_master_1 \
-v /mysql_master_1/mysql/log:/var/log/mysql \
-v /mysql_master_1/mysql/data:/var/lib/mysql \
-v /mysql_master_1/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
  • 启动主节点2
docker run -p 33062:3306 --name mysql_master_2 \
-v /mysql_master_2/mysql/log:/var/log/mysql \
-v /mysql_master_2/mysql/data:/var/lib/mysql \
-v /mysql_master_2/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

Mysql主主复制设置

主节点1设置同步账号
  • 进入容器
docker exec -it mysql_master_1 /bin/bash
  • 连接mysql
mysql -uroot -p123456
  • 设置同步的专用帐号
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
  • 刷新权限
flush privileges;
  • 查看用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 
  • 查询master的状态,记录File、Position的值,File表示当前日志文件名称,Position表示当前日志的位置,用于主节点2日志同步
show master status;
主节点2设置同步账号
  • 进入容器
docker exec -it mysql_master_2 /bin/bash
  • 连接mysql
mysql -uroot -p123456
  • 设置同步的专用帐号
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
  • 刷新权限
flush privileges;
  • 查看用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 
  • 查询master的状态,记录File、Position的值,File表示当前日志文件名称,Position表示当前日志的位置,用于主节点1日志同步
show master status;
主节点1配置数据同步
  • 进入容器
docker exec -it mysql_master_1 /bin/bash
  • 连接mysql
mysql -uroot -p123456
  • 设置主节点1连接,master_host为主节点2容器IP(docker inspect mysql_master_2查看ip),master_user为主备账号,master_password为主备账号密码,master_log_file和master_log_pos为主节点2容器中,通过show master status查出来的值;
change master to master_host='172.18.0.3',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=600;
  • 启动同步
start slave; 
  • 查看从节点状态
show slave status\G;
主节点2配置数据同步
  • 进入容器
docker exec -it mysql_master_2 /bin/bash
  • 连接mysql
mysql -uroot -p123456
  • 设置主节点2连接,master_host为主节点1容器IP(docker inspect mysql_master_1查看ip),master_user为主备账号,master_password为主备账号密码,master_log_file和master_log_pos为主节点1容器中,通过show master status查出来的值;
change master to master_host='172.18.0.2',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=600;
  • 启动同步
start slave; 
  • 查看从节点状态
show slave status\G;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows版的docker如何使用宿主机的GPU

windows版的docker使用宿主机的GPU的命令 命令如下 docker run -it --nethost --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIEScompute,utility -e NVIDIA_VISIBLE_DEVICESall 镜像名效果 (transformer) rootdocker-desktop:/# python Python 3.9.0 (default, Nov 15 …

【C++】STL——list的使用

目录 💕1.带头双向链表List 💕2.list用法介绍 💕3.list的初始化 💕4.size函数与resize函数 💕5.empty函数 💕6.front函数与back函数 💕7.push_front,push_back,pop_front,pop_back函数…

6.PPT:魏女士-高新技术企业政策【19】

目录 NO1234​ NO567 ​ NO1234 创建“PPT.pptx”考生文件夹Word素材文档:选中对应颜色的文字→选中对应的样式单击右键按下匹配对应文字:应用所有对应颜色的文字开始→创建新的幻灯片→从大纲:考生文件夹:Word素材重置 开始→版…

MLA 架构

注:本文为 “MLA 架构” 相关文章合辑。 未整理去重。 DeepSeek 的 MLA 架构 原创 老彭坚持 产品经理修炼之道 2025 年 01 月 28 日 10:15 江西 DeepSeek 的 MLA(Multi-head Latent Attention,多头潜在注意力)架构 是一种优化…

7.抽象工厂(Abstract Factory)

抽象工厂与工厂方法极其类似,都是绕开new的,但是有些许不同。 动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 假设案例 假设…

旋钮屏设备物联网方案,ESP32-C3无线通信应用,助力设备智能化升级

在智能家居的浪潮中,旋钮屏以其独特的交互方式和便捷的操作体验,逐渐成为智能家电控制面板上的新宠儿。从智能冰箱、洗衣机到烤箱、空气炸锅等设备,旋钮屏的应用无处不在。 通过简单的旋转和按压操作,用户可以轻松调节温度、时间…

DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)

一、引言 1.1 研究背景与意义 在医疗领域的改革进程中, DRG/DIP 2.0 时代,医院成本管理的重要性愈发凸显。新的医保支付方式下,医院的收入不再单纯取决于医疗服务项目的数量,而是与病种的分组、费用标准以及成本控制紧密相关。这…

游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文

Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…

edu小程序挖掘严重支付逻辑漏洞

edu小程序挖掘严重支付逻辑漏洞 一、敏感信息泄露 打开购电小程序 这里需要输入姓名和学号,直接搜索引擎搜索即可得到,这就不用多说了,但是这里的手机号可以任意输入,只要用户没有绑定手机号这里我们输入自己的手机号抓包直接进…

安卓/鸿蒙模拟位置信息-Fake Location模拟虚拟定位打卡

一、软件下载安装 需要用到的软件就一个即:FakeLocation虚拟打卡定位 下载地址:FakeLocation虚拟打卡定位.app 二、手机端设置 打开手机设置-关于手机-版本信息-版本号,连续点击版本号直到出现已进入开发者模式字样,此时打开手…

(一)DeepSeek大模型安装部署-Ollama安装

大模型deepseek安装部署 (一)、安装ollama curl -fsSL https://ollama.com/install.sh | sh sudo systemctl start ollama sudo systemctl enable ollama sudo systemctl status ollama(二)、安装ollama遇到网络问题,请手动下载 ollama-linux-amd64.tgz curl -L …

LabVIEW2025中文版软件安装包、工具包、安装教程下载

下载链接:LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安装图文教程》 1、解压后,双击install.exe安装 2、选中“我接受上述2条许可协议”,点击下一步 3、点击下一步,安装NI Packa…

Spring MVC ONE

第一章:Java web的发展历史 一.Model I和Model II 1.Model I开发模式 Model1的开发模式是:JSPJavaBean的模式,它的核心是Jsp页面,在这个页面中,Jsp页面负责整合页面和JavaBean(业务逻辑)&…

【Git】一、初识Git Git基本操作详解

文章目录 学习目标Ⅰ. 初始 Git💥注意事项 Ⅱ. Git 安装Linux-centos安装Git Ⅲ. Git基本操作一、创建git本地仓库 -- git init二、配置 Git -- git config三、认识工作区、暂存区、版本库① 工作区② 暂存区③ 版本库④ 三者的关系 四、添加、提交更改、查看提交日…

SQL 秒变三线表 sql导出三线表

🎯SQL 秒变三线表,校园小助手超神啦 宝子们,搞数据分析、写论文的时候,从 SQL 里导出数据做成三线表是不是特别让人头疼😩 手动调整格式,不仅繁琐,还容易出错,分分钟把人逼疯&#…

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java,Scala,python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…

如何利用maven更优雅的打包

最近在客户现场部署项目,有两套环境,无法连接互联网,两套环境之间也是完全隔离,于是问题就来了,每次都要远程到公司电脑改完代码,打包,通过网盘(如果没有会员,上传下载慢…

图像分类与目标检测算法

在计算机视觉领域,图像分类与目标检测是两项至关重要的技术。它们通过对图像进行深入解析和理解,为各种应用场景提供了强大的支持。本文将详细介绍这两项技术的算法原理、技术进展以及当前的落地应用。 一、图像分类算法 图像分类是指将输入的图像划分为…

HAL库 Systick定时器 基于STM32F103EZT6 野火霸道,可做参考

目录 1.时钟选择(这里选择高速外部时钟) ​编辑 2.调试模式和时基源选择: 3.LED的GPIO配置 这里用板子的红灯PB5 4.工程配置 5.1ms的systick中断实现led闪烁 源码: 6.修改systick的中断频率 7.systick定时原理 SysTick 定时器的工作原理 中断触发机制 HAL_SYSTICK_Co…

Spring Boot常用注解深度解析:从入门到精通

今天,这篇文章带你将深入理解Spring Boot中30常用注解,通过代码示例和关系图,帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解: SpringBootApplication Confi…