续:MySQL的并行复制

news2024/12/26 2:08:38

【示例】

如果数据复制的慢的话,就会导致主从数据不一致性;

有的企业需要数据保持强一致性;比如银行等;

日志回放默认是单线程;

#

mysql> show processlist;
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time   | State                                                  | Info             |
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
|  6 | system user |           | NULL | Connect | 170990 | Waiting for master to send event                       | NULL             |
|  7 | system user |           | NULL | Connect |  23369 | Slave has read all relay log; waiting for more updates | NULL             |
| 12 | root        | localhost | NULL | Sleep   |  24065 |                                                        | NULL             |
| 13 | root        | localhost | NULL | Query   |      0 | starting                                               | show processlist |
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
4 rows in set (0.00 sec)


#做日志的多线程回放;加快回访速度;

#上一个实验我们在slave2上做了延迟;这一个实验就不要在设定了SQL_Delay: 60延迟的slave上做,这样毫无意义!

master  slave1

slave1上:编辑主配置文件:

多线程上需要把gtid打开

[root@mysql2 ~]# vim /etc/my.cnf
[root@mysql2 ~]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=2
super_read_only=on
gtid_mode=on
enforce-gtid-consistency=on

slave-parallel-type=LOGICAL_CLOCK  #基于组提交
slave-parallel-workers=16  #开启线程数量
master_info_repository=TABLE  #master信息在表中记录,默认记录在/data/mysql//master.info
relay_log_info_repository=TABLE  #回放日志信息在表中记录,默认记录在/data/mysql/relay-log.info  #多线程回放,日志会成为瓶颈,设置这两条将日志记录在数据表里,而不是文件里

relay_log_recovery=ON  #日志回放恢复功能开启

[root@mysql2 ~]# cd /data/mysql/
[root@mysql2 mysql]# ls
auto.cnf         folian          ibtmp1       mysql2.pid               mysql.sock          relay-log.info
ca-key.pem       ib_buffer_pool  master.info  mysql2-relay-bin.000002  mysql.sock.lock     server-cert.pem
ca.pem           ibdata1         mysql        mysql2-relay-bin.000003  performance_schema  server-key.pem
client-cert.pem  ib_logfile0     mysql1.err   mysql2-relay-bin.index   private_key.pem     sys
client-key.pem   ib_logfile1     mysql2.err   mysql-bin.index          public_key.pem
#重启数据库

[root@mysql2 ~]# /etc/init.d/mysqld start
Starting MySQL SUCCESS! 

#查看进程:这里刚开始出现了问题

[root@mysql2 ~]# /etc/init.d/mysqld start
Starting MySQL SUCCESS! 
[root@mysql2 ~]# 2024-08-27T02:41:31.233896Z mysqld_safe A mysqld process already exists

#这里出错了我们并没有查看到应有的效果
[root@mysql2 ~]# mysql -uroot -predhat

mysql> show processlist;
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time   | State                                                  | Info             |
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
|  6 | system user |           | NULL | Connect | 172796 | Waiting for master to send event                       | NULL             |
|  7 | system user |           | NULL | Connect |  25175 | Slave has read all relay log; waiting for more updates | NULL             |
| 12 | root        | localhost | NULL | Sleep   |  25871 |                                                        | NULL             |
| 14 | root        | localhost | NULL | Query   |      0 | starting                                               | show processlist |
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
4 rows in set (0.01 sec)

mysql> exit;
Bye
[root@mysql2 ~]# ps aux | grep mysql
avahi       793  0.0  0.1  62268  2276 ?        Ss   Aug26   0:11 avahi-daemon: running [mysql1.local]
root      17093  0.0  0.0 113412  1608 ?        S    00:47   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql2.pid
mysql     17234  0.6 10.6 1603764 198588 ?      Sl   00:47   3:45 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=mysql2.err --pid-file=/data/mysql/mysql2.pid --socket=/data/mysql/mysql.sock
root      22394  0.0  0.2 163396  4172 pts/3    S+   09:01   0:00 mysql -px xxxx
root      23902  0.0  0.0 112812   968 pts/1    S+   10:53   0:00 grep --color=auto mysql
[root@mysql2 ~]# kill 17093 
[root@mysql2 ~]# kill 17234
[root@mysql2 ~]# kill 22394
[root@mysql2 ~]# ps aux | grep mysql
avahi       793  0.0  0.1  62268  2276 ?        Ss   Aug26   0:11 avahi-daemon: running [mysql1.local]
root      23918  0.0  0.0 112812   968 pts/1    S+   10:54   0:00 grep --color=auto mysql

[root@mysql2 ~]# /etc/init.d/mysqld start
Starting MySQL...... SUCCESS! 
#成功解决并查看
[root@mysql2 ~]# mysql -uroot -predhat

mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  1 | system user |           | NULL | Connect |    9 | Slave has read all relay log; waiting for more updates | NULL             |
|  3 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
|  4 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
|  5 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
|  6 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
|  7 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
|  8 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
|  9 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
| 10 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
| 11 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
| 12 | system user |           | NULL | Connect |   11 | Waiting for an event from Coordinator                  | NULL             |
| 13 | system user |           | NULL | Connect |   10 | Waiting for an event from Coordinator                  | NULL             |
| 14 | system user |           | NULL | Connect |   10 | Waiting for an event from Coordinator                  | NULL             |
| 15 | system user |           | NULL | Connect |   10 | Waiting for an event from Coordinator                  | NULL             |
| 16 | system user |           | NULL | Connect |   10 | Waiting for an event from Coordinator                  | NULL             |
| 18 | system user |           | NULL | Connect |    9 | Waiting for an event from Coordinator                  | NULL             |
| 19 | system user |           | NULL | Connect |    9 | Waiting for an event from Coordinator                  | NULL             |
| 20 | root        | localhost | NULL | Query   |    0 | starting                                               | show processlist |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
18 rows in set (0.00 sec)

#从上我们可以看出有16个SQL进程来做日志回放,但是最终还是要落到CPU性能上。

#多线程:使主从的数据差异尽可能减小,(数据库优化)

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

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

相关文章

裁剪视频哪个软件好用?试试这些省时省力工具

你是否曾为如何将一段长视频精准地分割成多个精彩片段而烦恼? 视频分割,作为视频剪辑中的基础且关键步骤,对于创作短视频、精选集锦或是捕捉那些稍纵即逝的动人瞬间至关重要。 别担心,今天我们就来揭秘3种免费的裁剪视频在线技巧…

创客匠人对话(下):拆解做爆款的底层逻辑

老蒋创客圈第64期对话标杆直播连麦,我们邀请到【iAMU蒙特梭利翻转星球】平台创始人申晓慧老师。在上篇文章中,申老师分享了她是如何做品牌,如何运营社群。 拿到结果的前提是有一个被客户认同的好产品。本篇文章我们将继续分享对话精彩内容&a…

通过IDEA创建spring boot的web项目

1.Fle->New->Project,选择Maven&#xff0c;点击Next 2.修改项目名称&#xff0c;点击Finish 3.项目创建完毕&#xff0c;等待Maven下载完成 4.修改pom.xml文件&#xff0c;改成如下内容 <?xml version"1.0" encoding"UTF-8"?> <pr…

Spark SQL Hints:优化查询性能的利器

前言 在大数据处理领域,Apache Spark 是一个非常流行的框架,它提供了高性能的数据处理能力。Spark SQL 是 Spark 中的一个模块,用于处理结构化和半结构化数据,允许用户使用 SQL 查询数据,同时也提供了 DataFrame 和 DataSet API 进行编程访问。为了帮助开发者更有效地优化…

ZBrush入门使用介绍——10、布尔运算

大家好&#xff0c;我是阿赵。   这次来看看在ZBrush里面怎样使用布尔运算。 一、 预览布尔渲染 要布尔运算&#xff0c;起码是需要2个模型&#xff0c;所以先创建一个立方体&#xff0c;非常注意的是&#xff0c;一定要转成多边形网格物体。 之前介绍过子工具的用法&#…

联合整体与蒙面人脸识别

Joint Holistic and Masked Face Recognition 摘要 本文通过补丁重建的代理任务来初始化模型参数&#xff0c;并观察到 ViT 主干网表现出改进的训练稳定性和令人满意的人脸识别性能。 除了训练稳定性之外&#xff0c;还提出了两种基于提示的策略&#xff0c;将整体和蒙面人脸识…

MIT APP Inventor服务器版编译

注&#xff1a;MIT Appinventor 在市场上的 Windows 版本较多&#xff0c;在 Linux 上编译的版本很少。 由于需要部署服务器&#xff0c;因此决定编译 linux 版本。 GitHub原文&#xff1a;https://github.com/KamenLiefu/BG_APPInventor Github编译版本免费下载&#xff1a;…

川崎机器人维修请开启马达电源报警故障

‌川崎机器人故障代码主要用于指示机器人的不同运行问题和状态&#xff0c;帮助快速识别和解决这些问题。‌Kasawaki机械手故障代码通常以字母和数字的组合形式出现&#xff0c;其中字母代表故障的类型&#xff0c;而数字则是具体的代码编号。这些代码可以分为‌P‌代表操作错误…

JavaEE:多线程代码案例(阻塞队列)

文章目录 什么是阻塞队列?使用阻塞队列有什么好处?代价BlockingQueue的使用自己实现一个阻塞队列(基于数组) 什么是阻塞队列? 阻塞队列是在普通的(先进先出)的基础上,做出了扩充. 线程安全具有阻塞特性 a. 如果队列为空,进行出队列操作,此时就会出现阻塞,一直阻塞到其他线…

EDA投资前沿 | IDAS 2024设计自动化产业峰会之产业投资分论坛前瞻

主持人简介 冯锦锋 上海兴橙资本合伙人/上海市集成电路行业协会 嘉宾介绍&#xff1a;江苏靖江人&#xff0c;上海兴橙资本合伙人&#xff0c;兼任上海集成电路行业协会副秘书长&#xff0c;著有著作《一砂一世界》、《芯路》、《芯镜》。先后获得清华大学管理信息系统工学学…

如何在大模型落地过程中使用高级 RAG 技术?

一、高级RAG概述 基本 RAG 的工作流程可分为三个步骤&#xff1a;索引、检索和生成。在索引阶段&#xff0c;文本被转换为嵌入&#xff0c;然后存储在向量数据库中以创建可搜索的索引。在检索步骤中&#xff0c;用户的查询也被转换为嵌入&#xff0c;此嵌入用于在向量数据库中…

《向量数据库指南》——Milvus赋能博世智能驾驶:数据引领未来出行革命

在深入探讨Milvus在智能驾驶领域的无限潜力时,我们不得不首先认识到,随着自动驾驶技术的飞速发展,数据已成为驱动这一行业变革的核心要素。自动驾驶系统需要处理海量的实时数据,包括但不限于车辆传感器收集的环境信息(如摄像头捕捉的图像、激光雷达的点云数据、雷达探测的…

VTK随笔六:VTK图像处理(图像创建、图像显示)

一、VTK图像创建 1、VTK 图像数据结构 数字图像文件内容由两个部分组成:图像头信息和数据。图像头信息定义了图像的基本信息&#xff0c;主要包括起点位置(Origin)、像素间隔(Space)和维数(Dimension)。通过这三个参数即可确定图像空间位置和大小。 图像数据即为图像像素的像素…

续航更进阶 长安马自达MAZDA EZ-6成功挑战1301公里续航

继在中国“热极”新疆吐鲁番完成高温试炼后&#xff0c;8月24日-26日&#xff0c;长安马自达MAZDA EZ-6&#xff08;以下称EZ-6&#xff09;“众测先享官—续航更进阶”再次从兰州出发&#xff0c;EZ-6增程车型以一次充电、一箱油&#xff08;45L油箱&#xff09;创造了CLTC工况…

微信小程序主体变更(迁移)法人无法配合扫脸怎么办?

小程序主体变更是指公众平台提供的&#xff0c;协助小程序帐号开发者将其小程序项下业务交由其他开发者的小程序承接、运营的功能和服务。主体变更完成后&#xff0c;小程序的运营权限、主体信息将发生变化。 那么&#xff0c;小程序怎么变更主体信息呢&#xff1f;法人因种种…

游戏开发设计模式之原型模式

目录 原型模式的实现步骤 原型模式的优点 原型模式的应用场景 总结 原型模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在不同编程语言中实现原型模式&#xff1f; Java C# Python C JavaScript 原型模式与其他创建型设计模式&#xff08;如建造者模式、适…

喂饭级教程!零代码搭建本地个人知识库 ,支持GPT4、Llama3、Kimi等十几种大模型

这篇文章是关于搭建本地个人知识库&#xff0c;零代码&#xff01;喂饭级教程&#xff01;支持GPT、Llama3、Kimi等十几种大模型。教程由我编写&#xff0c;每一步已经过验证&#xff0c;可实践&#xff01; 1 搭建本地知识库优势 部署本地知识库&#xff0c;可以借助大模型能…

国内十大企业薪酬管理咨询公司

思博咨询专注于制造业管理咨询落地辅导。提供战略落地、营销体系、组织体系、薪酬绩效、供应链、精益生产、降本增效、工厂规划等管理咨询服务。 在当今这个竞争激烈的市场环境中&#xff0c;企业薪酬管理已不再是简单的工资发放与调整&#xff0c;而是成为了企业战略的重要组成…

大模型学习成长路径:五个阶段晋级指南,你在哪一级?

第一阶段 不知道概念 第一阶段&#xff0c;「不知道大模型是什么意思」&#xff0c;不知道langchain是什么&#xff0c;不知道llm是什么&#xff0c;不知道文心一言&#xff0c;不知道openAI&#xff0c;不知道prompt是什么&#xff1f; 这个阶段就是疯狂百度&#xff0c;像一…

23 预编译详解

目录 一、预定义符号 二、#define定义常量 三、#define定义宏 四、带有副作用的宏参数 五、宏替换的规则 六、宏函数的对比 七、#和## &#xff08;一&#xff09;#运算符 &#xff08;二&#xff09;##运算符 八、命名约定 九、#undef 十、命令行定义 十一、条件编…