iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何解析sql_slave_skip_counter 参数的用法
  • 766
分享到

如何解析sql_slave_skip_counter 参数的用法

2023-06-06 03:06:42 766人浏览 八月长安
摘要

如何解析sql_slave_skip_counter 参数的用法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。这里浅析一下sql_slave_skip_coun

如何解析sql_slave_skip_counter 参数的用法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

这里浅析一下sql_slave_skip_counter的具体用法和意义!

set global sql_slave_skip_counter = N
This statement skips the next N events from the master. 
(即是跳过N个events,这里最重要的是理解event的含义!在mysql中,对于sql的 binary log 实际上是由一连串的event组成的一个组,即事务组。)
在备库上设置 global sql_slave_skip_counter =N 会跳过当前时间来自于master的之后N个事件,这对于恢复由某条SQL语句引起的从库复制有效. 此语句只在当slave threads是停止时才有效,否则将发生一条错误..每忽略一个事件,N 减一,直到N减为0!
When using this statement, it is important to understand that the binary log is actually organized as a sequence of groups known as event groups. Each event group consists of a sequence of events.
For transactional tables, an event group corresponds to a transaction.
For nontransactional tables, an event group corresponds to a single SQL statement.
Note
   A single transaction can contain changes to both transactional and nontransactional tables.When you use SET GLOBAL sql_slave_skip_counter to skip events and the result is in the middle of a group, the slave continues to skip events until it reaches the end of the group. Execution then starts with the next event group
### comment ###
   Setting this variable isn't like setting other server variables: you can't read the variable back again as @@sql_slave_skip_counter, and it isn't really a "global variable." Rather, it's a variable that only the slave thread reads.
  When you restart the slave threads again with START SLAVE, the slave skips statements and decrements the variable until it reaches 0, at which point it begins executing statements again. You can watch this happening by executing SHOW SLAVE STATUS, where the variable's value appears in the Skip_Counter column. This is the only place you can see its value.
  The effect is that the setting isn't persistent. If you set it to 1, start the slave, and the slave has an error in replication sometime later, the variable won't still be set to 1. It'll be 0. At that point, if you want the slave to skip the statement that caused the error, you'll have to set it to 1 again.

有关"SET GLOBAL sql_slave_skip_counter"的语法可以参考官方文档

测试环境:

rac3 主库

rac4 备库

测试之前保证主从无数据延时,保证数据一致!

1 使用含有 stop slave 的命令, 在主库上创建测试表,并使用shell 插入数据!

Mysql> create table tab_skip(id int);
Query OK, 0 rows affected (0.80 sec)

[root@rac3 mysql]#

 for i in {1..100}; 

   do 

    echo $i; 

    echo "insert into tab_skip(id) values($i)" | mysql -h227.0.0.1 test ; 

    sleep 1;

done;

在备库 使用 set global sql_slave_skip_counter=1;命令做测试

[root@rac4 mysql]# 

for i in {1..10}; 

do 

   echo $i; 

   echo "slave stop;set global sql_slave_skip_counter=1; slave start;show slave status\G" | mysql -h227.0.0.1 -P3306 test ; 

   sleep 2;

done;

分别在主库和备库上进行验证数据的完整性:

主库上面:

[root@rac3 mysql]# mysql
mysql> use test;                 
Database changed
mysql> select count(1) from tab_1;
+----------+
| count(1) |
+----------+
|      100 |
+----------+
1 row in set (0.00 sec)

备库上面,少了 10条数据!因为正是执行set global sql_slave_skip_counter=1;使备库执行sql replay的时候忽略了事件!

[root@rac4 mysql]# mysql
mysql> use test;
Database changed
mysql> select count(1) from tab_1;  
+----------+
| count(1) |
+----------+
|       90 |
+----------+
1 row in set (0.00 sec)

有网友测试的是在备库上执行没有stop slave 语句的命令,但是在5.5.18版本上面是不允许的!

[root@rac3 mysql]# for i in {1..100}; do echo $i; echo "insert into tab_2(id) values($i)" | mysql -h227.0.0.1 test ; sleep 2;done;   
1

....

100

在备库上执行,注:"set global sql_slave_skip_counter=1; slave start;show slave status\G"  没有stop slave 语句,报错!

[root@rac4 mysql]# for i in {1..10}; do echo $i; echo "set global sql_slave_skip_counter=1; slave start;show slave status\G" | mysql -h227.0.0.1 -P3306 test ; sleep 2;done;          
1
ERROR 1198 (HY000) at line 1: This operation cannot be perfORMed with a running slave; run STOP SLAVE first
2
ERROR 1198 (HY000) at line 1: This operation cannot be performed with a running slave; run STOP SLAVE first
3
ERROR 1198 (HY000) at line 1: This operation cannot be performed with a running slave; run STOP SLAVE first
4
ERROR 1198 (HY000) at line 1: This operation cannot be performed with a running slave; run STOP SLAVE first

使用 该参数能够解决从服务器sql 进程停止导致的数据库不同步,但是也有一定的风险,比如在高并发数据库环境下,可能会导致数据丢失!

另见另一位网友的测试实验(多少有些出入,他的可以不使用stop slave)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何解析sql_slave_skip_counter 参数的用法

本文链接: https://www.lsjlt.com/news/245969.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解析sql_slave_skip_counter 参数的用法
    如何解析sql_slave_skip_counter 参数的用法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。这里浅析一下sql_slave_skip_coun...
    99+
    2023-06-06
  • SpringCloud @FeignClient参数的用法解析
    目录SpringCloud @FeignClient 参数详解@FeignClient 注解常用参数SpringCloud @FeignClient 参数详解 今天因为工作中遇到Fe...
    99+
    2022-11-12
  • 参数校验Spring的@Valid注解用法解析
    参数校验Spring的@Valid注解 @Valid 注解通常用于对象属性字段的规则检测。 以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解。 那...
    99+
    2022-11-12
  • Python 解析参数的三种方法
    Let's go!我们以机器学习当中的调参过程来进行实践,有三种方式可供选择。第一个选项是使用 argparse,它是一个流行的 Python 模块,专门用于命令行解析;另一种方法是读取 JSON 文件,我们可以在其中放置所有超参数;第三种...
    99+
    2023-05-14
    代码 Python 参数
  • Python解析参数的三种方法详解
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了解析参数的三种方法相关问题,第一个选项是使用 argparse,它是一个流行的 Python 模块,专门用于命令行解析;另一种方法是读取 JSON 文件,我们可以在其中放置所有超...
    99+
    2022-08-08
    python
  • 如何进行SpringMVC在Controller层方法的参数解析
    本篇文章为大家展示了如何进行SpringMVC在Controller层方法的参数解析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用版本:spring-boot: 2.1.6.RELEASEspi...
    99+
    2023-06-22
  • C/C++中可变参数的用法详细解析
    可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等。可变参数是实现printf(),sprintf()...
    99+
    2022-11-15
    C 可变参数
  • 如何分析CLR Via的方法及参数
    如何分析CLR Via的方法及参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通常我们在使用方法的时候,方法的参数是按值传递的,如果传递的参数是引用类型的对象,是将引用对象的...
    99+
    2023-06-17
  • Python实现解析参数的三种方法详解
    目录先决条件使用 argparse使用 JSON 文件使用 YAML 文件最后的想法今天我们分享的主要目的就是通过在 Python 中使用命令行和配置文件来提高代码的效率 Let&#...
    99+
    2022-11-11
  • sklearn常用的API参数解析:sklearn.linear_model.LinearRegression
    本篇内容介绍了“sklearn常用的API参数解析:sklearn.linear_model.LinearRegression”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!...
    99+
    2023-06-01
  • C#命令行参数解析库System.CommandLine的使用方法
    这篇文章主要介绍了C#命令行参数解析库System.CommandLine的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。命令行参数平常在日常的开发过程中,会经常用到...
    99+
    2023-06-15
  • 关于SpringMVC在Controller层方法的参数解析详解
    目录自定义参数解析器实现效果实现和配置Spring提供解析器一些使用Tricky总结使用版本: spring-boot: 2.1.6.RELEASE sping: 5.1.8.RE...
    99+
    2022-11-12
  • 如何解析有关C++参数问题
    本篇文章为大家展示了如何解析有关C++参数问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。所谓C++参数的说明,其实是对指定应用而言,它可以是赋予的常数值,在泛指时,它可以是一种变量,用来控制随其...
    99+
    2023-06-17
  • getopts解析shell脚本命令行参数的方法
    getopts命令格式 getopts optstring name [arg] optstring为命令行所有选项组成的字符串,每个字母代表一个选项。如果字母后有冒号:,表明该选项需要选择参数。比如说,执行getopt...
    99+
    2023-01-12
    shell脚本命令行参数 getopts解析shell脚本命令行参数 shell脚本命令行
  • 如何进行处理Python对象参数的解析
    这期内容当中小编将会给大家带来有关如何进行处理Python对象参数的解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Python对象中使用C语言编写的扩展模块,必须将其编译成动态链接库的形式,通常使用...
    99+
    2023-06-17
  • 关于动态参数使用@PathVariable的解析
    目录动态参数使用@PathVariable解析在Controller层的代码如下获取路径中的参数值@PathVariable中的value1.@PathVariableStringn...
    99+
    2022-11-13
  • linux shell 解析命令行参数及while getopts用法小结
    目录linux shell 解析命令行参数|getpotsgetpotslinux shell 解析命令行参数|getpots demo: #!/bin/bash func() { echo "Usage:" ...
    99+
    2022-06-05
    linux shell 命令行参数 while getopts用法 shell getopts
  • 如何解决MyBatis中Enum字段参数解析问题
    小编给大家分享一下如何解决MyBatis中Enum字段参数解析问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基础Class和TypeHandlerMyBati...
    99+
    2023-06-20
  • 详解如何在SpringBoot中自定义参数解析器
    目录前言1.自定义参数解析器2.PrincipalMethodArgumentResolver3.RequestParamMapMethodArgumentResolver4.小结前...
    99+
    2022-11-13
  • SpringAOP如何获取方法参数上的注解
    SpringAOP获取方法参数上的注解 一、示例 ① 如下代码,自定义一个参数注解@Test,并将其使用到方法参数上,用于标注需要检验的参数 @Target(PARAMETER...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作