MySQL 8.0 的主主复制(双向复制)
在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主主复制(双向复制),步骤与 Linux 类似,但有一些特定的配置和路径需要注意。以下是详细的简化步骤:
1. 使用 root 用户登录
确保你以 root 用户登录到 MySQL 服务器。
mysql -u root -p
输入你的 root 密码后进入 MySQL 命令行界面。
2. 配置第一台主服务器 (master1)
2.1 编辑 my.ini
在 master1 上编辑 MySQL 配置文件 my.ini,通常位于 MySQL 安装目录下,例如 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini。
[mysqld]
# 设置唯一 server-id
server-id=1# 启用二进制日志
log-bin=mysql-bin# 允许其他主机连接
bind-address=0.0.0.0# 自增 ID 增量和偏移量
auto-increment-increment=2
auto-increment-offset=1# 可选:指定需要复制的数据库
binlog-do-db=mydatabase# 可选:忽略不需要复制的数据库
binlog-ignore-db=mysql
2.2 重启 MySQL 服务
保存配置文件后,重启 MySQL 服务以应用更改。
通过 PowerShell 或命令提示符:
net stop mysql80
net start mysql80
或者使用服务管理器:
- 打开“服务”管理控制台 (
services.msc)。 - 找到
MySQL80服务。 - 右键点击并选择“重新启动”。
2.3 创建用于复制的用户
使用 root 用户登录到 MySQL master1 并创建一个专门用于复制的用户。
CREATE USER 'replicator'@'192.168.2.246' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'192.168.2.246';
FLUSH PRIVILEGES;
2.4 获取二进制日志位置
获取当前的二进制日志文件名和位置。
SHOW MASTER STATUS;
记下 File 和 Position 的值,例如:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 154 | mydatabase | mysql |
+------------------+----------+--------------+------------------+
3. 配置第二台主服务器 (master2)
3.1 编辑 my.ini
在 master2 上编辑 MySQL 配置文件 my.ini,通常位于 MySQL 安装目录下,例如 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini。
[mysqld]
# 设置唯一 server-id
server-id=2# 启用二进制日志
log-bin=mysql-bin# 允许其他主机连接
bind-address=0.0.0.0# 自增 ID 增量和偏移量
auto-increment-increment=2
auto-increment-offset=2# 可选:指定需要复制的数据库
binlog-do-db=mydatabase# 可选:忽略不需要复制的数据库
binlog-ignore-db=mysql
3.2 重启 MySQL 服务
保存配置文件后,重启 MySQL 服务以应用更改。
通过 PowerShell 或命令提示符:
net stop mysql80
net start mysql80
或者使用服务管理器:
- 打开“服务”管理控制台 (
services.msc)。 - 找到
MySQL80服务。 - 右键点击并选择“重新启动”。
3.3 创建用于复制的用户
使用 root 用户登录到 MySQL master2 并创建一个专门用于复制的用户。
CREATE USER 'replicator'@'192.168.2.47' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'192.168.2.47';
FLUSH PRIVILEGES;
3.4 获取二进制日志位置
获取当前的二进制日志文件名和位置。
SHOW MASTER STATUS;
记下 File 和 Position 的值,例如:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 154 | mydatabase | mysql |
+------------------+----------+--------------+------------------+
4. 配置 master1 连接到 master2
4.1 停止复制线程
如果复制线程正在运行,先停止它们。
STOP SLAVE;
RESET SLAVE ALL;
4.2 配置 master1 连接到 master2
使用 root 用户登录到 MySQL master1 并配置复制信息。
CHANGE MASTER TOMASTER_HOST='192.168.2.246',MASTER_USER='replicator',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', -- 替换为实际的 binlog 文件名MASTER_LOG_POS=154, -- 替换为实际的 positionGET_MASTER_PUBLIC_KEY=1;START SLAVE;
将 MASTER_LOG_FILE 和 MASTER_LOG_POS 替换为之前记录的二进制日志文件名和位置。
5. 配置 master2 连接到 master1
5.1 停止复制线程
如果复制线程正在运行,先停止它们。
STOP SLAVE;
RESET SLAVE ALL;
5.2 配置 master2 连接到 master1
使用 root 用户登录到 MySQL master2 并配置复制信息。
CHANGE MASTER TOMASTER_HOST='192.168.2.47',MASTER_USER='replicator',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', -- 替换为实际的 binlog 文件名MASTER_LOG_POS=154, -- 替换为实际的 positionGET_MASTER_PUBLIC_KEY=1;START SLAVE;
将 MASTER_LOG_FILE 和 MASTER_LOG_POS 替换为之前记录的二进制日志文件名和位置。
6. 检查复制状态
在每台服务器上检查复制状态,确保一切正常。
在 master1 上检查:
SHOW SLAVE STATUS\G
关注以下字段:
Slave_IO_Running: 应该显示YesSlave_SQL_Running: 应该显示YesLast_IO_Error: 应该为空Last_SQL_Error: 应该为空
在 master2 上检查:
SHOW SLAVE STATUS\G
关注相同的字段,确保没有错误信息。
总结
通过以上简化步骤,你应该能够成功配置 MySQL 主主复制。以下是关键点总结:
-
使用
root用户登录:- 确保你以
root用户登录到 MySQL 服务器,以执行创建和授权用户的操作。
- 确保你以
-
编辑
my.ini配置文件:- 设置唯一的
server-id。 - 启用二进制日志。
- 允许其他主机连接。
- 设置自增 ID 增量和偏移量。
- 设置唯一的
-
重启 MySQL 服务:
- 保存配置文件后,重启 MySQL 服务以应用更改。
-
创建用于复制的用户:
- 使用
CREATE USER和GRANT命令创建并授予权限。
- 使用
-
获取二进制日志位置:
- 使用
SHOW MASTER STATUS;获取当前的二进制日志文件名和位置。
- 使用
-
配置
master1连接到master2:- 停止现有的复制线程(如果有)。
- 使用
CHANGE MASTER TO命令配置master1连接到master2。 - 启动
master1的复制进程并检查状态。
-
配置
master2连接到master1:- 停止现有的复制线程(如果有)。
- 使用
CHANGE MASTER TO命令配置master2连接到master1。 - 启动
master2的复制进程并检查状态。
-
检查复制状态:
- 使用
SHOW SLAVE STATUS\G命令检查复制线程的状态,确保Slave_IO_Running和Slave_SQL_Running都显示Yes,并且没有错误信息。
- 使用
希望这些简化步骤能帮助你在 Windows Server 2022 Datacenter 上顺利完成 MySQL 主主复制的配置!
相关文章:
MySQL 8.0 的主主复制(双向复制)
在 Windows Server 2022 Datacenter 上配置 MySQL 8.0 的主主复制(双向复制),步骤与 Linux 类似,但有一些特定的配置和路径需要注意。以下是详细的简化步骤: 1. 使用 root 用户登录 确保你以 root 用户登录到 MySQL …...
四、自然语言处理_03LSTM与GRU
0、前言 随着循环神经网络(RNN)在各种序列数据处理任务中被广泛应用,研究人员逐渐发现了其在处理长序列数据时会容易出现梯度消失(vanishing gradient)和梯度爆炸(exploding gradient)问题&…...
磁盘系列基础知识(一):硬盘;IDE;ATA;SATA;AHCI;SCSI;SAS
磁盘系列基础知识(一)硬盘 IDE ATA SATA AHCI SCSI SAS 硬盘厂家 西部数据Western Digital/WD. 希捷 SEAGATE、三星 SAMSUNG、东之 Toshiba、英特尔 Intel、金士顿 Kingston、闪迪 SanDisk、 英睿达 Crucial、浦科特 Plextor 硬盘类别 HDD (…...
taro小程序进入腾讯验证码
接入原因 昨天突然晚上有人刷我们公司的登录发送短信接口,紧急将小程序的验证码校验更新上去了 接下来就是我们的接入方法,其实很简单,不过有时候可能大家着急就没有仔细看文档,腾讯验证码文档微信小程序地址,注意这里…...
原子类相关
原子引用 JUC 并发包提供了: AtomicReferenceAtomicMarkableReferenceAtomicStampedReference AtomicReference 使用举例 public interface DecimalAccount {// 获取余额BigDecimal getBalance();// 取款void withdraw(BigDecimal amount);/*** 方法内会启动 10…...
RabbitMQ 客户端 连接、发送、接收处理消息
RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务,不是像其他服务器一样,负责逻辑处理,然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息, 第一步&a…...
Java Web 3 Axios Vue组件库
一 Ajax 1 同步 异步 2 原生Ajax 比较繁琐 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Documen…...
双目相机的标定,视差图,深度图,点云生成思路与实现。
该文档记录从双目相机标定到点云生成的所有过程,同时会附上代码。 代码直接能跑。https://github.com/stu-yzZ/stereoCamera 目录 大致思路如下: 一、相机标定 1、相机参数介绍 2、单目相机标定 3、双目相机标定 二、图片畸变矫正 三、极线矫正…...
【H2O2|全栈】MySQL的基本操作(三)
目录 前言 开篇语 准备工作 案例准备 多表查询 笛卡尔积 等值连接 外连接 内连接 自连接 子查询 存在和所有 含于 分页查询 建表语句 结束语 前言 开篇语 本篇继续讲解MySQL的一些基础的操作——数据字段的查询中的多表查询和分页查询,与单表查询…...
2、C++命名空间
命名空间 命名空间是一种用来避免命名冲突的机制; 原理是将一个全局的作用域分成一个个命名空间,每个命名空间是个单独的作用域,从而有效避免命名冲突。 注意:命名空间定义在全局 命名空间定义格式 使用: …...
Elemenu-UI时间日期单个组件,限制当前日期之后的时间
element的时间日期组件, type"datetime" ,当你设置了:picker-options"pickerOptions"之后 pickerOptions: { disabledDate(time) { return time.getTime() > Date.now(); }, }, 会发现,他只会限制日期,但不…...
flutter修改状态栏学习
在flutter中如何动态更改状态栏的颜色和风格。 前置知识点学习 AnnotatedRegion AnnotatedRegion 是 Flutter 中的一个小部件,用于在特定区域中提供元数据(metadata)以影响某些系统级的行为或外观。它通常用于改变系统 UI 的外观ÿ…...
解决Unity编辑器Inspector视图中文注释乱码
1.问题介绍 新创建一个脚本,用VS打开编辑,增加一行中文注释保存,在Unity中找到该脚本并选中,Inspector视图中预览的显示内容,该中文注释显示为乱码,如下图所示: 2.图示解决步骤 按上述步骤操作…...
关于csgo的游戏作弊与封禁
关于csgo的游戏作弊与封禁 一.关于作弊 什么叫作弊? 1.换肤,换库存 2.各种参(回溯,自瞄,透视,急停,连跳,假身,子弹跟踪等) 3.某一部分更改游戏内存&…...
严格单元测试造就安全软件
在信息技术迅速发展的今天,软件在各个行业中扮演着至关重要的角色,尤其是在汽车行业,其中软件的可靠性和安全性直接影响到人们的生命安全。软件缺陷所带来的潜在风险不容小觑,尤其在涉及到自动驾驶和车辆控制等关键系统时…...
ubuntu 根分区逻辑卷扩容
1、虚拟机关机通过管理界面给磁盘扩容。 rootcurtis:/home/curtis/git_code# pvdisplay--- Physical volume ---PV Name /dev/vda3VG Name ubuntu-vgPV Size <239.00 GiB / not usable 0Allocatable yes (but full)PE…...
如何查看电脑生产日期
查看电脑的生产日期通常可以通过以下方法实现,具体方式取决于操作系统和电脑类型: 方法 1:检查电脑 BIOS 生产日期通常记录在 BIOS 中。可以通过以下步骤查看: 重启电脑并进入 BIOS: 启动时按下特定的键(…...
MAC M1 mysql 8.0 如何修改root用户密码
关闭mysql服务 使用brew方式安装,可以通过一下命令关闭 brew services stop mysql使用安装包安装的方式 可以选择🍎->系统偏好设置->最下方单机MySQL图标->stop mysql server 启动 MySQL 到安全模式 sudo mysqld_safe --skip-grant-tables …...
漫画之家系统:Spring Boot框架下的漫画版权保护
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
在 MacOS 上为 LM Studio 更换镜像源
在 MacOS 之中使用 LM Studio 部署本地 LLM时,用户可能会遇到无法下载模型的问题。 一般的解决方法是在 huggingface.co 或者国内的镜像站 hf-mirror.com 的项目介绍卡页面下载模型后拖入 LM Studio 的模型文件夹。这样无法利用 LM Studio 本身的搜索功能。 本文将…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
