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 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 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.pid226 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.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_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`。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归(Multiple Linear Regression)

C++22——哈希

目录 1.unordered_map的文档介绍 2.unordered_set的文档介绍 3.底层结构 3.1哈希的概念 3.2哈希冲突 3.3哈希函数 3.4哈希冲突解决 3.4.1闭散列 3.4.2开散列 1.unordered_map的文档介绍 unordered_map在线文档说明 unordered_map是存储<key&#xff0c;value>键值…

Docker 搭建 Gitlab 服务器 (完整详细版)

参考 Docker 搭建 Gitlab 服务器 (完整详细版)_docker gitlab-CSDN博客 Docker 安装 (完整详细版)_docker安装-CSDN博客 Docker 日常命令大全(完整详细版)_docker命令-CSDN博客 1、Gitlab镜像 # 查找Gitlab镜像 docker search gitlab # 拉取Gitlab镜像 docker pull gitlab/g…

如何杀死僵尸进程?没有那个进程?

在题主跑代码的时候遇到了这样一种很奇怪的问题&#xff1a; 可以看到显卡0没有跑任何程序但是还是被占据着大量显存&#xff0c;这种进程称为“僵尸进程”&#xff0c;并且当我想kill它的时候&#xff0c;出现下面这种情况&#xff1a; 查过各种资料&#xff0c;最后我的解决…

从0开始的IMX6ULL学习篇——裸机篇之分析粗略IMX6ULL与架构

目录 简单的说一下Cortex-A7架构 讨论ARMv7a-cortex系列的运行模式 寄存器 后言 让我们到NXP的官网上扫一眼。 i.MX 6ULL应用处理器_Arm Cortex-A7单核&#xff0c;频率为900 MHz | NXP 半导体 我们先看CPU Platform&#xff0c;这个是我们的核心。 这里我们的芯片是基于Ar…

从UNIX到Linux:操作系统进化史与开源革命

从UNIX到Linux&#xff1a;操作系统进化史与开源革命 一、操作系统&#xff1a;数字世界的基石 1.1 什么是操作系统&#xff1f; 操作系统&#xff08;OS&#xff09;是计算机系统的核心管理者&#xff0c;承担着三大核心使命&#xff1a; 硬件指挥官&#xff1a;直接管理C…

风控算法技术图谱和学习路径

风控算法技术图谱和学习路径可以从以下几个方面进行详细阐述: 一、风控算法技术图谱 基础知识与理论框架 风控算法技术的核心在于数据处理、特征工程、模型构建及优化。基础知识包括统计学、机器学习、深度学习、图算法等。例如,基于Python的智能风控书籍详细介绍了信贷风控…

Word 插入图片会到文字底下解决方案

一、现象描述 正常情况下&#xff0c;我们插入图片都是这样的。 但有时突然会这样&#xff0c;插入的图片陷于文字底部。 二、网上解决方案 网上有教程说&#xff0c;修改图片布局选项&#xff0c;从嵌入型改成上下型环绕。改完之后确实有用&#xff0c;但是需要手动拖动图片…

NO.22十六届蓝桥杯备战|一维数组|七道练习|冒泡排序(C++)

B2093 查找特定的值 - 洛谷 题⽬要求下标是从0开始的&#xff0c;和数组的下标是吻合的&#xff0c;存放数据应该从下标0开始n的取值范围是1~10000数组中存放的值的绝对值不超10000&#xff0c;说明int类型就⾜够了找到了输出下标&#xff0c;找不到要输出-1&#xff0c;这⼀点…

SQL server2022的详细安装流程以及简单使用

鉴于SQL Server2008R2版本过于老旧&#xff0c;本文主要讲述如何安装SQL Server 2022。 本文主要详细介绍SQL server2022的详细安装流程以及简单使用&#xff0c;以《数据库系统概论&#xff08;第5版&#xff09;》的第79页—第80页为例&#xff0c;详细介绍如何使用SQL serv…

泰勒公式详解与应用

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 &#x1f4dd; 一句话总结 泰…

Spring Data JPA 中的分页实现:从 BasePage 到 Pageable

文章目录 Spring Data JPA 中的分页实现&#xff1a;从 BasePage 到 Pageable背景&#xff1a;为什么需要分页&#xff1f;认识 BasePage 类深入 toPageable() 方法1. 处理页码和页面大小2. 处理排序方向3. 处理排序字段4. 生成 Pageable 对象 实战&#xff1a;如何使用 BasePa…

Android SystemUI开发(一)

frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUI.java frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java 关键文件 SystemUI 关键服务 简介 Dependency.class&#xff1a;处理系统依赖关系&#xff0c;提供资源或服…

Python----Python爬虫(多线程,多进程,协程爬虫)

注意&#xff1a; 该代码爬取小说不久或许会失效&#xff0c;有时候该网站会被封禁&#xff0c;代码只供参考&#xff0c;不同小说不同网址会有差异 神印王座II皓月当空最新章节_神印王座II皓月当空全文免费阅读-笔趣阁 一、多线程爬虫 1.1、单线程爬虫的问题 爬虫通常被认为…

Linux(ftrace)__mcount的实现原理

Linux 内核调试工具ftrace 之&#xff08;_mcount的实现原理&#xff09; ftrace 是 Linux 内核中的一种跟踪工具&#xff0c;主要用于性能分析、调试和内核代码的执行跟踪。它通过在内核代码的关键点插入探针&#xff08;probe&#xff09;来记录函数调用和执行信息。这对于开…

网络层IP协议

基本概念 主机&#xff1a;有IP地址&#xff0c;但是不进行路由控制的设备。 路由器&#xff1a;有IP地址&#xff0c;又能进行路由控制。 节点&#xff1a;主机和路由器的统称。 协议头格式 4位版本号&#xff1a;指定IP协议的版本。对于IPv4来说&#xff0c;就是4 4位首…

计算机毕业设计SpringBoot+Vue.js在线课程管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图

欢迎来到《小5讲堂》 这是《腾讯云》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景效果图流程图创建数据库 基本信息数据库配置设置密码控制台开…

Java里的ArrayList和LinkedList有什么区别?

大家好&#xff0c;我是锋哥。今天分享关于【Java里的ArrayList和LinkedList有什么区别&#xff1f;】面试题。希望对大家有帮助&#xff1b; Java里的ArrayList和LinkedList有什么区别&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ArrayList 和 Lin…

盛京开源社区加入 GitCode,书写东北开源生态新篇章

在数字化转型与开源技术蓬勃发展的浪潮下&#xff0c;开源社区已成为推动技术创新的核心力量。盛京开源社区&#xff08;SJOSC&#xff09;作为沈阳地区的开源交流平台&#xff0c;始终致力于连接开发者、企业及高校&#xff0c;构建区域技术生态圈。 现在&#xff0c;盛京开源…