MySQL集群 双主架构(配置命令)

CSDN 成就一亿技术人!

今天刚开学第一天给大家分享一期:MySQL集群双主的配置需求和命令

CSDN 成就一亿技术人!

神秘泣男子主页:作者首页    <————

MySQL专栏      :MySQL数据库专栏<————

MySQL双主是一种高可用性和容错性的数据库架构,有两个主数据库(Master)。这种架构允许在其中一个主数据库出现故障时,系统仍然能够正常运行,并且在故障恢复后能够继续正常工作。

工作原理:

  • 两台 MySQL 实例都可读写,互为主备。
  • 默认情况下,只有一台主节点(称为主写节点)负责数据的写入,另一台主节点(称为备写节点)处于备用状态。
  • 主写节点将变更记录(binlog)发送给备写节点,备写节点应用变更记录,保证数据一致性。
  • 当主写节点发生故障时,备写节点可以被提升为主写节点,继续提供服务。

优点:

  • 提高读写性能: 两台主节点可以同时处理读写请求,从而提高数据库的整体性能。
  • 增强高可用性: 如果一台主节点发生故障,另一台主节点可以继续提供服务,从而保证数据库的高可用性。

缺点:

  • 数据一致性风险: 双主架构需要保证两台主节点的数据一致性,这可能会带来一些风险,例如数据冲突等。
  • 配置和管理复杂度: 双主架构的配置和管理比单主架构复杂,需要 DBA 具备一定的专业知识。

应用场景:

  • 对读写性能要求较高的应用
  • 对高可用性要求较高的应用

常见实现方式:

  • 双向复制: 两台主节点之间通过 binlog 进行双向复制,保证数据一致性。
  • 仲裁器: 引入一个仲裁器协调两台主节点之间的写入操作,保证数据一致性。

双主配置命令

1.master1配置

1.修改配置文件

配置完成后重启

vim /etc/my.cnf

log_bin
server-id=1
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row

log_bin:
此配置项启用二进制日志,它是 MySQL 复制所必需的。
server-id:
此配置项用于为 MySQL 服务器分配唯一的标识符。在复制设置中,每个服务器都应该有一个唯一的 server-id。在您的配置中,服务器的ID被设置为1。确保每个服务器都有一个唯一的ID。
gtid_mode:
此配置项启用 GTID 模式。GTID 是用于在不同 MySQL 实例之间唯一标识事务的机制。启用 GTID 有助于简化复制配置和处理。
enforce_gtid_consistency:
此配置项强制执行 GTID 一致性。这确保在执行复制时事务的一致性。
binlog_format=row:
此配置项指定二进制日志的格式。在您的配置中,设置为row,表示以行为基础记录二进制日志。这是推荐的设置,因为它提供更好的灵活性和一致性。
2.创建授权用户
grant replication slave on *.* to 'rep'@'192.168.180.%' identified by 'Sunshao-123';
 
rep是用户名称
@后边跟上服务器网段


2.master2配置

1.修改配置文件

配置完成后重启

log_bin
server-id=2
#GTID:
gtid_mode=on #开启gtid模式
enforce_gtid_consistency=on
binlog_format=row

1.检测创建账户是否可用
mysql -h 目标服务器 -u创建用户 -p'密码'

master2 访问 master1

2.设置主服务器
4.***设置主服务器**    指向master1
mysql> change master to
    -> master_host='另外一个主服务器的IP',
    -> master_user='rep',
    -> master_password='Sunshao-123',
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> start slave;        开启复制
Query OK, 0 rows affected (0.00 sec)

3.查看线程状态
mysql> show slave status \G;
************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.180.180
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master1-bin.000002
          Read_Master_Log_Pos: 1720
               Relay_Log_File: master2-relay-bin.000004
                Relay_Log_Pos: 966
        Relay_Master_Log_File: master1-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1720
              Relay_Log_Space: 2452
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 0a562cb8-bf46-11ee-b233-000c2950269e
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 0a562cb8-bf46-11ee-b233-000c2950269e:1-9
            Executed_Gtid_Set: 0a562cb8-bf46-11ee-b233-000c2950269e:1-9,
235616ef-b8fc-11ee-86c1-000c2952be42:1-2
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

都为yes表示成功

接下来返回master1继续配置

.***设置主服务器**    指向master2
mysql> change master to
    -> master_host='另外一个主服务器的IP',
    -> master_user='rep',
    -> master_password='Sunshao-123',
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.180.181
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master2-bin.000002
          Read_Master_Log_Pos: 194
               Relay_Log_File: master1-relay-bin.000003
                Relay_Log_Pos: 411
        Relay_Master_Log_File: master2-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 194
              Relay_Log_Space: 1233
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2
                  Master_UUID: 235616ef-b8fc-11ee-86c1-000c2952be42
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 235616ef-b8fc-11ee-86c1-000c2952be42:1-2
            Executed_Gtid_Set: 0a562cb8-bf46-11ee-b233-000c2950269e:1-10,
235616ef-b8fc-11ee-86c1-000c2952be42:1-2
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

测试

master1

master2同步master1

master1上
mysql> insert into t1 values(666666);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test.t1;
+--------+
| id     |
+--------+
|     11 |
|     22 |
|     22 |
|     22 |
| 666666 |
+--------+
5 rows in set (0.00 sec)

mysql> 


master2上
mysql> select * from test.t1;
+--------+
| id     |
+--------+
|     11 |
|     22 |
|     22 |
|     22 |
| 666666 |
+--------+
5 rows in set (0.01 sec)

master2

master1同步master2

master2上
mysql> insert into test.t1 values(77777);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test.t1;
+--------+
| id     |
+--------+
|     11 |
|     22 |
|     22 |
|     22 |
| 666666 |
|  77777 |
+--------+
6 rows in set (0.00 sec)

mysql> 

master1上
mysql> select * from test.t1;
+--------+
| id     |
+--------+
|     11 |
|     22 |
|     22 |
|     22 |
| 666666 |
|  77777 |
+--------+
6 rows in set (0.00 sec)

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

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

相关文章

WEB服务器-Tomcat(黑马学习笔记)

简介 服务器概述 服务器硬件 ● 指的也是计算机&#xff0c;只不过服务器要比我们日常使用的计算机大很多。 服务器&#xff0c;也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求&#xff0c;并进行处理&#xff0c;因此一般来说服务器应具备承担服务并且保障…

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 参考博文: 1.C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 2.Linux笔记之LD_LIBRARY_PATH详解 3.qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径 c…

【wails】(4):使用wails做桌面应用开发,整合chatgpt-web项目做前端,进行本地开发,web端也可以连调,使用websocket实现

1&#xff0c;视频地址 【wails】&#xff08;4&#xff09;&#xff1a;使用wails做桌面应用开发&#xff0c;整合chatgpt-web项目做前端&#xff0c;进行本地开发&#xff0c;web端也可以连调&#xff0c;使用websocket实现 2&#xff0c;演示效果 启动先是报500 错误&#…

最新 WebStorm 2023.3.4 激活

Stage 1 : 官网下载 Stage 2 : 下载工具 Stage 3-1 : windows为例 Stage 3-2 : mac为例 常见问题 Stage 1 : 官网下载 先去官网下载 Thank you for downloading WebStorm! 我这里下载的是最新版本的2023.3.4&#xff0c;测试过2023最新版本以及2022版本以上的版本没问题…

成为一名优秀的项目经理需要哪些技能?

成为一名优秀的项目管理专员需要具备以下技能和素质&#xff1a; 1. **沟通能力**&#xff1a;项目管理专员需要与团队成员、利益相关者、客户等进行有效沟通。这包括书面和口头沟通&#xff0c;确保信息的准确传达和理解。 2. **组织能力**&#xff1a;管理项目涉及许多任务和…

初谈软件工程(一)

我就读于兰州交通大学的软件工程专业。虽然在全国众多的985、211高校中&#xff0c;兰州交通大学可能并不显眼&#xff0c;似乎未能跻身这些所谓的“顶尖”行列就意味着不被认可。然而&#xff0c;在甘肃省的教育领域中&#xff0c;它无疑是一座璀璨的明珠&#xff0c;名列前茅…

[面试]我们常说的负载均衡是什么东西?

什么是负载均衡 如果用户量很多, 服务器的流量也随之增大, 此时出现两个问题, 软件性能下降 容易出现单点故障 为了解决这些问题, 引入了集群化架构, 也就是把一个软件同时部署在多个服务器上 集群化架构出现的问题 架构改变后又出现了两个问题 如何将请求均匀的发送到多…

Vue源码系列讲解——生命周期篇【七】(模板编译阶段)

目录 1. 前言 2. 模板编译阶段分析 2.1 两种$mount方法对比 2.2 完整版的vm.$mount方法分析 3. 总结 1. 前言 前几篇文章中我们介绍了生命周期的初始化阶段&#xff0c;我们知道&#xff0c;在初始化阶段各项工作做完之后调用了vm.$mount方法&#xff0c;该方法的调用标志…

一款.NET下 WPF UI框架介绍

WPF开源的UI框架有很多,如HandyControl、MahApps.Metro、Xceed Extended WPF Toolkit™、Modern UI for WPF (MUI)、Layui-WPF、MaterialDesignInXamlToolkit、等等,今天小编带大家认识一款比较常用的kaiyuanUI---WPF UI,这款ui框架美观现代化,用起来也超级方便, 界面展示…

论文阅读:《High-Resolution Image Synthesis with Latent Diffusion Models》

High-Resolution Image Synthesis with Latent Diffusion Models 论文链接 代码链接 What’s the problem addressed in the paper?(这篇文章究竟讲了什么问题&#xff1f;比方说一个算法&#xff0c;它的 input 和 output 是什么&#xff1f;问题的条件是什么) 这篇文章提…

Nginx的核心配置指令及调优

目录 Nginx 核心配置指令 一、Nginx配置文件详解 1、配置文件目录 2、配置文件结构 二、调优 1、在全局域进行的调优 1.1线程池指令 1.2 工作进程数指令 1.3工作进程优先级指令 1.4 工作进程 CPU 绑定指令 1.5 调试可打开的文件个数 1.6 调试文件大小指令 1.7 只运…

【Docker】03 容器操作

文章目录 一、流转图二、基本操作2.1 查看本地容器进程2.2 启动容器2.2.1 交互式启动容器2.2.2 后台启动容器 2.3 进入容器2.4 停止启动重启容器2.5 退出容器2.6 删除容器2.7 提交容器&#xff08;打包成镜像&#xff09;2.8 拷贝文件2.8.1 拷贝容器内文件到宿主机2.8.2 拷贝宿…

2024.2.29 模拟实现 RabbitMQ —— 项目展示

目录 项目介绍 核心功能 核心技术 演示直接交换机 演示扇出交换机 演示主题交换机 项目介绍 此处我们模拟 RabbitMQ 实现了一个消息队列服务器 核心功能 提供了 虚拟主机、交换机、队列、绑定、消息 概念的管理九大核心 API 创建队列、销毁队列、创建交换机、销毁交换机、…

react useMemo 用法

1&#xff0c;useCallback 的功能完全可以由 useMemo 所取代&#xff0c;如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数&#xff0c;而是将它返…

自定义Chrome的浏览器开发者工具DevTools界面的字体和样式

Chrome浏览器开发者工具默认的字体太小&#xff0c;想要修改但没有相关设置。 外观——字体可以自定义字体&#xff0c;但大小不可以调整。 github上有人给出了方法 整理为中文教程&#xff1a; 1.打开浏览器开发者工具&#xff0c;点开设置——实验&#xff0c;勾上红框设…

网络技术ensp 一个简单的交换机配置案例

由于工作调岗&#xff0c;转战网络运维了&#xff0c;第一次网络笔记 1.&#xff0c;目的&#xff1a;2台主机相互可以ping通&#xff0c;并且可以ping通网关地址&#xff0c;设备&#xff1a;2台主机&#xff0c;2台交换机 2网络拓扑图如下 3.主机pc1的配置信息 ip&#xff…

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效?

轻量级模型&#xff0c;重量级性能&#xff0c;TinyLlama、LiteLlama小模型火起来了&#xff0c;针对特定领域较小的语言模型是否与较大的模型同样有效? 当大家都在研究大模型&#xff08;LLM&#xff09;参数规模达到百亿甚至千亿级别的同时&#xff0c;小巧且兼具高性能的小…

Springboot应用执行器Actuator源码分析

文章目录 一、认识Actuator1、回顾Actuator2、Actuator重要端点 二、源码分析1、Endpoint自动装配&#xff08;1&#xff09;自动配置入口&#xff08;2&#xff09;普通Endpoint自动装配&#xff08;3&#xff09;配置Web - Endpoint&#xff08;4&#xff09;注册Endpoint为M…

微信小程序-全局配置

个人笔记&#xff0c;仅供参考。 1.entryPagePath 代码&#xff1a; "entryPagePath": "pages/index/index" 具体用法&#xff1a; 2.pages 小程序中新增/减少页面&#xff0c;都需要对 pages 数组进行修改。 代码&#xff1a; "pages": [&…