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

MySQL8 双主(主主)架构部署实战

前言

大家好,我是 沐风晓月 本文收录于《数据库入门到精通系列》专栏, 更多内容可以关注我的csdn博客。

本文主要讲解MySQL主主架构实战,在开始之前需要根据下面的提示来配置环境:

  • Linux基础命令不熟参考: 《linux基本功-基础命令实战》专栏
  • MySQL8没有安装参考:《提高MySQL数据可靠性的必备技能:基于MySQL8实现主从同步》

本次实验需要提前配置好两台安装好MySQL8的服务器

文章目录

  • 前言
  • 一. 实验环境
  • 二. 实验配置
    • 2.1 数据库配置文件设置
      • 2.1.1 对数据库master1进行配置:
      • 2.1.2 修改master2 的配置文件
    • 2.2 相互设置主从架构
      • 2.2.1 对MySQ1配置主从
      • 2.2.2 对MySQL2配置主从
  • 总结

在这里插入图片描述

一. 实验环境

架构版本IPhostname
master1CentOS7.6192.168.1.41master41
master2CentOS7.6192.168.1.42master42

架构图如下:
在这里插入图片描述

数据库密码: Root!2#admin

二. 实验配置

2.1 数据库配置文件设置

要实现主主复制,就是在主从复制的基础上配置相互为主从。 这里很容易需要对两台服务器反复配置,很容易搞乱。

2.1.1 对数据库master1进行配置:

vim /etc/my.cnf[mysqld]server-id = 1                                                
log-bin=mysql-bind                                         
auto_increment_increment=2
auto_increment_offset=1
replicate-do-db=test_db

对上文代码进行注释:

  • server-id = 1 #任意自然n,只需要保证两台mysql主机不重复就可以

  • log-bin=mysql-bin #开启二进制日志

  • auto_increment_increment=2 #步进值auto_imcrement 。一般有n台主mysql就填n

  • auto_increment_offset=1 #起始值,一般填写第n台主机mysql.此时为第一台主 mysql

  • #binlog-ignore=mysql #忽略mysql库,可以不填写

  • #binlog-ignore=infomation_schema #忽略information_schema库,一般不填写

  • replicate-do-db=test_db #指定同步的数据库,不填写则默认所有的数据库

配置完成后,重启数据库

2.1.2 修改master2 的配置文件

配置文件[mysqld]模块下添加以下内容:

vim /etc/my.cnfserver-id = 2 
log-bin=mysql-bind
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=test_db

2.2 相互设置主从架构

2.2.1 对MySQ1配置主从

对MySQL1配置主从,在这里就是对192.168.1.41这台服务器设置MySQL主从,master1做为主库,master2作为从库。

  1. 把MySQL1这台数据设置为主库
  • 登录数据库:
root@mufeng41 ~]# mysql -uroot -p'Root!2#admin'
  • 创建复制用户
    这里设置的用户名是:mufeng41,密码 mysqlMufeng@passw0rd
create user 'mufeng41'@'%' identified with mysql_native_password by 'mysqlMufeng@passw0rd';      
#创建用户 mysql8.0中密码需要填写mysql_native_password
grant replication slave on *.* to 'mufeng41'@'%';                         
#分配权限
flush privileges;    
#刷新权限
  • 查看权限是否分配正确
mysql> show grants for 'mufeng41'@'%';
+--------------------------------------------------+
| Grants for mufeng41@%                            |
+--------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `mufeng41`@`%` |
+--------------------------------------------------+
1 row in set (0.00 sec)
  • 查看master1的状态
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |     1125 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)mysql> 

2. 设置MySQL2为从库

  • 登陆master2数据库,执行同步语句
[root@mufeng42 ~]# mysql -uroot -p'Root!2#admin'
  • 在master2上执行同步语句
mysql> change master to master_host='192.168.1.41',-> master_user='mufeng41',-> master_password='mysqlMufeng@passw0rd',-> master_log_file='mysql-bin.000001',-> master_log_pos=1125;
Query OK, 0 rows affected, 8 warnings (0.01 sec)为方便下次使用这个SQL语句方便,这里改成一条语句,不分段的(切记不需要执行两遍):change master to master_host='192.168.1.41',master_user='mufeng41',master_password='mysqlMufeng@passw0rd',master_log_file='mysql-bin.000001',master_log_pos=1125;
  • 启动slave同步
    这一步骤是在MySQL2中启动,因为目前MySQL2是从库
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

3.测试主从是否成功

先在主数据库插入数据,然后从从库进行查询:

  • 主库操作如下:
mysql> create database test_db;
Query OK, 1 row affected (0.01 sec)
  • 从库查看结果:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test_db            |
+--------------------+
5 rows in set (0.01 sec)mysql> 

至此已经配置成功master1做为主库,MySQL2做为从库的情况,如果你在配置这一步的时候,遇到问题,比如主从不同步的情况,可以参考文章:《成功解决主从同步异常之Slave_IO_Running显示为No的问题》

2.2.2 对MySQL2配置主从

此时 设置的主库为master2,从库为master1

1. 配置master2为主master服务器

  • 先对master2上进行授权
create user 'mufeng42'@'%' identified with mysql_native_password by 'mysqlMufeng@passw0rd';      
#创建用户 mysql.80中密码需要填写mysql_native_password
grant replication slave on *.* to 'mufeng42'@'%';                         
#分配权限
flush privileges;    
  • 查看master2作为master服务器的状态:
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mysql-bind.000001 |     1051 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

2. 配置master1为从服务器

  • 在master1 上执行同步语句,作为从服务器:
mysql> change master to master_host='192.168.1.42', master_user='mufeng42', master_password='mysqlMufeng@passw0rd', master_log_file='mysql-bin.000001', master_log_pos=1051;
Query OK, 0 rows affected, 8 warnings (0.01 sec)
  • 开启slave同步,检查slave状态
mysql> start slave;
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)有时候显示不同步可以直接设置reset slavemysql> reset slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
  • 查看主从是否配置成功
mysql> show slave status \G


3. 插入数据进行主从测试

  • 然后在master2上创建数据在master1上进行查看
    此时的master2是主服务器
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test_db            |
+--------------------+
5 rows in set (0.00 sec)mysql> use test_db
Database changed
mysql> create table test_db(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)
  • 在master1进行查看是否同步
mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| test_db           |
+-------------------+
1 row in set (0.01 sec)

可以看到,数据已经同步过来了,至此MySQL主主架构就配置完成了。

总结

以上就是主主架构配置的全部内容了,如果对你有用,欢迎点赞收藏哦。

💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 本文由沐风晓月原创,首发于CSDN博客, 博客主页:mufeng.blog.csdn.net
💕 学习如逆水行舟,不进则退,一起努力加油哦!
💕 喜欢的话记得点赞收藏哈

相关文章:

MySQL8 双主(主主)架构部署实战

前言 大家好,我是 沐风晓月 本文收录于《数据库入门到精通系列》专栏, 更多内容可以关注我的csdn博客。 本文主要讲解MySQL主主架构实战,在开始之前需要根据下面的提示来配置环境: Linux基础命令不熟参考: 《linux基本功-基础…...

【数据结构】第三站:单链表

目录 一、顺序表的缺陷 二、链表 1.链表的概念以及结构 2.链表的分类 3.单链表的逻辑结构与物理结构 三、单链表的实现 1.单链表的定义 2.单链表的接口定义 3.单链表的接口实现 四、单链表的实现完整代码 一、顺序表的缺陷 在上一篇文章中,我们了解了顺序…...

【蓝桥杯2020】七段码

【题目描述】 七段码 HUSTOJ 题目导出文件 [蓝桥杯2020] 第十一届蓝桥杯第二次省赛—填空题E题 七段码 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二 极管,分别标记为 a, b, c,…...

Spark读取JDBC调优

Spark读取JDBC调优,如何调参一、场景构建二、参数设置1.灵活运用分区列实际问题:工作中需要读取一个存放了三四年历史数据的pg数仓表(缺少主键id),需要将数据同步到阿里云 MC中,Spark在使用JDBC读取关系型数…...

【文心一言】什么是文心一言,如何获得内测和使用方法。

文心一言什么是文心一言怎么获得内测资格接下来就给大家展示一下文学创作商业文案创作数理逻辑推算中文理解多模态生成用python写一个九九乘法表写古诗前言: 🏠个人主页:以山河作礼。 📝​📝:本文章是帮助大家了解文心…...

CentOS8服务篇10:FTP服务器配置与管理

一、安装与启动FTP服务器 1、安装VSFTP服务器所需要的安装包 #yum -y install vsftpd 2、查看配置文件参数 Vim /etc/vsftpd/vsftpd.conf (1)是否允许匿名登录 anonymous_enableYES 该行用于控制是否允许匿名用户登录。 (2&…...

笔试强训3.14

一、选择题 1.以下说法错误的是(C) A.数组是一个对象 B.数组不是一种原生类 C.数组的大小可以任意改变 D.在Java中,数组存储在堆中连续内存空间里 ​ 相关知识点:原生/内置数组是那八个,其他的都是引用的,借…...

elasticsearch 环境搭建和基本操作

参考资料 适合后端编程人员的elasticsearch快速实战教程 ElasticSearch最新实战教程 ElasticSearch配套笔记 自制搜索引擎 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/setup.html restful风格的api REST 设计风格 例如以下springboot示例 RestContr…...

IDEA操作:Springboot项目打包为jar包并运行

在IDEA环境下对Springboot项目打包为jar包且在terminal运行操作 1、 2、 3、注意:在项目目录里创建一个用来存放jar包的文件夹(res),该路径不能使用IDEA设置的默认路径,必须手动创建。 4、 5、点击ok后加载运行包 (8…...

原理底层计划---JVM

二、JVM对空间大小怎么配置?各区域怎么划? 新生代:短时间生成,可以马上回收 老生代:少部分对象会存在很久,回收策略应不同 三、JVM哪些内存区域会发生内存溢出(程序计数器不会) …...

CSDN-猜年龄、纸牌三角形、排他平方数

猜年龄 原题链接:https://edu.csdn.net/skill/practice/algorithm-a413078fb6e74644b8c9f6e28896e377/2258 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议&#xf…...

【Linux】软件包管理器 yum

什么是软件包和软件包管理器 在 Linux 下需要安装软件时, 最原始的办法就是下载到程序的源代码, 进行编译得到可执行程序。但是这样太麻烦了,所以有些人就把一些常用的软件提前编译好, 做成软件包 ( 就相当于windows上的软件安装程序)放在服…...

一天吃透TCP面试八股文

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...

zzu天梯赛选拔

C. NANA去上课 — 简单数学 需要记录上一步处在哪个位置 然后判断如果是同一侧移动距离就是abs&#xff08;x1 - x2&#xff09; 如果不同就是x1 x2 #include <iostream> #include <cmath> using namespace std; #define int long long signed main() {int n; c…...

【C语言】一篇让你彻底吃透(结构体与结构体位段)

本章重点 主要讲解结构体和位移动的使用和定义与声明&#xff0c;并且结构体和位段在内存中是如何存储的。 文章目录结构体结构体类型的声明结构体特殊的声明结构体变量的定义和初始化结构体成员的访问结构的自引用结构体内存对齐结构体传参位段什么是位段位段的内存分配位段的…...

数据结构之二叉树构建、广度/深度优先(前序、中序、后序)遍历

一、二叉树 1.1 树 说到树&#xff0c;我们暂时忘记学习&#xff0c;来看一下大自然的树&#xff1a; 哈哈 以上照片是自己拍的&#xff0c;大家凑合看看 回归正题&#xff0c;那么在数据结构中&#xff0c;树是什么呢&#xff0c;通过上面的图片大家也可以理解 树是一种非…...

“国产版ChatGPT”文心一言发布会现场Demo硬核复现

文章目录前言实验结果一、文学创作问题1 :《三体》的作者是哪里人&#xff1f;问题2&#xff1a;可以总结下三体的核心内容吗&#xff1f;如果要续写的话&#xff0c;可以从哪些角度出发&#xff1f;问题3&#xff1a;如何从哲学角度来进行续写&#xff1f;问题4&#xff1a;电…...

202304读书笔记|《不被定义的女孩》——做最真实最漂亮的自己,依心而行

202304读书笔记|《不被定义的女孩》——做最真实最漂亮的自己&#xff0c;依心而行《不被定义的女孩》作者ASEN&#xff0c;很棒的书。处处透露着洒脱&#xff0c;通透&#xff0c;悦己&#xff0c;阅世界的自由的氛围和态度&#xff01; 部分节选如下&#xff1a; 让自己活得…...

SpringBoot帮你优雅的关闭WEB应用程序

Graceful shutdown 应用 Graceful shutdown说明 Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and servlet-based web applications. It occurs as part of closing the applica…...

递归与递推

递归 直白理解&#xff1a;函数在其内部调用自身&#xff08;自己调用自己&#xff09;所有递归都可以采用递归搜索树来理解递归的特点&#xff1a; 一般来说代码较为简短&#xff0c;但是理解难度大一般时间和空间消耗较大&#xff0c;容易产生重复计算&#xff0c;可能爆栈 …...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...