小研究 - Mysql快速全同步复制技术的设计和应用(三)

Mysql半同步复制技术在高性能的数据管理中被广泛采用,但它在可靠性方面却存在不足.本文对半同步复制技术进行优化,提出了一种快速全同步复制技术,通过对半同步数据复制过程中的事务流程设置、线程资源合理应用、批量日志应用等技术手段,在保证数据可靠性的基础上降低复制过程中的性能损失,实现了快速的全同步复制.测试结果表明,快速全同步复制技术可以在性能、可靠性和一致性方面做到很好的均衡,有效提高了Mysql存储集群的业务承载能力

目录

3 功能验证和性能测试

3.1 功能验证

3.2 性能测试

4 结语


3 功能验证和性能测试

3.1 功能验证

功能验证主要是验证在故障情况下,快速全同步复制的存储集群的事务回退,主机节点和备机节点的切换是否正常和检查数据是否丢失.测试目的:验证快速全同步复制的高可靠性.

测试环境(配置):一主两从的三节点Mysql存储集群.

参数设置:

        Fullsync_consistency_level=1;
        disable_fullsync_on_slave_ack_timeout=0;
        fullsync_relaylog_fsync_ack_level=2;

测试方法:在模拟业务系统运行的过程中,对集群执行破坏性操作,检查数据的一致性及可靠性.测试结束如表4所示.

表4的测试结果说明,快速全同步技术在各种意外故障的场景下,可以保证数据的高可靠性.

3.2 性能测试

本次测试是通过对比快速全同步和Mysql增强半同步的写入性能(在相同的配置情况下),来验证
快速全同步复制技术是否具有性能上的优势.

测试软件:Sysbench 1.0.20(using system Lua-JIT 2.1.0-beta3)

服务器配置:CPU16cores32Threads,内存:128G

存储:1 个 NVMe SSD .

软件版本及配置:
Mysql增强半同步:Server version:8.0.26 MysqlCommunity Server+半同步复制插件;
Mysql 存储集群快速全同步复制:基于 8.0.26Mysql Community Server+快速全同步功能;

数据库参数配置一致.

Sysbench 测试场景:
        场景:oltp_write_only;

        每个事务执行如下 3 种操作:

                execute_index_updates();

                execute_non_index_updates();

                execute_delete_inserts().
测试数据量:-tables=18-table-size=5000000,表占用操作系统存储空间:22 G.
测试结果:

如图4 所示的测试结果表明,快速全同步复制性能比 Mysql 半同步(Semi _ sync)在性能上提升约10%.

4 结语

Mysql的传统复制技术在不同的场景下已经获得广泛使用,但依然存在可靠性和复制性能二者不能兼得的问题.本文研究的快速全同步复制技术弥补了传统复制技术的不足,通过线程池和批量应用日志等技术的合理应用,在性能和可靠性等方面获得提升,通过测试验证,在保证数据可靠性基础上快速全同步技术的性能比Mysql半同步复制技术有较大的提升,这在分布式数据库某些场景下具有一定的应用价值.但快速全同步技术并没有对复制延迟的指标和影响做深入分析和研究 . 因此,在具体应用快速全同步技术过程中,如果业务对复制延迟有严格要求,需要评估后再根据实际情况使用

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

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

相关文章

全栈测试平台推荐:RunnerGo

做软件测试的同学在工作时应该都碰到过这种情况:接口管理、接口测试用postman、Apipost等接口管理工具,性能测试用jmeter、loadrunner等性能测试工具,接口自动化则是jmeter脚本或者python脚本配合jenkins使用。这种情况极大的降低了研发效率&…

Linux下的环境变量

目录 一、环境变量是什么?二、常见的环境变量三、查看环境变量的方法四、和环境变量相关的命令五、命令行参数五、环境变量通常是具有全局属性的 一、环境变量是什么? 环境变量通俗来说就是一种存储系统和应用程序运行需要的配置信息的方式。可以把环境…

MySQL数据库基础

目标: 1.数据库操作:创建数据库,删除数据库 2.常用数据类型 3.表的操作:创建表,删除表 数据库操作 (1)显示数据库 show databases; (2)创建数据库 创建一个…

Playwright 和 Selenium 的区别是什么?

前言 最近有不少同学问到 Playwright 和 Selenium 的区别是什么? 有同学可能之前学过 selenium 了,再学一个 playwright 感觉有些多余,可能之前有项目已经是 selenium 写的了,换成 playwright 需要时间成本,并且可能有…

算法的时间复杂度和空间复杂度

目录 前言: ✨什么是数据结构? ✨ 什么是算法? ✨数据结构和算法的重要性 🍑算法的时间复杂度和空间复杂度 算法效率 🎉时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 🎉空间复杂度 前言&#xf…

Linux中安装jdk

Linux中安装jdk 操作步骤: 1、使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux 2、解压安装包,命令为tar -zxvf jdk-8u171-linux-x64.tar.gz -C/usr/local 3、配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾加入如…

排序算法(九大)- C++实现

目录 基数排序 快速排序 Hoare版本(单趟) 快速排序优化 三数取中 小区间优化 挖坑法(单趟) 前后指针法(单趟) 非递归实现(快排) 归并排序 非递归实现(归并&am…

2、简单上手+el挂载点+v-xx(v-text、v-html、v-on、v-show、v-if、v-bind、v-for)

官网&#xff1a; vue3&#xff1a;https://cn.vuejs.org/ vue2&#xff1a;https://v2.cn.vuejs.org/v2/guide/ 简单上手&#xff1a; 流程&#xff1a; 导入开发版本的Vue.js <!--开发环境版本&#xff0c;包含了有帮助的命令行警告--> <script src"https…

单片机开发 esp8266

一、固件界面 二、项目介绍 固件名称&#xff1a;esp8266-universalboard v1.0 提供商&#xff1a; 半条虫(466814195) 下载&#xff1a;esp8266-universalboard.bin 源码地址&#xff1a;Gitlab

【Python】Pandas 简介,数据结构 Series、DataFrame 介绍,CSV 文件处理,JSON 文件处理

序号内容1【Python】Pandas 简介&#xff0c;数据结构 Series、DataFrame 介绍&#xff0c;CSV 文件处理&#xff0c;JSON 文件处理2【Python】Pandas 数据清洗操作&#xff0c;常用函数总结 文章目录 1. Pandas 简介2. Pandas 数据结构1. Series&#xff08;一维数据&#xff…

CISCO MDS 9148 SAN Switch 交换机命令配置方法:

前言 CISCO MDS 9148 SAN 交换机已经停产&#xff0c;但还是要掌握一下配置的方法&#xff1a; 升级款后面 9148S 或者 9100系列&#xff0c;但配置方式基本都差不多&#xff0c;掌握一个就好&#xff1a; 高性能和极具吸引力的价值 Cisco MDS 9148S 16G 多层光纤交换机是下…

基于Orangepi 3 lts 的云台相机

利用orangepi 3 lts 和arduino nano 制作了一个云台相机&#xff0c;可用于室内监控。 硬件&#xff1a; orangepi 3 ,arduino nano ,usb相机&#xff0c;180度舵机两个 WeChat_20230806213004 软件&#xff1a; 整体采用mqtt进行消息的中转。 相机采用python 利用opencv…

数据结构——二叉树

本章代码仓库&#xff1a;堆、二叉树链式结构 文章目录 &#x1f36d;1. 树&#x1f9c1;1.1 树的概念&#x1f9c1;1.2 树的结构 &#x1f36c;2. 二叉树&#x1f36b;2.1 二叉树的概念&#x1f36b;2.2 特殊的二叉树&#x1f36b;2.3 二叉树的性质&#x1f36b;2.4 二叉树的存…

IMV8.0

一、背景内容 经历了多个版本&#xff0c;基础内容在前面&#xff0c;可以使用之前的基础环境&#xff1a; v1&#xff1a; https://blog.csdn.net/wtt234/article/details/132139454 v2&#xff1a; https://blog.csdn.net/wtt234/article/details/132144907 v3&#xff1a; h…

Unity 中检测射线穿过的所有的物体

在开发中 有个需求&#xff0c;射线要检测所有穿过的物体。 代码如下&#xff1a; using UnityEngine;public class HitCollider : MonoBehaviour {public float raycastDistance Mathf.Infinity;// Update is called once per framevoid Update(){Ray ray Camera.main.Scre…

【Spring Boot】Thymeleaf模板引擎 — Thymeleaf页面布局

Thymeleaf页面布局 熟悉Thymeleaf的语法和表达式后&#xff0c;后面开发起来会更加得心应手。接下来好好研究一下Thymeleaf如何实现完整的Web系统页面布局。 1.引入代码片段 在模板中经常希望包含来自其他模板页面的内容&#xff0c;如页脚、页眉、菜单等。为了做到这一点&a…

以产品经理的角度去讲解原型图---会议OA项目

目录 一.前言 二.原型图 2.1 原型图是什么 3.1 原型图的作用 三.演示讲解 3.1 项目背景 3.2 项目介绍 3.2.1 会议管理&#xff08;会议的发起&#xff0c;通知&#xff09; 3.2.2 投票管理&#xff08;会议的流程重大决策记录&#xff09; 3.2.3 会议室管理 3.2.4 系统管…

使用Beautiful Soup等三种方式定制Jmeter测试脚本

目录 背景介绍 实现思路 把脚本数据读出&#xff0c;使用正则表达式&#xff08;re库&#xff09;匹配关键数据进行修改 把脚本数据读出&#xff0c;使用BeautifulSoup的xml解析功能解析后修改 通过Beautiful Soup Beautiful Soup 具体实现 使用string.Template字符替换…

Air32 | 合宙Air001单片机内部FLASH读写示例

Air32 | 合宙Air001单片机内部FLASH读写示例 代码已经通过测试&#xff0c;开发环境KEIL-MDK 5.36。 测试代码 void FLASH_RdWrTest(void) {uint32_t Address;uint32_t PageReadBuffer[FLASH_PAGE_SIZE >> 2];uint32_t PageWriteBuffer[FLASH_PAGE_SIZE >> 2];mem…

b站视频标题的获取(xpath、jsonpath的一个简单应用)

目录 1.目的2.代码的演示 注&#xff1a;该篇文章为本人原创&#xff0c;由于本人学习有限&#xff0c;若有错误或者笔误或者有问题&#xff0c;欢迎大家进行批评指正&#xff0c;谢谢。 1.目的 在b站大学上&#xff0c;为了更好的写笔记&#xff0c;本人根据学到的Python(即Py…