案例:三台主机实现 级联复制

介绍:级联复制架构

级联复制架构 是一种特殊的主从结构,之前聊到的几种主从结构都只有两层,但级联复制架构中会有三层,关系如下:

也就是在级联复制架构中,存在两层从库,这实际上属于一主多从架构的升级版,毕竟如果一个主节点存在多个从节点时,多个从节点都会同时去主节点拉取新数据,如果数据量较大,就会导致主节点的 I/O 负载过高,因此这种级联复制架构要解决的问题,也就是多个从库会对主库造成太大压力的问题。

这个过程中,第一层从库只有一个节点,它会负责从主库上拉取最新的数据,接着第二层的多个从库会从上一层的从库中拉取数据,这样能够这在从库较多的情况下,尽量降低数据同步对主节点的性能影响。

案例:三台主机实现 级联复制

// 前置工作
yum install mariadb-server -y
systemctl enable --now mariadb// 关闭防火墙 and SELinux
setenforce 0
systemctl disable --now firewalld
# 10.0.0.8 充当 master
# 10.0.0.18 充当级联 slave
# 10.0.0.28 充当 slave
----
// 在 master 主节点实现
[root@master ~] vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=8
log-bin        # 开启二进制日志功能 ( 建议: 加个二进制日志存放路径 )[root@master ~] systemctl restart mariadb
[root@master ~] mysql
MariaDB [(none)]> show master logs;      // 记录二进制位置, 给中间级联从节点使用
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       330 |
+--------------------+-----------+
1 row in set (0.001 sec)// 创建用户
## 注意: 修改 IP 地址
MariaDB [(none)]> grant replication slave on *.* to repluser@'10.0.0.%' identified by '123456';
[root@slave ~] mysqldump -A -F --single-transaction --master-data=1 > /root/all.sql
[root@master ~] scp /root/all.sql 10.0.0.18:/root    # 拷贝到从节点
[root@master ~] scp /root/all.sql 10.0.0.28:/root    # 拷贝到从节点----
// 在中间级联 slave 从节点实现 ( 必须开启 log_slave_updates 选项 )
[root@slave1 ~] vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=18       # 唯一 ID
log-bin            # 开启二进制日志功能
log_slave_updates  # 级联复制中间节点的必选项 ( MySQL8.0 此为默认值,可以不人为添加 )
read-only          # 只读
[root@slave1 ~] systemctl restart mariadb# 还原数据库
[root@slave1 ~] vim /root/all.sql
CHANGE MASTER TOMASTER_HOST='10.0.0.8',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;[root@slave1 ~] mysql 
MariaDB [(none)]> set sql_log_bin=0;
MariaDB [(none)]> source /root/all.sql
MariaDB [(none)]> show master logs;        // 记录二进制位置, 给第三个节点使用
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       330 |
+--------------------+-----------+
1 row in set (0.000 sec)MariaDB [(none)]> set sql_log_bin=0;
MariaDB [(none)]> start slave;// 验证当前主节点与中间级联节点的主从复制架构
MariaDB [(none)]> create database db1;        # 主节点
MariaDB [(none)]> show databases;             # 中间级联从节点
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)// 验证线程
MariaDB [mysql]> show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.80.8Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mariadb-bin.000002Read_Master_Log_Pos: 516Relay_Log_File: mariadb-relay-bin.000002Relay_Log_Pos: 684Relay_Master_Log_File: mariadb-bin.000002Slave_IO_Running: Yes                        # 运行中Slave_SQL_Running: Yes                        # 运行中----   
// 在第三个节点 slave 上实现
[root@slave2 ~] vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=28   # 唯一 ID
log-bin        # 二进制日志功能 ( 非必须 )
read-only      # 只读[root@slave2 ~] systemctl restart mariadb[root@slave2 ~] vim /root/all.sql 
CHANGE MASTER TOMASTER_HOST='10.0.0.18',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;[root@slave2 ~] mysql
MariaDB [(none)]> source /root/all.sql
MariaDB [(none)]> start slave;// 验证线程
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************Slave_IO_Running: Yes    # 运行正常Slave_SQL_Running: Yes    # 运行正常----                                                    
// "上一步验证如果存在问题"    ( 重要! )
// "解决:" (  重新配置复制关系, 结果直接没有报错, 这个问题也就修复完成了 )stop slave;reset slave;change master to master_host='192.168.80.8', master_user='repluser', master_password='123456', master_port=3306;start slave;
----# 验证级联复制架构 ( 主从复制 )
MariaDB [(none)]> create database db2;    # 主节点
MariaDB [(none)]> show databases;         # 从节点
MariaDB [(none)]> show databases;         # 从节点

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

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

相关文章

Deepin基本环境查看(九)【被封印的创世神】

文章目录 - 相关文章目录1、概述2、Deepin中的创世神和管理员1)创世神root2)root被封印原因3)其他的神灵【管理员】 3、神殿管理【su与sudo】1)su(Switch User)2)sudo(Superuser Do&…

Open CASCADE学习|环形弹簧建模

目录 Draw Test Harness: C: 环形弹簧,也称为弓簧,是由拉伸弹簧和连接弹簧构成的。在结构上,环形弹簧通常包括端环、外环和内环,其主要参数包括弹簧的内径、外径和自由高度。环形弹簧的一个显著特点是&am…

计算机毕业设计SSM基于的冷链食品物流信息管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: vue mybatis Maven mysql5.7或8.0等等组成,B…

prometheus之redis_exporter部署

下载解压压缩包 mkdir /opt/redis_exporter/ cd /opt/redis_exporter/ wget http://soft.download/soft/linux/prometheus/redis_exporter/redis_exporter-v1.50.0.linux-amd64.tar.gz tar -zxvf redis_exporter-v1.50.0.linux-amd64.tar.gz ln -s /opt/redis_exporter/redis_…

网络原理(一)

💕"Echo"💕 作者:Mylvzi 文章主要内容:网络原理(一) 一. 应用层 应用层是和程序员联系最密切的一层,对于应用层来说,程序员可以自定义应用层协议,应用层的协议一般要约定好以下两部分内容: 根据需求,明确要传输哪些信…

[算法学习]

矩阵乘法 只有当左矩阵列数等于右矩阵行数,才能相乘N*M的矩阵和M*K的矩阵做乘法后矩阵大小为N*k矩阵乘法规则:第一个矩阵A的第 i 行与第二个矩阵的第 j 列的各M个元素对应相乘再相加得到新矩阵C[i][j]的值 整除 同余 同余的性质 线性运算,…

服务器渲染(SSR)-前端框架

Next.js、Nuxt.js和Remix都是基于Node.js比较流行三个前端框架,它们都基于JavaScript和React/Vue构建,并提供了一些额外的功能和工具来简化开发过程。 1. Next.js是一个基于React的前端框架,它提供了服务器渲染(SSR)和…

Android:Cordova,JavaScript操作设备功能

Cordova学习 Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。 Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码。 Cordova是PhoneGap贡献给Apache后的开源项目,是从…

最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(一)项目概述

黑马程序员最新Java项目实战《苍穹外卖》,最适合新手的SpringBootSSM的企业级Java项目实战。 项目简介 《苍穹外卖》项目的定位是一款为餐饮企业(餐厅、饭店)定制的软件产品。该项目是一个在线外卖订购系统,顾客可以通过网站或者…

Java安全 CC链1分析(Lazymap类)

Java安全 CC链1分析 前言CC链分析CC链1核心LazyMap类AnnotationInvocationHandler类 完整exp: 前言 在看这篇文章前,可以看下我的上一篇文章,了解下cc链1的核心与环境配置 Java安全 CC链1分析 前面我们已经讲过了CC链1的核心ChainedTransf…

TestNG基础教程

TestNG基础教程 一、常用断言二、执行顺序三、依赖测试四、参数化测试1、通过dataProvider实现2、通过xml配置(这里是直接跑xml) 五、testng.xml常用配置方式1、分组维度控制2、类维度配置3、包维度配置 六、TestNG并发测试1、通过注解来实现2、通过xml来…

2.11.

线程 #include <myhead.h>#define SIP "192.168.0.114" #define SPORT 8888void *task(void *arg){printf("客户端连接\n");sleep(1);pthread_exit(NULL); }int main(int argc, const char *argv[]) {int sfd socket(AF_INET, SOCK_STREAM, 0);if(…

Makefile编译原理 make 中的路径搜索_2

一.make中的路径搜索 VPATH变量和vpath关键字同时指定搜索路径。 实验1 VPATH 和 vpath 同时指定搜索路径 mhrubuntu:~/work/makefile1/18$ tree . ├── inc │ └── func.h ├── main.c ├── makefile ├── src1 │ └── func.c └── src2 └── func.c mak…

快速手动完成 VS 编写脚本自动化:如何选取最高效的工作方式?

那些不懂技术的朋友们可能会觉得&#xff0c;写代码写脚本不就是敲敲键盘嘛&#xff0c;搞那么高科技做什么&#xff0c;直接手工点点鼠标不就完事了。 这种看法很常见&#xff0c;但实际情况要复杂得多。 首先&#xff0c;手工操作虽然对于短期和小规模的任务来说似乎更快&am…

【正在更新】从零开始认识语音识别:DNN-HMM混合系统语音识别(ASR)原理

摘要 | Abstract TO-BE-FILLED 1.前言 | Introduction 近期想深入了解语音识别(ASR)中隐马尔可夫模型(HMM)和深度神经网络-隐马尔可夫(DNN-HMM)混合模型&#xff0c;但是尽管网络上有许多关于DNN-HMM的介绍&#xff0c;如李宏毅教授的《深度学习人类语言处理》[1]&#xff0c;…

火车可视化调车系统

列车在调车作业时&#xff0c;当机车头在尾部推动车厢时&#xff0c;司机室一人操控机车&#xff0c;车厢前端配备两名挂梯随车运行调车员&#xff0c;调车员人为分析行车方向是否有障碍、轨道行人等紧急情况&#xff0c;通过对讲机通知司机控制停车。由于司机无法直观观察列车…

ThreeDPose

2023 GitHub - maceq687/FullBodyPoseEstimation: Full body pose estimation to be used with HMD (Quest2) built in Unity ? python mediapose 驱动unity python 发udp消息 unity可以跑起来,python可以驱动unity同步。 GitHub - ganeshsar/UnityPythonMediaPipeAvat…

逆向实战29——某度 某家号2024旋转验证码识别

前言 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 目标网站 aHR0cHM6Ly9hd…

Linux下的文件权限与访问控制:守护你的数据宝藏

引言 在Linux这片广袤的领域中&#xff0c;文件权限与访问控制犹如守护宝藏的魔法阵&#xff0c;它们确保你的系统安全、数据不被窥探。对于初学者而言&#xff0c;了解并掌握这些魔法阵的奥秘&#xff0c;是成为一名合格Linux巫师的必经之路。那么&#xff0c;就让我们一起揭…

Redis核心技术与实战【学习笔记】 - 28.Redis 6.0新特性(多线程、客户端缓存与安全)

简述 Redis 6.0 新增了几个关键新特性&#xff0c;分别是面向网络处理的多 IO 线程、客户端缓存、细粒度的权限控制&#xff0c;以及 RESP 3 协议的使用。 其中&#xff0c;面向网络处理的多 IO 线程可以提高网络请求处理的速度&#xff0c;而客户端缓存可以让应用直接在客户…