MySQL双主搭建-5.7.35
文章目录
- 上传并安装MySQL 5.7.35
- 双主复制的配置
- 实例一:172.25.0.19:
- 实例二:172.25.0.20:
- 配置复制用户
- 在实例 1 (172.25.0.19)上执行:
- 在实例 2 (172.25.0.20)上执行:
- 配置主从复制
- 查看实例 2 节点状态:
- 在实例 1 上执行:
- 查看实例 1 节点状态:
- 在实例 2 上执行:
- 验证复制状态
- 测试双主复制
- 在 Server A 上操作:
- 在 Server B 上操作:
- 回到 Server A 上操作:
上传并安装MySQL 5.7.35
(172.25.0.19与172.25.0.20均部署安装并启动)
[root@QYWLAQ_VMC4234 ~]# hostnamectlStatic hostname: QYWLAQ_VMC4234Icon name: computer-vmChassis: vmMachine ID: cd3605d12efd430fb723eb507cf5ce3bBoot ID: 00f929e5510944efb40d53ef55d92a49Virtualization: kvmOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-1160.el7.x86_64Architecture: x86-64[root@QYWLAQ_VMC4234 ~]# ll
-rw-r--r-- 1 citc unicom 26658592 12月 25 17:02 mysql-community-client-5.7.35-1.el7.x86_64.rpm
-rw-r--r-- 1 citc unicom 317800 12月 25 17:03 mysql-community-common-5.7.35-1.el7.x86_64.rpm
-rw-r--r-- 1 citc unicom 2473348 12月 25 17:03 mysql-community-libs-5.7.35-1.el7.x86_64.rpm
-rw-r--r-- 1 citc unicom 1263816 12月 26 14:35 mysql-community-libs-compat-5.7.35-1.el7.x86_64.rpm
-rw-r--r-- 1 citc unicom 182213816 12月 25 17:05 mysql-community-server-5.7.35-1.el7.x86_64.rpm# 安装rpm包
[root@QYWLAQ_VMC4234 ~]# yum localinstall -y *.rpm# 启动并设置开启自启
[root@QYWLAQ_VMC4234 ~]# systemctl enable --now mysqld[root@QYWLAQ_VMC4234 citc]# systemctl status mysqld
● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: active (running) since 三 2025-02-26 12:24:03 CST; 4min 26s agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 8441 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)Process: 8374 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)Main PID: 8444 (mysqld)Tasks: 27Memory: 289.2MCGroup: /system.slice/mysqld.service└─8444 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid2月 26 12:23:57 QYWLAQ_VMC4234 systemd[1]: Starting MySQL Server...
2月 26 12:24:03 QYWLAQ_VMC4234 systemd[1]: Started MySQL Server.# 获取初始密码
[root@QYWLAQ_VMC4234 citc]# sudo grep 'temporary password' /var/log/mysqld.log
2025-02-26T04:23:59.794639Z 1 [Note] A temporary password is generated for root@localhost: IlM3/)Ya6VMH# 登录
[root@QYWLAQ_VMC4234 citc]# mysql -u root -p'IlM3/)Ya6VMH'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.35Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '8th3xY]:NA'; -- 修改root密码
Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES; -- 刷新权限以使修改立即生效
Query OK, 0 rows affected (0.01 sec)
双主复制的配置
实例一:172.25.0.19:
# 此配置文件中追加下述配置
[root@QYWLAQ_VMC4234 ~]# vi /etc/my.cnf[mysqld]
# 基本配置
server-id = 1 # 每个实例的 server-id 必须唯一
log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志
binlog_format = ROW # 推荐使用 ROW 格式
expire_logs_days = 7 # 自动清理 7 天前的日志
max_binlog_size = 100M # 每个二进制日志文件的最大大小# 双主复制配置
log_slave_updates = 1 # 从库记录二进制日志(必须启用)
auto_increment_increment = 2 # 自增步长
auto_increment_offset = 1 # 自增起始值(实例 1 为 1,实例 2 为 2)# 复制过滤(可选)
replicate-do-db = my_database # 只复制指定的数据库
replicate-ignore-db = mysql # 忽略系统库# 其他配置
bind-address = 0.0.0.0 # 允许远程连接
重启MySQL
[root@QYWLAQ_VMC4234 ~]# systemctl restart mysqld
实例二:172.25.0.20:
# 此配置文件中追加下述配置
[root@QYWLAQ_VMC1091 ~]# vi /etc/my.cnf[mysqld]
# 基本配置
server-id = 2 # 每个实例的 server-id 必须唯一
log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志
binlog_format = ROW # 推荐使用 ROW 格式
expire_logs_days = 7 # 自动清理 7 天前的日志
max_binlog_size = 100M # 每个二进制日志文件的最大大小# 双主复制配置
log_slave_updates = 1 # 从库记录二进制日志(必须启用)
auto_increment_increment = 2 # 自增步长
auto_increment_offset = 2 # 自增起始值(实例 1 为 1,实例 2 为 2)# 复制过滤(可选)
replicate-do-db = my_database # 只复制指定的数据库
replicate-ignore-db = mysql # 忽略系统库# 其他配置
bind-address = 0.0.0.0 # 允许远程连接
重启MySQL
[root@QYWLAQ_VMC1091 ~]# systemctl restart mysqld
配置复制用户
在每个 MySQL 实例上创建一个用于复制的用户。
在实例 1 (172.25.0.19)上执行:
mysql> CREATE USER 'replication'@'172.25.0.20' IDENTIFIED BY '@2X0wZY/rq';
Query OK, 0 rows affected (0.01 sec)mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'172.25.0.20';
Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
查询用户
mysql> SELECT User, Host FROM mysql.user;
+---------------+-------------+
| User | Host |
+---------------+-------------+
| replication | 172.25.0.20 |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-------------+
4 rows in set (0.00 sec)
在实例 2 (172.25.0.20)上执行:
mysql> CREATE USER 'replication'@'172.25.0.19' IDENTIFIED BY '@2X0wZY/rq';
Query OK, 0 rows affected (0.00 sec)mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'172.25.0.19';
Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
查询用户
mysql> SELECT User, Host FROM mysql.user;
+---------------+-------------+
| User | Host |
+---------------+-------------+
| replication | 172.25.0.19 |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-------------+
4 rows in set (0.00 sec)
配置主从复制
在每个实例上配置对方为主库。
查看实例 2 节点状态:
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 964 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
在实例 1 上执行:
CHANGE MASTER TOMASTER_HOST='172.25.0.20',MASTER_USER='replication',MASTER_PASSWORD='@2X0wZY/rq',MASTER_LOG_FILE='mysql-bin.000002', -- 替换为实例 2 的当前 binlog 文件MASTER_LOG_POS=1784; -- 替换为实例 2 的当前 binlog 位置
START SLAVE;
查看实例 1 节点状态:
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 964 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
在实例 2 上执行:
CHANGE MASTER TOMASTER_HOST='172.25.0.19',MASTER_USER='replication',MASTER_PASSWORD='@2X0wZY/rq',MASTER_LOG_FILE='mysql-bin.000002', -- 替换为实例 1 的当前 binlog 文件MASTER_LOG_POS=1784; -- 替换为实例 1 的当前 binlog 位置
START SLAVE;
验证复制状态
在每个实例上执行以下命令,检查复制状态:
SHOW SLAVE STATUS\G;
确保以下字段的值为 Yes:
Slave_IO_RunningSlave_SQL_Running
测试双主复制
在 Server A 上操作:
创建测试数据库和表:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50)
) ENGINE=InnoDB;
插入数据:
INSERT INTO test_table (name) VALUES ('Server A Data');
在 Server B 上操作:
检查数据是否同步:
USE test_db;
SELECT * FROM test_table;
应该能看到 Server A Data。
插入数据:
INSERT INTO test_table (name) VALUES ('Server B Data');
回到 Server A 上操作:
检查数据是否同步:
USE test_db;
SELECT * FROM test_table;
table (name) VALUES (‘Server A Data’);
### 在 Server B 上操作:**检查数据是否同步**:
USE test_db;
SELECT * FROM test_table;
应该能看到 `Server A Data`。**插入数据**:
INSERT INTO test_table (name) VALUES (‘Server B Data’);
### 回到 Server A 上操作:**检查数据是否同步**:
USE test_db;
SELECT * FROM test_table;
应该能看到 `Server B Data`。
相关文章:
MySQL双主搭建-5.7.35
文章目录 上传并安装MySQL 5.7.35双主复制的配置实例一:172.25.0.19:实例二:172.25.0.20: 配置复制用户在实例 1 (172.25.0.19)上执行:在实例 2 (172.25.0.20)上执行&…...
Uniapp开发微信小程序插件的一些心得
一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...
Vscode通过Roo Cline接入Deepseek
文章目录 背景第一步、安装插件第二步、申请API key第三步、Vscode中配置第四步、Deepseek对话 背景 在前期介绍【IDEA通过Contince接入Deepseek】步骤和流程,那如何在vscode编译器中使用deepseek,记录下来,方便备查。 第一步、安装插件 在…...
不同规模企业如何精准选择AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析与对比
本文深入探讨了最近国内外主流的 DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具的技术细节、性能表现、应用场景及局限性,并从技术能力、功能需求、成本预算、数据安全和合规以及服务与支持五个关键维度,详细分析了不同规模企业在选择 AI 工具时的考量因素…...
如何有效判断与排查Java GC问题
目录 一、GC的重要性与对性能的影响 (一)GC对性能的影响简要分析 1.GC暂停与应用停顿 2.GC吞吐量与资源利用率 3.GC对内存管理的作用:资源回收 4.GC策略与优化的选择 (二)GC的双刃剑 二、GC性能评价标准 &…...
【笔记】用大预言模型构建专家系统
最近闲庭漫步,赏一赏各个AI大语言模型芳容。也趁着时间,把倪海夏一家的天纪和人纪视频看完了,感谢倪先生和现在网络的知识分享,受益匪浅。但是发现看完,很多不错的知识都不能记录在脑子里,那用的时候岂不是…...
Android SystemUI深度定制实战:下拉状态栏集成响铃功能开关全解析
一、功能实现全景视图 目标场景:在Android 14系统级ROM定制中,为SystemUI下拉状态栏的QuickQSPanel区域新增响铃模式切换开关,实现静音/响铃快速切换功能。该功能需通过三层关键改造实现: 二、核心实现三部曲 1. 配置注入&…...
【Python】基础语法三
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解Python的函数、列表和数组。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自ÿ…...
[Computer Vision]实验六:视差估计
目录 一、实验内容 二、实验过程 2.1.1 test.py文件 2.1.2 test.py文件结果与分析 2.2.1 文件代码 2.2.2 结果与分析 一、实验内容 给定左右相机图片,估算图片的视差/深度;体现极线校正(例如打印前后极线对)、同名点匹配…...
【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random
文章目录 一、随机数生成器 是什么 ?二、为什么 需要 随机数生成器 ?三、随机数生成器 基本原理四、随机数生成器 三个输出接口五、随机生成器 应用1、简单应用2、项目应用一、随机数生成器 是什么 ? /dev/random 和 /dev/urandom 是 Linux 上的字符设备文件,它们是随机数…...
LabVIEW虚拟弗兰克赫兹实验仪
随着信息技术的飞速发展,虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪,该系统不仅能模拟实验操作,还能实时绘制数据图形,极大地丰富了物理实验的教学内容和方式。 …...
LLC谐振变换器恒压恒流双竞争闭环simulink仿真
1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系代为转换)针对全桥LLC拓扑,利用Matlab软件搭建模型,分别对轻载…...
TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具
蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件,专为追求简洁与高效观影体验的用户设计。该软件从零开始编写,界面清爽,操作流畅,特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…...
Python 绘制迷宫游戏,自带最优解路线
1、需要安装pygame 2、上下左右移动,空格实现物体所在位置到终点的路线,会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…...
vue3学习-1(基础)
vue3学习-1(基础) 1. 开始API 风格选项式 API (Options API)组合式 API (Composition API) 快速创建个应用 2.基础1. 创建个应用2.模板语法3.响应式基础reactive() 的局限性[](https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html#limi…...
deepseek使用记录18——文化基因之文化融合
文明长河中的生命浪花 在洛阳白马寺的银杏树下,年轻母亲指着"农禅并重"碑刻给孩子讲述祖辈耕作的故事;在哔哩哔哩的直播间里,00后女孩穿着汉服跳起街舞,弹幕飘过"这才是文化缝合怪"。当文明交融的宏大叙事照…...
Hadoop简介
1. Hadoop简介 官网:http://hadoop.apache.org 1.1 Hadoop架构 Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎YARN 1.2 Hadoop历史 Hadoop作者Doug Cutting Apache Lucene是一个文本搜索系统库 Apache Nutch作为前者的一部…...
密码学(哈希函数)
4.1 Hash函数与数据完整性 数据完整性: 检测传输消息(加密或未加密)的修改。 密码学Hash函数: 构建某些数据的简短“指纹”;如果数据被篡改,则该指纹(以高概率)不再有效。Hash函数…...
谈谈单例模式中通过Htools包的SpringUtil.getBean获取Bean的好处
目录 优势 解决依赖注入失效问题: 典型应用场景: 好处 1. 实例化时序问题 2. 延迟获取解决空指针 3. 设计模式与 Spring 的权衡 代码对比:错误 vs 正确 错误示例(空指针): 正确实现(延…...
本地部署大语言模型-DeepSeek
DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…...
Flutter鸿蒙化适配中遇到的问题
Flutter 环境搭建避坑指南Flutter 作为跨平台开发的热门框架,凭借一套代码多端运行的优势,深受开发者喜爱,但环境搭建与适配却是新手入门的第一道拦路虎。我在初次配置 Flutter 开发环境时,接连踩中环境变量、模拟器版本、第三方工…...
基于stm32的公司考勤系统[单片机]-计算机毕业设计源码+LW文档
摘要:本文设计了一款基于STM32单片机的公司考勤系统,详细阐述了其硬件组成和软件算法。该系统利用RFID(或指纹识别等)技术进行员工身份识别,结合实时时钟模块记录考勤时间,并通过OLED显示屏实时显示考勤信息…...
Linux中以其它用户身份执行脚本或命令的全总结
Linux中以其他用户身份执行命令或脚本是一个常见的需求,最近工作中碰到了这个需求,在这里简单总结一下.假如我们在root用户下想以其它用户(例如oracle,mysql)身份执行一些脚本或命令,那么有哪一些方法呢?su命令(switch user)su命令的使用方式有两种, 如下所示:切换用户只执行一…...
终极指南:gin-vue-admin前端错误监控告警配置详解 - 邮件与钉钉实时通知方案
终极指南:gin-vue-admin前端错误监控告警配置详解 - 邮件与钉钉实时通知方案 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理&#…...
DICOM序列实时渲染从28fps到126fps:C++无锁队列+GPU命令缓冲复用+ROI局部重绘的工业级调优日志
第一章:DICOM序列实时渲染性能跃迁全景概览 现代医学影像工作流对DICOM序列的实时可视化提出严苛要求:从百层CT扫描到高分辨率MRI动态序列,传统CPU软渲染方案常遭遇帧率跌破15 FPS、交互延迟超300ms的瓶颈。近年来,GPU加速管线、零…...
Cuvil + HuggingFace Pipeline端到端加速实录:BERT-base推理延迟从142ms降至31ms的6个关键编译开关
第一章:Cuvil 编译器在 Python AI 推理中的应用 面试题汇总Cuvil 是一款面向 AI 推理场景的轻量级领域专用编译器(DSL Compiler),专为优化 Python 中基于 PyTorch/TensorFlow 模型的部署而设计。它通过静态图分析、算子融合与硬件…...
SEO的黑帽和白帽技术分别是什么_如何查询网站的SEO指标和排名数据
SEO的黑帽和白帽技术分别是什么_如何查询网站的SEO指标和排名数据 在当今的互联网时代,搜索引擎优化(SEO)是提升网站流量和可见度的关键。SEO有许多技术和方法,其中包括白帽技术和黑帽技术。了解这些技术不仅有助于提升网站的搜索…...
2026 AI 智能体工程化深度解析:从词元逻辑到高可用链路构建
进入 2026 年,大语言模型(LLM)的竞争已从单纯的“模型智力”转向了“工程化落地能力”。对于开发者而言,AI 不再仅仅是一个对话框,而是一个能够自主调用工具、处理复杂逻辑的智能体(Agent)。在这…...
CherryStudio+Obsidian联动指南:如何让本地笔记成为大模型的长期记忆?
CherryStudio与Obsidian深度整合:构建AI可理解的长期记忆系统 在信息爆炸的时代,我们每天都在产生大量笔记和知识片段,但这些内容往往沉睡在本地文件中,无法与智能工具形成有效互动。Obsidian以其独特的网状笔记结构和本地Markdow…...
微信支付ApiV3回调实战:Java版签名校验与参数解密全流程解析
1. 微信支付ApiV3回调的核心流程 微信支付ApiV3的回调机制是整个支付流程中非常关键的一环。当用户完成支付后,微信服务器会主动向商户服务器发送支付结果通知。这个通知包含了支付状态、金额等重要信息,但为了确保数据安全,微信会对这些信息…...
