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

devtools/2025/2/8 19:21:39/

创建挂载目录和配置文件

  • 主节点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 -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 -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 -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 -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.ppmy.cn/devtools/157156.html

相关文章

基于DeepSeek API和VSCode的自动化网页生成流程

1.创建API key 访问官网DeepSeek ,点击API开放平台。 在开放平台界面左侧点击API keys,进入API keys管理界面,点击创建API key按钮创建API key,名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…

Jenkins 触发构建的几种常见方式

为了实现自动化构建,Jenkins 提供了多种触发构建的方式。这些触发方式可以根据开发团队的需求来选择,使得构建过程更加灵活和高效。 1. 手动触发构建 手动触发构建是最简单的一种方式,通常用于开发人员或管理员手动启动构建任务。 步骤: 登录 Jenkins 后,进入某个项目(…

【图像处理】-不同的图像存储格式

看到了前面的基础操作介绍,我们再了解一下不同图像的存储格式,更有利于我们理解图像处理的原理。 图像存储格式详细介绍 1. BMP(BitMap Picture) 发展历史 BMP是一种位图文件格式,由微软公司于1986年推出。它最初是…

用deepseek制作我的第一个长视频---使用AI解决尝试新领域没有经验拖延的问题!

(由于技术原因,联网搜索暂不可用) 制作一个高质量的Vlog或生活记录长视频,即使零基础也能通过系统规划实现!以下是为你定制的「从零到成品」全流程指南,结合叙事逻辑、剪辑技巧和效率工具,帮你…

快速优雅解决webview_flutter不能Safari调试的问题

这个问题,网上一搜,又是让你去检索WKWebView,找到FWFWebViewHostApi.m文件,然后再改 iOS 的代码, 加一行 self.inspectable YES; 我们开发Flutter项目,尽量还是不要去改插件里的代码,好了不费…

朝天椒USB服务器在湖南电力的应用案例

湖南电力作为能源行业的领军企业,在日常运营中需要处理大量的财务和资金交易。随着业务的不断增长,银企直连成为其提高资金流转效率和安全性的重要手段。然而,在银企直连场景中,银行U盾的网络连接问题一直是困扰企业的技术难题。为…

【数据结构】循环链表

循环链表 单链表局限性单向循环链表判断链表是否有环思路code 找到链表入口思路代码结构与逻辑 code 单链表局限性 单链表作为一种基本的数据结构,虽然在很多场景下都非常有用,但它也存在一些局限性: 单向访问:由于每个节点仅包含…

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行(下载) 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…