Docker-Compose实现MySQL之主从复制
1. 主服务器(IP:192.168.186.77)
1.1 docker-compose.yml
services:mysql-master:image: mysql:latest # 使用最新版本的 MySQL 镜像container_name: mysql-master # 容器的名称environment:MYSQL_ROOT_PASSWORD: 123456 # MySQL root 用户的密码MYSQL_DATABASE: masterdb # 初始化时创建的数据库MYSQL_USER: master # 初始化时创建的用户MYSQL_PASSWORD: 123456 # 初始化时创建的用户密码ports:- "3306:3306" # 端口映射,将容器内的 3306 端口映射到主机的 3306 端口volumes:- mysql-master-data:/var/lib/mysql # 数据卷映射,用于数据持久化command: --server-id=1 --log-bin=mysql-bin --binlog-format=ROW # MySQL 的启动命令,配置二进制日志和服务器 IDvolumes:mysql-master-data: # 定义数据卷,用于存储 MySQL 数据文件,保证数据库数据的持久性
1.2. 启动命令
docker-compose up -d
1.3 测试连接

注:可以使用初始化用户进行测试连接,本文为了方便演示直接连接root用户。
2. 从服务器(IP:192.168.186.216)
2.1 docker-compose.yml
services:mysql-slave:image: mysql:latest # 使用最新版本的 MySQL 镜像container_name: mysql-slave # 容器的名称environment:MYSQL_ROOT_PASSWORD: 123456 # MySQL root 用户的密码MYSQL_DATABASE: slavedb # 初始化时创建的数据库MYSQL_USER: slave # 初始化时创建的用户MYSQL_PASSWORD: 123456 # 初始化时创建的用户密码ports:- "3306:3306" # 端口映射,将容器内的 3306 端口映射到主机的 3306 端口volumes:- mysql-slave-data:/var/lib/mysql # 数据卷映射,用于数据持久化command: --server-id=2 --log-bin=mysql-bin --binlog-format=ROW # MySQL 的启动命令,配置二进制日志和服务器 IDvolumes:mysql-slave-data: # 定义数据卷,用于存储 MySQL 数据文件,保证数据库数据的持久性
2.2 启动命令
docker-compose up -d
2.3 测试连接

3. 配置主从复制
3.1 在主服务器上,为从服务器创建一个具有复制权限的用户
CREATE USER 'master_slave'@'%' IDENTIFIED BY '123456' REQUIRE SSL;
GRANT REPLICATION SLAVE ON *.* TO 'master_slave'@'%';
FLUSH PRIVILEGES;
运行结果:
> CREATE USER 'master_slave'@'%' IDENTIFIED BY '123456' REQUIRE SSL
[2024-07-23 17:34:23] 在 20 ms 内完成
> GRANT REPLICATION SLAVE ON *.* TO 'master_slave'@'%'
[2024-07-23 17:34:23] 在 26 ms 内完成
> FLUSH PRIVILEGES
[2024-07-23 17:34:23] 在 21 ms 内完成
3.2 获取主服务器的二进制日志位置信息
SHOW MASTER STATUS;

注:记下File和Position的值,从服务器需要配置。
3.3 在从服务器上,配置复制指向主服务器
CHANGE MASTER TOMASTER_HOST ='192.168.186.77', # 主服务器的 IP 地址MASTER_USER ='master_slave', # 主服务器上配置的复制用户MASTER_PASSWORD ='123456', # 复制用户的密码MASTER_LOG_FILE ='mysql-bin.000004', # 主服务器的日志文件名MASTER_LOG_POS =4494, # 日志文件的位置MASTER_SSL=1;
运行结果:
> CHANGE MASTER TO
MASTER_HOST ='192.168.186.77', # 主服务器的 IP 地址
MASTER_USER ='master_slave', # 主服务器上配置的复制用户
MASTER_PASSWORD ='123456', # 复制用户的密码
MASTER_LOG_FILE ='mysql-bin.000004', # 主服务器的日志文件名
MASTER_LOG_POS =4494, # 日志文件的位置
MASTER_SSL=1
[2024-07-23 17:38:19] [HY000][1287] 'CHANGE MASTER' is deprecated and will be removed in a future release. Please use CHANGE REPLICATION SOURCE instead
[2024-07-23 17:38:19] [HY000][1287] 'MASTER_HOST' is deprecated and will be removed in a future release. Please use SOURCE_HOST instead
[2024-07-23 17:38:19] [HY000][1287] 'MASTER_USER' is deprecated and will be removed in a future release. Please use SOURCE_USER instead
[2024-07-23 17:38:19] [HY000][1287] 'MASTER_PASSWORD' is deprecated and will be removed in a future release. Please use SOURCE_PASSWORD instead
[2024-07-23 17:38:19] [HY000][1287] 'MASTER_LOG_FILE' is deprecated and will be removed in a future release. Please use SOURCE_LOG_FILE instead
[2024-07-23 17:38:19] [HY000][1287] 'MASTER_LOG_POS' is deprecated and will be removed in a future release. Please use SOURCE_LOG_POS instead
[2024-07-23 17:38:19] [HY000][1287] 'MASTER_SSL' is deprecated and will be removed in a future release. Please use SOURCE_SSL instead
[2024-07-23 17:38:19] [HY000][1760] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
[2024-07-23 17:38:19] 在 73 ms 内完成
3.4 启动从服务器上的复制过程
START SLAVE;
运行结果:
> START SLAVE
[2024-07-23 17:39:28] [HY000][1287] 'START SLAVE' is deprecated and will be removed in a future release. Please use START REPLICA instead
[2024-07-23 17:39:28] 在 71 ms 内完成
3.5 检查从服务器的复制状态
SHOW SLAVE STATUS;

注:查看Slave_IO_Running和Slave_SQL_Running都应为Yes,说明配置成功。
4. 进行验证
4.1 主服务器执行语句
-- 创建数据库
CREATE DATABASE IF NOT EXISTS replication_test;-- 使用新创建的数据库
USE replication_test;-- 创建表
CREATE TABLE replication_table
(id INT AUTO_INCREMENT PRIMARY KEY,message VARCHAR(255) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 插入数据
INSERT INTO replication_table (message)
VALUES ('你好,这是一条测试消息。');
运行结果:
> CREATE DATABASE IF NOT EXISTS replication_test
[2024-07-23 17:48:19] 33 ms 中有 1 行受到影响
> USE replication_test
[2024-07-23 17:48:19] 在 6 ms 内完成
replication_test> CREATE TABLE replication_table
(
id INT AUTO_INCREMENT PRIMARY KEY,
message VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
[2024-07-23 17:48:19] 在 69 ms 内完成
replication_test> INSERT INTO replication_table (message)
VALUES ('你好,这是一条测试消息。')
[2024-07-23 17:48:19] 53 ms 中有 1 行受到影响
4.2 从服务器执行语句
-- 使用数据库
USE replication_test;-- 查询表以验证复制
SELECT * FROM replication_table;
5. 总结
基于IDEA和Docker-Compose简化操作过程,仅供学习参考,欢迎评论交流。
相关文章:
Docker-Compose实现MySQL之主从复制
1. 主服务器(IP:192.168.186.77) 1.1 docker-compose.yml services:mysql-master:image: mysql:latest # 使用最新版本的 MySQL 镜像container_name: mysql-master # 容器的名称environment:MYSQL_ROOT_PASSWORD: 123456 # MySQL root 用户的密码MYSQL_DATABASE: masterd…...
jetson显卡没有加速,而是在用cpu推理?
jetson的库,特别是使用显卡的库,大多需要单独安装 大概率是重装了pytorch,可以使用jetson官网的pytorch! 下面是官网的链接 PyTorch for Jetson - Announcements - NVIDIA Developer Forums 安装完成之后先使用命令查看是否安…...
Linux下如何安装配置Fail2ban防护工具
Fail2ban是一款在Linux服务器上用于保护系统免受恶意攻击的防护工具。它通过监视系统日志,检测到多次失败的登录尝试或其他恶意行为后,会自动将攻击源的IP地址加入防火墙的黑名单,从而阻止攻击者进一步访问服务器。本文将介绍如何在Linux系统…...
js的深浅拷贝
深浅拷贝是编程中对数据复制的两种不同方式,它们在处理对象和数组等复合数据结构时尤为重要。下面将详细解释这两种拷贝方式。 浅拷贝(Shallow Copy) 浅拷贝创建了原始对象的一个新实例,但这个新实例的属性只是原始对象属性的引…...
实验八: 彩色图像处理
目录 一、实验目的 二、实验原理 1. 常见彩色图像格式 2. 伪彩色图像 3. 彩色图像滤波 三、实验内容 四、源程序和结果 (1) 主程序(matlab (2) 函数FalseRgbTransf (3) 函数hsi2rgb (4) 函数rgb2hsi (5) 函数GrayscaleFilter (6) 函数RgbFilter 五、结果分析 1. …...
Python酷库之旅-第三方库Pandas(048)
目录 一、用法精讲 171、pandas.Series.nlargest方法 171-1、语法 171-2、参数 171-3、功能 171-4、返回值 171-5、说明 171-6、用法 171-6-1、数据准备 171-6-2、代码示例 171-6-3、结果输出 172、pandas.Series.nsmallest方法 172-1、语法 172-2、参数 172-3、…...
springboot爱宠屋宠物商店管理系统-计算机毕业设计源码52726
目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…...
自训练和增量训练word2vec模型
1、自己准备训练语料文件 根据自己的业务场景准备训练数据,比如用户在商城上的同购行为序列或同浏览行为序列。 我们希望通过自己训练业务相关的语料word2vec模型来获得词嵌入、词相关性查询等。 1.1 准备语料库文件 # 示例:准备自己的一个大规模的语…...
华三路由器开启web访问
配置路由器: # 配置Web用户名为admin,认证密码为admin,服务类型为http,用户角色为network-admin。 [Sysname] local-user admin [Sysname-luser-manage-admin] service-type http [Sysname-luser-manage-admin] authorization…...
C++软件开发值得推荐的十大高效软件分析工具
目录 1、概述 2、高效软件工具介绍 2.1、窗口查看工具SPY 2.2、Dependency Walker 2.3、剪切板查看工具Clipbrd 2.4、GDI对象查看工具GDIView 2.5、Process Explorer 2.6、Prcoess Monitor 2.7、API Monitor 2.8、调试器Windbg 2.9、反汇编工具IDA 2.10、抓包工具…...
vue2老项目中node-sass更换dart-sass
更换原因:node-sass经常会出现node版本问题,就很麻烦 卸载项目中的node-sass sass-loader npm uninstall sass-loader sass 安装dart-sas sass-loader 推荐安装sass1.26.2 sass-loader7.3.1 npm install sass-loader7.3.1 sass1.26.2 从新配置vue.…...
源/目的检查开启导致虚拟IP背后的LVS无法正常访问
情况描述 近期发现48网段主机无法访问8.83这个VIP(虚拟IP),环境是 8.83 绑定了两个LVS实例,然后LVS实例转发到后端的nginx 静态资源;整个流程是,客户端发起对VIP的请求,LVS将请求转发到后端实例…...
类和对象(四)
构造函数中的初始化列表 之前在实现构造函数时,主要是在函数体内进行赋值,而构造函数还有另一种初始化方式,通过初始化列表进行初始化。 初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,…...
<PLC><HMI><汇川>在汇川HMI画面中,如何为UI设置全局样式?
前言 汇川的HMI软件是使用了Qt来编写的,因此在汇川的HMI程序编写过程,是支持使用qt的样式来自定义部件样式的,即qss格式。 概述 汇川的软件本身提供三个系统的style样式,我们可以直接使用,但是,如果系统提供的样式不符合你的需求,那么你可以对其进行修改,或者自己新建…...
在Git项目中添加并应用“.gitignore”文件
在Git项目中添加并应用.gitignore文件 创建或修改.gitignore文件: 在项目的根目录下创建一个名为.gitignore的文件。如果已经有此文件,可以直接修改。 在文件中添加您希望Git忽略的文件和目录。例如: # 忽略所有的log文件 *.log# 忽略所有的…...
LeetCode Hot100 搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…...
iOS中的KVO(Key-Value Observing)详解
iOS中的KVO(Key-Value Observing)详解 一、KVO概述 KVO(Key-Value Observing),即键值观察/监听,是苹果提供的一套事件通知机制。它允许一个对象(观察者)观察/监听另一个对象&#…...
算法 —— 暴力枚举
目录 循环枚举 P2241 统计方形(数据加强版) P2089 烤鸡 P1618 三连击(升级版) 子集枚举 P1036 [NOIP2002 普及组] 选数 P1157 组合的输出 排列枚举 P1706 全排列问题 P1088 [NOIP2004 普及组] 火星人 循环枚举 顾名思…...
构造+有序集合,CF 1023D - Array Restoration
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1023D - Array Restoration 二、解题报告 1、思路分析 先考虑合法性检查: 对于数字x,其最左位置和最右位置 之间如果存在数字比x小,则非法 由于q次操作,第q…...
Scrapy 爬取旅游景点相关数据(四)
本节内容主要为: (1)创建数据库 (2)创建数据库表 (3)爬取数据进MYSQL库 1 新建数据库 使用MYSQL数据库存储数据,创建一个新的数据库 create database scrapy_demo;2 新建数据表 CR…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
