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 ~]# hostnamectl
   Static hostname: QYWLAQ_VMC4234
         Icon name: computer-vm
           Chassis: vm
        Machine ID: cd3605d12efd430fb723eb507cf5ce3b
           Boot ID: 00f929e5510944efb40d53ef55d92a49
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.el7.x86_64
      Architecture: x86-64

[root@QYWLAQ_VMC4234 ~]# ll
-rw-r--r--  1 citc unicom  26658592 1225 17:02 mysql-community-client-5.7.35-1.el7.x86_64.rpm
-rw-r--r--  1 citc unicom    317800 1225 17:03 mysql-community-common-5.7.35-1.el7.x86_64.rpm
-rw-r--r--  1 citc unicom   2473348 1225 17:03 mysql-community-libs-5.7.35-1.el7.x86_64.rpm
-rw-r--r--  1 citc unicom   1263816 1226 14:35 mysql-community-libs-compat-5.7.35-1.el7.x86_64.rpm
-rw-r--r--  1 citc unicom 182213816 1225 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 Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2025-02-26 12:24:03 CST; 4min 26s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 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: 27
   Memory: 289.2M
   CGroup: /system.slice/mysqld.service
           └─8444 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

226 12:23:57 QYWLAQ_VMC4234 systemd[1]: Starting MySQL Server...
226 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.35

Copyright (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 TO
  MASTER_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 TO
  MASTER_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_Running
  • Slave_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`。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980573.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

eMMC安全简介

1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言, 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性(Confidentiality)、完整性(Integr…

SpringBoot新闻推荐系统设计与实现

随着信息时代的快速发展,新闻推荐系统成为用户获取个性化内容的重要工具。本文将介绍一个幽络源的基于SpringBoot开发的新闻推荐系统,该系统功能全面,操作简便,能够满足管理员和用户的多种需求。 管理员模块 管理员模块为系统管…

zookeeper-docker版

Zookeeper-docker版 1 zookeeper概述 1.1 什么是zookeeper Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调(Coordination)服务,它是一个为分布式应用提供一致性服务的软件。 1.2 zookeeper应用场景 zookeeper是一个经典的分…

Java 调试模式下 Redisson 看门狗失效

一、场景分析 前几天在做分布式锁测试: 在调试模式下,lock.lock() 之后打上断点,想测试一下在当前线程放弃锁之前,别的线程能否获取得到锁。 发现调试模式下,看门狗机制失效了,Redis 上 30 秒后&#xff0…

FFmpeg入门:最简单的音频播放器

FFmpeg入门:最简单的音频播放器 欢迎大家来到FFmpeg入门的第二章,今天只做一个最简单的FFmpeg音频播放器;同样,话不多说,先上流程图 流程图 以上流程和视频播放器的解码过程基本上是一致的; 不同点在于 S…

基于Python Django的人脸识别上课考勤系统(附源码,部署)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

【小羊肖恩】小羊杯 Round 2 C+K

题目链接:https://ac.nowcoder.com/acm/contest/100672#question C.是毛毛虫吗? 思路: 其实很简单,假设我们要满足题目所给条件,那么这个毛毛虫最坏情况下肯定是一条如下图所示的无向图 右端省略号为对称图形 &…

PyCharm怎么集成DeepSeek

PyCharm怎么集成DeepSeek 在PyCharm中集成DeepSeek等大语言模型(LLM)可以借助一些插件或通过代码调用API的方式实现,以下为你详细介绍两种方法: 方法一:使用JetBrains AI插件(若支持DeepSeek) JetBrains推出了AI插件来集成大语言模型,不过截至2024年7月,官方插件主要…

安装 Open WebUI

2025.03.01 早上 我已经安装了ollama 和deeseek模型 (本地部署流水账之ollama安装Deepseek安装-CSDN博客),然后需要个与模型沟通的工具(这么说不知道对不对)。 刚开始用的chatbox,安装很方便,…

java后端开发day25--阶段项目(二)

(以下内容全部来自上述课程) 1.美化界面 private void initImage() {//路径分两种://1.绝对路径:从盘符开始写的路径 D:\\aaa\\bbb\\ccc.jpg//2.相对路径:从当前项目开始写的路径 aaa\\bbb\\ccc.jpg//添加图片的时…

基于Spring Boot + Vue的常规应急物资管理系统设计与实现

大家好,今天要和大家聊的是一款基于Spring Boot Vue的“常规应急物资管理系统”的设计与实现。项目源码以及部署相关事宜请联系我,文末附上联系方式。 项目简介 基于Spring Boot Vue的“常规应急物资管理系统”设计与实现的主要使用者分为管理员、员工…

SpringCloud + Spring AI Alibaba 整合阿里云百炼大模型

一、前言 记录一次自己使用微服务整合阿里云的百炼大模型,需要用到Redis来记录最近五条信息,已能够保证上下文的连通性,Ai和用户之间的对话是使用的MongoDB来进行存储。然后我这篇文章是介绍了两种请求方式,一种是通过Http请求&a…

(贪心 合并区间)leetcode 56

思路来源:代码随想录--代码随想录_合并区间题解 首先用lambda 按照左界值升序排序 建立答案的二维数组,将第一个行区间放入,判断从第二行开始 第i行的左区间一定大于第i-1行的左区间(排序过了),所以只判断…

CAN总线通信协议学习4——数据链路层之仲裁规则

CAN总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据若多个设备同时有发送需求,该如何分配总线资源? 解决问题的思路:制定资源分配规则,依次满足多个设备的发送需求,确保同一时间只有一个设备操作总线…

Kubespray部署企业级高可用K8S指南

目录 前言1 K8S集群节点准备1.1 主机列表1.2 kubespray节点python3及pip3准备1.2.1. 更新系统1.2.2. 安装依赖1.2.3. 下载Python 3.12源码1.2.4. 解压源码包1.2.5. 编译和安装Python1.2.6. 验证安装1.2.7. 设置Python 3.12为默认版本(可选)1.2.8. 安装pi…

互推机制在开源AI智能名片2+1链动模式S2B2C商城小程序源码推广中的应用探索

摘要: 在数字化营销时代,开源AI智能名片21链动模式S2B2C商城小程序源码作为一种创新的技术解决方案,正逐步成为企业数字化转型的重要工具。然而,面对激烈的市场竞争,如何高效推广这一前沿技术产品,成为开发…

波导阵列天线 学习笔记11双极化全金属垂直公共馈电平板波导槽阵列天线

摘要: 本communicaition提出了一种双极化全金属垂直公共馈电平板波导槽阵列天线。最初提出了一种公共馈电的单层槽平板波导来实现双极化阵列。此设计消除了传统背腔公共馈电的复杂腔体边缘的必要性,提供了一种更简单的天线结构。在2x2子阵列种发展了宽十…

腾讯游戏完成架构调整 IEG新设五大产品事业部

易采游戏网2月28日独家消息:继1月份腾讯天美工作室群完成内部组织架构调整后,腾讯旗下互动娱乐事业群(IEG)再次宣布对组织架构进行优化调整。此次调整的核心在于新设立了五大产品事业部,包括体育产品部、音舞产品部、V…

Vue3国际化开发实战:i18n-Ally + vue-i18n@next高效配置教程,项目中文显示

本文详解 Vue3 国际化开发全流程:从安装 vue-i18nnext 到配置多语言文件(JSON/YAML),结合 i18n-Ally 插件实现高效翻译管理。重点涵盖: 工程配置:创建 i18n 实例、模块化语言文件结构(支持命名…

【愚公系列】《Python网络爬虫从入门到精通》036-DataFrame日期数据处理

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…