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

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;

注:记下FilePosition的值,从服务器需要配置。

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_RunningSlave_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…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...