MySQL-双主复制

  • mysql 双主复制:
    • 实现和MHA(高可用架构)相同的效果。
    • 使用keepalived实现先双主热备,防止单点故障的主从结构。
    • 两台mysql互做主从,各自安装keepalived实现热备,其他从服务器和热备的虚拟IP建立主从连接
  • mysql双主复制是一种数据库复制架构,允许在两个mysqld服务器之间进行双向数据同步,这种复制架构可以提高数据的可用性,和可靠性,同时允许在两个服务器上进行读写操作。
  • 实验前提环境:
    • 首先开启两台mysql,互做主从
    • db1:192.168.8.5
    • db2:192.168.8.6
    • db3:192.168.8.12
  • 实验步骤:
    • 修改每台数据库的/etc/my.cnf文件,开启binlog日志和gtid日志
    • db1:
      • cat > /etc/my.cnf <<EOF
      • [mysqld]
      • basedir=/usr/local/mysql/
      • datadir=/usr/local/mysql/data
      • socket=/tmp/mysql.sock
      • server_id=1
      • port=3306
      • secure-file-priv=/tmp
      • autocommit=1
      • log_bin=mysql-bin
      • binlog_format=row
      • gtid-mode=on
      • enforce-gtid-consistency=true
      • log-slave-updates=1
      • [mysql]
      • prompt=db01>
      • EOF
    • db2:
      • cat > /etc/my.cnf <<EOF
      • [mysqld]
      • basedir=/usr/local/mysql
      • datadir=/usr/local/mysql/data
      • socket=/tmp/mysql.sock
      • server_id=2
      • port=3306
      • secure-file-priv=/tmp
      • autocommit=1
      • log_bin=mysql-bin
      • binlog_format=row
      • gtid-mode=on
      • enforce-gtid-consistency=true
      • log-slave-updates=1
      • [mysql]
      • prompt=db02>
      • EOF
    • db3:
      • cat > /etc/my.cnf <<EOF
      • [mysqld]
      • basedir=/usr/local/mysql
      • datadir=/usr/local/mysql/data
      • socket=/tmp/mysql.sock
      • server_id=3
      • port=3306
      • secure-file-priv=/tmp
      • autocommit=1
      • log_bin=mysql-bin
      • binlog_format=row
      • gtid-mode=on
      • enforce-gtid-consistency=true
      • log-slave-updates=1
      • [mysql]
      • prompt=db03>
      • EOF
    • 启动三台数据库:systemctl restart mysqld
    • db1上面创建一个复制用户:
      • grant replication slave on *.* to repl@'192.168.8.%' identified by '123456';
    • db2与db1建立主从关系:
      • change master to
      • master_host='192.168.8.5',
      • master_user='repl',
      • master_port=3306,
      • master_password='123456' ,
      • MASTER_AUTO_POSITION=1;
      • start slave;
    • db1与db2再建立主从关系:
      • change master to
      • master_host='192.168.8.6',
      • master_user='repl',
      • master_port=3306,
      • master_password='123456' ,
      • MASTER_AUTO_POSITION=1;
      • start slave;
    • 查看slave 状态:show slave status \G
  •  
    • 两台主从搭建好之后,再在db1和db2上面安装leepalived:
      • yum -y install keepalived
      • 配置db1的keepalived配置文件:
        • vim /etc/keepalived/keepalived.conf
          • global_defs {
          • router_id mysql1
          • }
          • vrrp_instance VI_1 {
          • state MASTER
          • interface ens33
          • virtual_router_id 51
          • priority 100
          • advert_int 1
          • authentication {
          • auth_type PASS
          • auth_pass 1111
          • }
          • virtual_ipaddress {
          • 192.168.8.254
          • }
          • }
          • virtual_server 192.168.8.254 3306 {
          • delay_loop 6
          • lb_algo rr
          • lb_kind DR
          • persistence_timeout 50
          • protocol TCP
          • real_server 192.168.8.5 3306 {
          • weight 1
          • TCP_CHECK {
          • connect_port 3306
          • connect_timeout 3
          • retry 3
          • delay_before_retry 3
          • }
          • }
          • }
        • 启动keepalived:systemctl start keepalived
      • 配置db2的keepalived配置文件:
        • vim /etc/keepalived/keepalived.conf
          • global_defs {
          • router_id mysql2
          • }
          • vrrp_instance VI_1 {
          • state BACKUP
          • interface ens33
          • virtual_router_id 51
          • priority 99
          • advert_int 1
          • authentication {
          • auth_type PASS
          • auth_pass 1111
          • }
          • virtual_ipaddress {
          • 192.168.8.254
          • }
          • }
          • virtual_server 192.168.8.254 3306 {
          • delay_loop 6
          • lb_algo rr
          • lb_kind DR
          • persistence_timeout 50
          • protocol TCP
          • real_server 192.168.8.6 3306 {
          • weight 1
          • TCP_CHECK {
          • connect_port 3306
          • connect_timeout 3
          • retry 3
          • delay_before_retry 3
          • }
          • }
          • }
        • 启动keepalived:systemctl start keepalived
      • 查看db1服务器上是否出现了虚拟IP:ip a show dev ens33
  •  
    • 高可用搭建好之后,我们使用db3再与虚拟IP建立主从关系:
      • 先试用ping测试一下 db3是否可以与虚拟IP建立通信
      • 如果ping 不同的话,则将db1的keepalived关闭 切换到db2,再开启db1,切换回来,这样将虚拟ip激活一下
    • 登录db3,与虚拟ip建立主从关系:
      • change master to
      • master_host='192.168.8.254',
      • master_user='repl',
      • master_port=3306,
      • master_password='123456' ,
      • MASTER_AUTO_POSITION=1;
      • start slave;
    • 查看主从关系:show slave status \G
  • 至此我们双主复制则搭建完毕:
    • 最终实现效果:db1和db2写入数据都可以同步到另外两台服务器
      • 假如db1宕机了,漂移地址会自动转移到db2上面,在db2上面写入数据,还是可以同步到db3上

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

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

相关文章

Linux下安装mysql8.0(以rpm包安装)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; Linux下安装mysql8.0&#xff08;以rpm包安装&#xff09;https://myweb.myskillstree.cn/125.html 目录 1、查操作系统信息 2、下载mysql 8.0.34的rpm包 …

MySQL中获取指定日期区间内所有日期

在数据库应用开发中&#xff0c;经常需要根据给定的日期范围获取区间内的每一天日期&#xff0c;这对于统计分析、报表生成、任务调度等领域至关重要。MySQL作为广泛应用的关系型数据库管理系统&#xff0c;提供了丰富的日期函数和查询技巧来实现这一需求。本文将深入探讨如何在…

【Anaconda 3 】Jupyter Notebook 的安装配置及使用

Jupyter Notebook 的安装配置及使用 一、引言 Jupyter Notebook 是一种交互式笔记本&#xff0c;它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中&#xff0c;并支持多种编程语言&#xff0c;如 Python、R、Julia 等。它在数据科学、机器学习和教育领域中得到…

Goland GC

Goland GC 引用Go 1.3 mark and sweep 标记法Go 1.5 三色标记法屏障机制插入屏障删除写屏障总结 Go 1.8 混合写屏障(hybrid write barrier)机制总结 引用 https://zhuanlan.zhihu.com/p/675127867 Garbage Collection&#xff0c;缩写为GC&#xff0c;一种内存管理回收的机制…

条件平差——以水准网平差为例 (python详细过程版)

目录 一、原理概述二、案例分析三、代码实现四、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、原理概述 条件平差的函数模型和随机模型为: A V + W = 0

大模型时代,程序员如何卷?

最近在看电影《碟中谍7》&#xff0c;该片讲述了特工伊森亨特尝试与一个被称为智体的全能人工智能作战&#xff0c;其可以即时访问任何在线网络&#xff0c;他和他的团队成员试图找回控制人工智能智体所必需的两部分钥匙并将其摧毁的故事。 在剧中&#xff0c;智体是一个虚拟反…

文旅行业| 某景区导游培养和管理项目成功案例纪实

——整合导游资源并进行统一管理&#xff0c;构建完善的培养与管理机制&#xff0c;发挥景区导游价值 【客户行业】文旅行业&#xff1b;景区&#xff1b;文旅企业 【问题类型】人才培养&#xff1b;人员管理 【客户背景】 南方某5A级景区&#xff0c;作为国内极具代表性和特…

学习使用jQuery将光标移动到textarea的末尾

学习使用jQuery将光标移动到textarea的末尾 代码 代码 $(document).ready(function(){var textarea $(#your-qipa-id); // 替换为你的textarea IDtextarea.focus(); // 将焦点设置到textarea// 获取textarea的值的长度var len textarea.val().length;// 使用setSelectionRan…

【python】python中的argparse模块,教你如何自定义命令行参数

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

intellij idea中build project与build module以及rebuild module的区别与联系

IntelliJ IDEA是一个功能强大的Java集成开发环境(IDE)。它提供了几个与构建相关的操作,包括: Build Project: - 这将构建整个项目,包括其中的所有模块。 - 它将编译所有已修改的源文件,并重新生成输出文件(如.class文件)。 - 这通常用于确保整个项目的代码是最新的,并且可以正…

Openssl X509证书从HexStream中解析

整体思路 从hex 转换成字节流 然后从字节流中进行解析 You have access to the raw certificate in memory. In the case that you have access to the raw encoding of the certificate in memory, you can parse it as follows. This is useful if you have stored raw cer…

【Pip】pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]解决方案

pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED] 大家好 我是寸铁&#x1f44a; 总结了一篇pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 报错 今天在安装第三方包时报错如下: 解决方案 本质上是需要指定信任的镜像…

开启异步线程的方法

1&#xff0c;开启异步线程&#xff0c;在启动类上加注解&#xff1a; 2&#xff0c;自定义线程池&#xff1a; Configuration public class PromotionConfig {Beanpublic Executor generateExchangeCodeExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExec…

搜维尔科技:【案例分享】Xsens用于工业制造艺术创新设计平台

用户名称&#xff1a;北京理工大学 主要产品&#xff1a;Xsens MVN Awinda惯性动作捕捉系统 在设计与艺术学院的某实验室内&#xff0c;通过Xsens惯性动作捕捉&#xff0c;对人体动作进行捕捉&#xff0c;得到人体三维运动数据&#xff0c;将捕到的数据用于后续应用研究。…

蓝桥杯备战9.拼数

P1012 [NOIP1998 提高组] 拼数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题作对了&#xff0c;但是题解看到更好的 我写的史 #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int a[N],h[…

x_t格式介绍

x_t格式 X_T格式&#xff0c;通常被称为Parasolid文件格式&#xff0c;是一种用于3D CAD数据交换的文件格式。Parasolid本身是一个几何建模内核&#xff0c;由Siemens PLM Software开发和维护&#xff0c;广泛应用于许多主流CAD、CAM、CAE系统中&#xff0c;如SolidWorks、Sol…

小心电子合同这个坑:手写签名图片

一、引言 在数字化浪潮的推动下&#xff0c;电子合同因其便捷性和高效性受到广泛应用。然而&#xff0c;在使用电子合同的过程中&#xff0c;一个看似简单的签名方式——手写签名图片&#xff0c;却可能带来意想不到的法律风险。本文将详细解析这一陷阱&#xff0c;并为大家提…

单播、组播、广播

​​​​​​ 概念 单播&#xff08;Unicast&#xff09; 单播是网络中最常用、最基本的通信方式。在单播通信中&#xff0c;数据包从一个节点发送到特定的另一个节点。换句话说&#xff0c;发送端和接收端之间建立一对一的连接&#xff0c;然后进行数据传输。 例如&#x…

PMP证书好考吗?

PMP新考纲还颠覆了自己旧有的五大知识领域&#xff0c;将原来的五大过程组整合成新领域中过程的一部分&#xff0c;提出了新的商业环境、过程、人员三大知识领域。 最关键的是&#xff0c;在新考纲中明确写到&#xff1a; 重要注意事项。通过工作任务分析开展的研究证实&…

将H264文件封装为mp4文件的三种方法(三种库)

​ 1、使用MP4v2库 前提&#xff1a;交叉编译好RV1106的工具链 &#xff08;1&#xff09;下载路径&#xff1a;MP4v2 | mp4v2 源码&#xff08;2&#xff09;解压后修改CMakeLists.txtoption(BUILD_UTILS "Build MP4v2 auxiliary tools" OFF)&#xff08;3&#x…