数据库系列之MySQL半同步复制技术

MYSQL 数据库的半同步复制操作过程 半同步复制,是最佳安全性与最佳性能之间的一个最佳选择 阅读详情

本文简要介绍了MySQL半同步复制技术及配置部署,以加深对MySQL半同步复制技术的理解。


1、MySQL半同步复制

半同步复制是指主库要等待至少一个从库节点将binlog文件flush到relay log中的返回即认为数据同步正常。
在这里插入图片描述

在mysql5.7版本以前,半同步技术使用的是after_commit模式,也就是主库先提交事务,再接收到从库的ACK后将commit结果返回给客户端。在这种模式下,当客户端事务在主库提交后,在得到从库确认(slave ack)的过程中主库宕机了,如果事务还没有发送到从库,从库切换为主库后,这部分在主库上已经提交的事务就不见了,出现数据丢失。因此在5.7版本以后引入了无损复制,也就是AFTER_SYNC模式,主库等待从库反馈接收到relay log的ack后,再提交事务并返回commit OK的结果给客户端。即使主库出现crash,所有在主库上已经提交的事务都已经同步到slave的relay log中。
在这里插入图片描述
1) 发送binlog和接收ack异步化

相较于之前版本的mysql半同步技术中,将dump线程的发送和接收工作分为两个线程来处理,这样可以同时发送binlog到slave和接收slave的ack信息,提升了性能。

2) Binlog互斥锁

之前版本的半同步复制技术在主提交binlog的写会话和dump thread读binlog的操作都会对binlog添加互斥锁,导致binlog文件的读写是串行化的,存在并发度的问题。5.7版本中对binlog lock进行了优化,移除了dump thread的binlog互斥锁,并加入了安全边际保证binlog的读安全。
在这里插入图片描述
3) SYNC_BINLOG配置

  • 默认为sync_binlog=0,表示mysql不控制binlog的刷新,binlog sync磁盘由操作系统负责。这个时候性能是最好的,但是风险也是最大的,因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。
  • 当不为0的时候,其数值为定期sync磁盘的binlog commit group数,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。
  • sync_binlog值不等于1的时候事务在FLUSH阶段就传输binlog到从库了,而值为1时,binlog同步操作是在SYNC阶段后,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。
  • 当sync_binlog值大于1的时候,sync binlog操作可能并没有使binlog落盘。如果没有落盘,事务在提交前,Master掉电,然后恢复,那么这个时候该事务被回滚。但是Slave上可能已经收到了该事务的events并且执行,这个时候就会出现Slave事务比Master多的情况,主备同步会失败。

所以如果要保持主备一致,需要设置sync_binlog为1。这种设置对高并发系统来说,对系统写入性能会有一定的影响。

4) SYNC_RELAY_LOG配置

  • 设置为0时,表示mysql不控制relay log的刷新,由操作系统决定何时写入。当系统奔溃时,缓存中的这部分binlog数据会丢失
  • 设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里
  • 默认为10000,即每10000次sync_relay_log事件会刷新到磁盘

sync_relay_log设置为1的时候,事务响应时间会受到影响,对于涉及数据比较多的事务延迟会增加很多。

2、半同步复制的部署配置
2.1 环境准备

要想使用半同步复制,必须满足以下几个条件:

1)MySQL 5.5及以上版本

2)变量have_dynamic_loading为YES (查看命令:show variables like “have_dynamic_loading”;)

mysql> show variables like "have_dynamic_loading";
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_dynamic_loading | YES   |
+----------------------+-------+
1 row in set (0.14 sec)

3)主从复制已经存在

2.2 加载插件

1)首先加载插件

因用户需执行INSTALL PLUGIN, SET GLOBAL, STOP SLAVE和START SLAVE操作,所以用户需有SUPER权限。
半同步复制是一个功能模块,库要能支持动态加载才能实现半同步复制! (安装的模块存放路径为/usr/local/mysql/lib/plugin)

  • 主数据库执行:
mysql>  INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

[要保证/usr/local/mysql/lib/plugin/目录下有semisync_master.so文件 (默认编译安装后就有)]
[root@tango-centos01 plugin]# ls -l semi*
-rwxr-xr-x. 1 mysql mysql 709470 Aug 29  2020 semisync_master.so
-rwxr-xr-x. 1 mysql mysql 152501 Aug 29  2020 semisync_slave.so
---------------------------------------------------------------------------------------
如果要卸载(前提是要关闭半同步复制功能),就执行
mysql> UNINSTALL PLUGIN rpl_semi_sync_master;
  • 从数据库执行:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
 
[要保证/usr/local/mysql/lib/plugin/目录下有semisync_slave.so文件 (默认编译安装后就有)]
[root@tango-centos01 plugin]# ls -l semi*
-rwxr-xr-x. 1 mysql mysql 709470 Aug 29  2020 semisync_master.so
-rwxr-xr-x. 1 mysql mysql 152501 Aug 29  2020 semisync_slave.so
---------------------------------------------------------------------------------------
如果要卸载(前提是要关闭半同步复制功能),就执行
mysql> UNINSTALL PLUGIN rpl_semi_sync_slave;
  • 查看插件是否加载成功的两种方式
##1、show plugins
mysql> show plugins;
+----------------------------+----------+--------------------+--------------------+---------+
| Name                   | Status   | Type        | Library            | License |
| rpl_semi_sync_master     | ACTIVE  | REPLICATION    | semisync_master.so | GPL     |

##2、查询INFORMATION_SCHEMA.PLUGINS
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS  WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME          | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE        |
+----------------------+---------------+
1 row in set (0.02 sec)
2.3 启动半同步复制
2.3.1 启动半同步复制

在安装完插件后,半同步复制默认是关闭的,这时需设置参数来开启半同步

1)主数据库执行:

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

2)从数据库执行:

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

以上的启动方式是在登录mysql后的命令行操作,也可写在my.cnf配置文件中(推荐这种启动方式)。

##1、主数据库的my.cnf配置文件中添加:
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1

##2、从数据库的my.cnf配置文件中添加:
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
2.3.2 重启从数据库上的IO线程

在从节点tango-centos-02和tango-centos-03上执行以下命令:

mysql> STOP SLAVE IO_THREAD;
Query OK, 0 rows affected (0.05 sec)

mysql> START SLAVE IO_THREAD;
Query OK, 0 rows affected (0.01 sec)

重启后,slave会在master上注册为半同步复制的slave角色。这时候,主的mysql.err中会打印如下信息:

2021-05-27T19:19:23.081169Z 7 [Note] While initializing dump thread for slave with UUID <de623c4b-eb35-11ea-b1e4-000c2959d3e3>, found a zombie dump thread with the same UUID. Master is killing the zombie dump thread(3).
2021-05-27T19:19:23.081285Z 7 [Note] Start binlog_dump to master_thread_id(7) slave_server(103), pos(mysql-bin.000025, 194)
2021-05-27T19:19:23.081302Z 7 [Note] Start semi-sync binlog_dump to slave (server_id: 103), pos(mysql-bin.000025, 194)
2021-05-27T19:19:23.081571Z 3 [Note] Stop asynchronous binlog_dump to slave (server_id: 103)
2.3.3 查看半同步是否在运行

1)主数据库

mysql>  show status like 'Rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | ON    |
+-----------------------------+-------+
1 row in set (0.06 sec)

2)从数据库

mysql> show status like 'Rpl_semi_sync_slave_status';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.01 sec)

这两个变量常用来监控主从是否运行在半同步复制模式下。至此,MySQL半同步复制环境就部署完成了!

需要注意下,其实Mysql半同步复制并不是严格意义上的半同步复制。当半同步复制发生超时时(由rpl_semi_sync_master_timeout参数控制,单位是毫秒,默认为10000,即10s),会暂时关闭半同步复制,转而使用异步复制。当master dump线程发送完一个事务的所有事件之后,如果在rpl_semi_sync_master_timeout内,收到了从库的响应,则主从又重新恢复为半同步复制。

mysql>  show variables like "rpl_semi_sync_master_timeout";
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| rpl_semi_sync_master_timeout | 10000 |
+------------------------------+-------+
1 row in set (0.00 sec)
3、半同步复制测试

1)主数据库 (从数据库在执行"stop slave"之前)

mysql> create database tango;
Query OK, 1 row affected (0.04 sec)

mysql> create table tango.tb01(id int,name char(10));
Query OK, 0 rows affected (0.12 sec)

mysql> insert into tango.tb01 values(1,'bj');
Query OK, 1 row affected (0.22 sec)

2)从数据执行"stop slave"

mysql> stop slave;

##1、观察主库
mysql> insert into tango.tb01 values(3,'gz');
Query OK, 1 row affected (10.00 sec)
 
mysql>  show status like 'Rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | OFF   |
+-----------------------------+-------+
1 row in set (0.01 sec)

##2、观察从库
mysql>  show status like 'Rpl_semi_sync_slave_status';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | OFF   |
+----------------------------+-------+
1 row in set (0.01 sec)

3)接着再在从数据库执行"start slave"

mysql> start slave;

##1、观察主库
mysql> insert into tango.tb01 values(4,'sh');
Query OK, 1 row affected (0.02 sec)

mysql>  show status like 'Rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | ON    |
+-----------------------------+-------+
1 row in set (0.00 sec)

##2、观察从库
mysql> show status like 'Rpl_semi_sync_slave_status';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_slave_status  | ON   |
+-----------------------------+-------+
1 row in set (0.00 sec)

以上验证分为三个阶段:

  1. 在Slave执行stop slave之前,主的insert操作很快就能返回。
  2. 在Slave执行stop slave后,主的insert操作需要10.01s才返回,而这与rpl_semi_sync_master_timeout参数的时间相吻合。这时,查看两个状态的值,均为“OFF”了。同时,主的mysql.err中打印如下信息:
2021-05-27T20:06:08.218032Z 7 [ERROR] Semi-sync master failed on net_flush() before waiting for slave reply
2021-05-27T20:06:08.218073Z 7 [Note] Stop semi-sync binlog_dump to slave (server_id: 103)
2021-05-27T20:06:08.218172Z 7 [Note] Aborted connection 7 to db: 'unconnected' user: 'repl' host: '192.168.112.103' (Found net error)
2021-05-27T20:06:18.218929Z 5 [Warning] Timeout waiting for reply of binlog (file: mysql-bin.000025, pos: 1377), semi-sync up to file mysql-bin.000025, position 1097.
2021-05-27T20:06:18.219076Z 5 [Note] Semi-sync replication switched OFF.
  1. 在Slave执行start slave后,主的insert操作很快就能返回,此时,两个状态的值也变为“ON”了。同时,主的mysql.err中会打印如下信息:
2021-05-27T20:07:26.327396Z 8 [Note] Start binlog_dump to master_thread_id(8) slave_server(102), pos(mysql-bin.000025, 817)
2021-05-27T20:07:26.327450Z 8 [Note] Start semi-sync binlog_dump to slave (server_id: 102), pos(mysql-bin.000025, 817)
2021-05-27T20:07:26.424521Z 0 [Note] Semi-sync replication switched ON at (mysql-bin.000025, 1377)
2021-05-27T20:07:33.418389Z 9 [Note] Start binlog_dump to master_thread_id(9) slave_server(103), pos(mysql-bin.000025, 1097)
2021-05-27T20:07:33.418439Z 9 [Note] Start semi-sync binlog_dump to slave (server_id: 103), pos(mysql-bin.000025, 1097)
4、其他变量说明
4.1 环境变量(show variables like ‘%Rpl%’;)
mysql>  show variables like '%Rpl%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 10000      |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
| rpl_stop_slave_timeout                    | 31536000   |
+-------------------------------------------+------------+
7 rows in set (0.00 sec)
  • rpl_semi_sync_master_wait_for_slave_count:MySQL 5.7.3引入的,该变量设置主需要等待多少个slave应答,才能返回给客户端,默认为1。
  • rpl_semi_sync_master_wait_no_slave:
    • ON,默认值,当状态变量Rpl_semi_sync_master_clients中的值小于rpl_semi_sync_master_wait_for_slave_count时,Rpl_semi_sync_master_status依旧显示为ON。
    • OFF,当状态变量Rpl_semi_sync_master_clients中的值于rpl_semi_sync_master_wait_for_slave_count时,Rpl_semi_sync_master_status立即显示为OFF,即异步复制。

简单来说,如果mysql架构是1主2从,2个从都采用了半同步复制,且设置的是rpl_semi_sync_master_wait_for_slave_count=2,如果其中一个挂掉了,对于rpl_semi_sync_master_wait_no_slave设置为ON的情况,此时显示的仍然是半同步复制,如果rpl_semi_sync_master_wait_no_slave设置为OFF,则会立刻变成异步复制。

4.2 状态变量(show status like ‘%Rpl_semi%’;)
mysql> show status like '%Rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 2     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 10    |
| Rpl_semi_sync_master_no_times              | 1     |
| Rpl_semi_sync_master_no_tx                 | 1     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 876   |
| Rpl_semi_sync_master_tx_wait_time          | 4383  |
| Rpl_semi_sync_master_tx_waits              | 5     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 5     |
+--------------------------------------------+-------+
14 rows in set (0.01 sec)
  • Rpl_semi_sync_master_clients:当前半同步复制从的个数,如果是一主多从的架构,并不包含异步复制从的个数。
  • Rpl_semi_sync_master_no_tx:从节点没有接收到的commit数
  • Rpl_semi_sync_master_yes_tx:从节点成功接收到的commit数

参考资料:

  1. https://www.cnblogs.com/kevingrace/p/10228694.html
  2. https://www.cnblogs.com/zero-gg/p/9057092.html
  3. 数据库系列之MySQL主从复制集群部署

转载请注明原文地址:https://blog.youkuaiyun.com/solihawk/article/details/117631056
文章会同步在公众号“牧羊人的方向”更新,感兴趣的可以关注公众号,谢谢!
在这里插入图片描述

MySQL半同步复制 所以,半同步复制最好在低延时的网络中使用。MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。当半同步复制发生超时(由rpl_semi_sync_master_timeout参数控制,默认为10000ms,即10s),会暂时关闭半同步复制,转而使用异步复制,也就是会自动降为异步工作。 阅读详情

相关推荐

【Mysql】Mysql 5.7半同步复制技术

文章目录一、复制架构衍生史二、半同步复制技术1.半同步复制具体特性:2.半同步复制潜在问题:三、MySQL 5.6半同步复制配置四、MySQL 5.7半同步复制的改进 原文链接 一、复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 在2000年,MySQL 3.23.15版本引入了Replication。Replication作为一种准实时同步方式,得到广泛应用。这个时候的Replicaton的实现涉及到两个线程,一个在Master,一个在Slave。Slave的I/O和SQL功能

AloneYue优快云 903

Semi-sync master failed on net_flush() before wait

BUG描述:Semi-sync master failed on net_flush() before waiting for slave replyMariaDB 10.0.25 Centos6.6这是7月7下午4点因网络抖动,发生的半同步复制hang住的一个BUG。当时的现象就是主库无法写入,从库IO Thread线程挂起,与主库失连。错误日志截图当时的报警信息截图监控图后立即关闭半同步复制,...

weixin_34224941的博客 510

SAP传输请求全流程详解:从SE10创建到STMS跨环境部署(附常见错误排查)

本文详细解析了SAP传输请求的全流程,从SE10创建到STMS跨环境部署,并提供了常见错误排查方法。涵盖工作台请求、定制请求等类型,以及STMS传输原理和实战操作技巧,帮助用户高效管理SAP系统变更。

weixin_29214335的博客 142

MySQL 8 复制(二)—— 半同步复制

简介、性能提升、数据一致性、管理接口、在 MySQL 8 上安装配置半同步复制、测试

wzy0623的专栏 7727

保姆级教程:用STM32CubeMX配置GD32的CAN总线(含异常处理)

本文提供了一份详细的STM32CubeMX配置GD32 CAN总线开发指南,涵盖从HAL库移植到异常处理的全过程。重点解析GD32与STM32在CAN总线初始化、报文发送优先级处理等方面的关键差异,并提供优化代码维护与版本控制的实用策略,帮助开发者高效完成项目迁移。

onion的博客 826

STM32F103+AX58100 EtherCAT从站SPI移植实战:CubeMX配置避坑指南

本文详细介绍了STM32F103与AX58100 EtherCAT从站控制器的SPI接口移植实战,重点解析CubeMX配置中的关键参数与常见陷阱。内容涵盖硬件连接规范、SPI模式设置、中断优先级规划及协议栈对接技巧,帮助开发者高效实现工业自动化领域的实时通信方案。特别强调CPOL/CPHA配置与AX58100的匹配要求,避免数据错位问题。

weixin_29230865的博客 330

MySQL 5.7半同步复制技术

一、复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 在2000年,MySQL 3.23.15版本引入了Replication。Replication作为一种准实时同步方式,得到广泛应用。这个时候的Replicaton的实现涉及到两个线程,一个在Master,一个在Slave。Slave的I/O和SQL功能是作为一个线程,从Master获取到event后直接...

weixin_30632899的博客 201

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 597

MySQL复制之半同步

记录备忘 参考博文:https://blog.youkuaiyun.com/wzy0623/article/details/90267132 一、概述 主从复制主要分三种类型:异步、半同步、同步。 异步复制:主库提交事务时,将事件写入它的二进制日志,而从库在准备就绪时请求它们。主库无需等待从库的ACK回复,直接提交事务并返回客户端。异步复制不确保所有事件都能到达从库,无法保证数据完整性。 半同步复制:介于异步和完全同步复制之间。主库仅等待至少一个从库接收并记录事件。它不会等待所有从库确认收到,并且从库只需要确

半清半醒半明白 1817

云架构师进阶【SAP迁移方案设计】手把手教您玩转SAP上云

一,项目背景介绍 今天又接到了北京某制造企业SAP迁移的场景,先简单说明一下,好好的SAP在运行着为什么要做迁移这类大动作呢?众所周知SAP的ERP是企业的绝对核心系统,尤其对于制造业更是核心的系统,这样一套核心系统还是生产环境在迁移的过程中必然要面临比较大的挑战,如果有任何问题的话,都会对企业的绩效产生很大的影响。 经过跟客户沟通才得知,客户的SAP原来的系统是托管在运营商机房里,近期感染了勒索病毒,导致业务宕机,SAP应用服务器无法启动,仅有的数据库服务器可以运行。基于上述情况公司领导当机立断决定迅

bdsh818的博客 4220

YOLO26改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv11的检测头变化详解

在目标检测领域,小目标检测一直是一个具有挑战性的问题。算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在中添加小目标检测层,以提高对小目标的检测能力。原始模型结构如下: 二、有效特征层对应的检测头类别 2.1 P3/8 - small检测头 原始模型中的对应的检测头主要用于检测相对较小的目标。其特征图大小相对较大,空间分辨率较高。 适合检测尺寸大概在到像素左右的目标。 2.2 P4/16 - medium检测头 这个检测头对应的经过了更多的下采样操作,相比P3/

Limiiiing的博客 348

mysql5.7 开启增强半同步复制

前提是主从异步复制环境要提前搭建好,然后再开启mysql增强半同步 环境:mysql5.7.26 主从异步复制早已部署好。 1.加载plugin插件 建议master和slave上全部执行(考虑到MHA的主从自动切换的环境) 在主库安装semisync_master.so和semisync_slave.so插件: mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; mysql> INSTALL

HD243608836的博客 1479

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2394

十三、MySQL基于GTID的半同步复制

这三步之间是异步的。异步复制的优点是主库不需要关心备库的状态,主库不保证事务被传输到从库,如果主库崩溃,某些事务可能还未发送到从库,切换后可能导致事务的丢失。mysql半同步复制是以插件形式实现的,插件由Google提供,具体位/usr/lib64/mysql/plugin/下,一个是master用的semisync_master.so,一个是slave用的semisync_slave.so,要使用半同步复制,要在主从分别安装相应的插件,并且通过参数来控制半同步复制。

爱吃西红柿的博客 1666

高通8155源码下载与Android源码编译

一.下载代码 高通下载源码位置: Qualcomm CreatePoint 注册账号,然后登入 可以先选择edit -> infotainment -> sa8155 -> favorites, 点击View TOC就可以过滤出sa8155所有的信息目录.如下图 拉取代码链接在ChipCode中,点击进去可以看到所有的基线版本,选择你需要下载的版本点进去,如sa8155p-la-1-0_ap_standard_oem,把高通专有代码和开源代码都下载到本机. 1..

Johnny2004的专栏 7675

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

替代MySQL半同步复制,Meta技术团队推出MySQL Raft共识引擎

MySQL Raft是MySQL数据库中一种基于Raft协议的分布式一致性复制机制。

mengyidan的专栏 7339

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Mysql之半同步复制

Mysql数据库复制默认的方式是异步复制,但异步复制的不足之处是主库把event写入二进制日志后,并不知道从库是否已经接受并应有了。在异步模式下,如果主库崩溃,很有可能在主库中已经提交的事务,并没有传到任何一台从库服务器上,在高可用集群架构下做主备切换,就会造成新的主库丢失数据的现象。从Mysql5.5版本之后引入了半同步复制功能,需要主从服务器均安装半同步复制插件,才能开启该复制功能。在该功能下,确保从库接受了主库传递过来的binlog内容已经写入到自己的relay log里面了,才会通知主库上面的等待线

月生的静心苑 2456

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MySQL数据库集群实战———MySQL半同步复制、全同步复制(组复制)

文章目录一、MySQL复制1.1 MySQL几个同步模式概念:1.2 MySQL半同步复制技术1.3 半同步复制具体特性二、半同步复制的配置三、全同步复制(组复制) 一、MySQL复制 1.1 MySQL几个同步模式概念: 1、 异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,不关心从库是否已经接...

ranrancc_的博客 2325

mysql半同步复制

半同步复制通过 “主库等待至少一个从库确认日志接收” 的机制,在性能与数据安全间取得了平衡,是生产环境核心业务的首选复制模式。主从库同时安装并启用半同步插件;合理设置超时时间(根据网络延迟调整);通过状态变量监控同步模式和确认次数。相比异步复制,半同步以微小的性能损耗(额外 10-100ms 延迟)显著降低了数据丢失风险;相比全同步,它又避免了因等待所有从库导致的性能灾难。

埃泽漫笔 854

MySQL半同步复制浅析

MySQL半同步复制流程

qq_35448165的博客 1362

Mysql数据库的半同步复制

一、半同步复制的介绍 我们目前MySQL默认的复制模式是异步复制,主不关心从的数据到哪里了,主宕了,做切换,如果从落后太多,就会导致丢失的数据太多; 从5.5版本开始,MySQL引入了半同步复制; 简单理解:一个事务提交时,日志至少要保证有一个从接收到,那么它的提交才能继续; 异步复制可能会造成数据丢失 半同步复制就是为了解决数据丢失的问题 master做完一步等一步,需要等待至少一个slave节点完成复制之后才开始进行下一个操作; master做大事件的时候,需要进行半同步,master节点等待一个节点即

qq_46089299的博客 454

数据库:mysql的半同步复制

本文主要介绍由主从复制演变的半同步复制,介绍了半同步复制的原理以及作用,并通过实验实战实现了半同步复制

云计算之路 1668
上一篇: 大数据系列之Spark Streaming和Structured Streaming对比
下一篇: 数据库系列之MySQL基于MySQL-proxy实现读写分离
solihawk
博客等级 码龄17年 7995粉丝 184原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值