精华内容
下载资源
问答
  • //成功接收一段数据会信号通知 connect(msocket,SIGNAL(bytesRead(qint64)),this, SLOT(send_file_content())); } Client::~Client() { delete ui; } //接收数据槽函数 void Client::read_data() { if(file...
  • 接收短信 Get 输入参数:CorpID-帐号,Pwd-密码 输出参数:字串,具体字串;-1、帐号未注册;-2、其他错误;-3、密码错误 返回格式:||手机号#上行内容#发送时间#子号||手机号#上行内容#发送时间#子号…… ...
  • 用QQ给好友发送word文档,没有提示“对方成功接收”,但问地方他表示已经收到了,会存在这种情况吗?
  • VB实现聊天程序中的文件传输-支持断点续传,此程序可以用来与对方互相收/发文件,支持断点续传和简单聊天功能.  使用方法分为两步:  1.任选一台PC建立主机,等待客户端连接  建立主机方法:让程序的IP输入框为空,...
  • 200是OK(一切正常),206是Partial Content(服务器已经成功处理了部分内容),416 Requested Range Not Satisfiable(对方(客户端)发来的Range 请求头不合理)。一般处理单线程处理: 客户端发来请求 ——-> ...
  • 1.mysql半同步复制的基础知识 半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回 MySQL半同步,MySQL5.5由Google贡献的补丁才开始支持半同步复制...告诉对方已经接收到完毕,...

    1.mysql半同步复制的基础知识

    半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回

    MySQL半同步,MySQL5.5由Google贡献的补丁才开始支持半同步复制(semi Replication)模式,该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

    主从同步可以同步多个数据库,也可以设置为一个数据库同步,如果设置一个数据库,在从服务器上其他数据可以写操作
    半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式

    MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

    异步复制可能会造成数据丢失
    半同步复制就是为了解决数据丢失的问题

    master做完一步等一步,需要等待至少一个slave节点完成复制之后才开始进行下一个操作
    master做大事件的时候,需要进行半同步,master节点等待一个节点即可
    当半同步出现问题的时候会自动切换为异步同步
    银行数据库全同步,master节点等待集群中的所有全部节点
    数据库要避免慢查询问题,会造成延迟,占用数据库的IO
    优点:提高了数据完整性,数据至少会存在两个节点(master节点和一个slave节点)
    加了消息确认ACK,不会造成数据丢失
    出现问题会自动降低为异步复制
    

    2.实验环境

    此实验是在上一篇的异步复制的基础上做的,因此不再赘述
    在这里插入图片描述
    在这里插入图片描述

    3.mysql半同步复制的过程如下

    • (1)在server1(master节点)上安装半同步复制的插件
    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';安装半同步模块
    

    在这里插入图片描述

    • (2)在server2(slave节点)上安装半同步复制的插件
    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';安装半同步模块
    

    在这里插入图片描述

    • (3)在server1上查看插件
    SELECT PLUGIN_NAME, PLUGIN_STATUS设置
           FROM INFORMATION_SCHEMA.PLUGINS
           WHERE PLUGIN_NAME LIKE '%semi%';
    

    在这里插入图片描述

    • (4)在server2查看插件
    SELECT PLUGIN_NAME, PLUGIN_STATUS设置
           FROM INFORMATION_SCHEMA.PLUGINS
           WHERE PLUGIN_NAME LIKE '%semi%';
    

    在这里插入图片描述

    • (5)在server1上激活插件
    SET GLOBAL rpl_semi_sync_master_enabled = 1开启半同步,也就是激活插件
    

    在这里插入图片描述

    • (6)在server2上激活插件
    SET GLOBAL rpl_semi_sync_slave_enabled = 1开启
    STOP SLAVE IO_THREAD;关闭
    START SLAVE IO_THREAD;开启
    

    从库重启io进程,激活插件之后必须要重启io进程,否则不会生效,如果重启不了的话就说明两端的数据不同步
    在这里插入图片描述

    • (7)server1:查看主库的变量的值,可以查看到延迟时间(10000指10000毫秒,也就是10秒)
    SHOW VARIABLES LIKE 'rpl_semi_sync%';查看变量的值
    show status like '%rpl%';查看变量的状态
    

    在这里插入图片描述
    在这里插入图片描述

    • (8)server2:
    SHOW VARIABLES LIKE 'rpl_semi_sync%';
    STOP SLAVE IO_THREAD;关闭从库进行测试
    

    在这里插入图片描述

    serve2先关闭io进程
    在这里插入图片描述

    • (9)server1:
    use westos
    insert into usertb values ('user4','123');
    等待10s,没有接收到slave的ack请求,自动转换为异步复制,需要等待一个节点完成所有的复制
    insert into usertb values ('user5','123');发现特别快,已经变成异步了
    show status like '%rpl%';发现半同步已经关闭OFF
    

    在这里插入图片描述
    有10秒的延迟,这是因为从库的io进程关闭了,不能及时的写入数据;主库等待10秒之后从库还没有起来,主库不再等待直接写入
    等待完毕,10秒后直接写入
    再次插入数据,主库直接写入,没有延迟
    在这里插入图片描述
    这是因为:半同步复制再一次失败后会自动切换成异步复制,从库进程起来之后会将没有做的事情再做一遍

    • (10)server2:
    START SLAVE IO_THREAD;开启
    show processlist;
    use westos
    select * from usertb;发现所有的数据都过来了(基于gtid),接着上一次的事情做
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    关闭server2上面的slave,然后在server1上面插入数据
    sever1(master)等待10s发现server2(slave)没有发送ACK消息,自动变为异步同步,
    然后在server2上把slave上面开启,会把之前的数据读过来
    

    也就是说只要从库的io进程恢复工作就会立即同步没有同步的数据
    半同步复制失败后会自动切换成异步复制,从库进程起来之后会检测主从库数据是否同步;若不同步,将会采用异步复制的方式同步数据
    将插件安装在数据库中是临时的,退出重新登陆会失效,永久的可以将配置写在配置文件中

    展开全文
  • 1. 了解mysql半同步复制 1)半同步复制:一主多从...然后会给主服务器一个反馈,告诉对方已经接收到完毕, 这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式, 直

    1. 了解mysql半同步复制

    1)半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回

    MySQL半同步,MySQL5.5由Google贡献的补丁才开始支持半同步复制(semi Replication)模式,
    该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay log)里,
    然后会给主服务器一个反馈,告诉对方已经接收到完毕,
    这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,
    直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。
    

    2)半同步复制的原理:

    • master做完一步等一步,需要等待至少一个slave节点完成复制之后才开始进行下一个操作
    • master做大事件的时候,需要进行半同步,master节点等待一个节点即可
    • 当半同步出现问题的时候会自动切换为异步同步
    • 数据库要避免慢查询问题,会造成延迟,占用数据库的IO
    • 优点:提高了数据完整性,数据至少会存在两个节点(master节点和一个slave节点)
    • 加了消息确认ACK,不会造成数据丢失
    • 出现问题会自动降低为异步复制

    注意:

    • 半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式
    • 异步复制可能会造成数据丢失,半同步复制就是为了解决数据丢失的问题。

    2. 配置半同步复制

    实验准备:需要之前的gtid异步复制作为底

    1)在主节点上安装半同步复制的插件:

    [root@master ~]# mysql -uroot -pServer+147
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 5.7.24-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    Query OK, 0 rows affected (0.01 sec)
    

    2)在从节点安装半同步复制的插件:

    [root@slave ~]#  mysql -uroot -pServer+147
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 5.7.24 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
    Query OK, 0 rows affected (0.01 sec)
    

    3)主服务器上查看插件:

    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.01 sec)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.01 sec)
    

    (4)在从服务器查看插件:

    mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
        -> FROM INFORMATION_SCHEMA.PLUGINS
        -> WHERE PLUGIN_NAME LIKE '%semi%';
    +---------------------+---------------+
    | PLUGIN_NAME         | PLUGIN_STATUS |
    +---------------------+---------------+
    | rpl_semi_sync_slave | ACTIVE        |
    +---------------------+---------------+
    1 row in set (0.00 sec)
    

    5)主服务器上激活插件:

    mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
    Query OK, 0 rows affected (0.00 sec)
    

    6)从服务器上激活插件:
    从库重启io进程,激活插件之后必须要重启io进程,否则不会生效,如果重启不了的话就说明两端的数据不同步

    mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> STOP SLAVE IO_THREAD;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> START SLAVE IO_THREAD;
    Query OK, 0 rows affected (0.00 sec)
    

    7)查看主库的变量的值,可以查看到延迟时间(10000指10000毫秒,也就是10秒):

    • 查看变量的值:
    mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
    +-------------------------------------------+------------+
    | 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 |
    +-------------------------------------------+------------+
    6 rows in set (0.00 sec)
    
    • 查看变量的状态:
    mysql> show status like '%rpl%';
    +--------------------------------------------+-------+
    | Variable_name                              | Value |
    +--------------------------------------------+-------+
    | Rpl_semi_sync_master_clients               | 1     |
    | Rpl_semi_sync_master_net_avg_wait_time     | 0     |
    | Rpl_semi_sync_master_net_wait_time         | 0     |
    | Rpl_semi_sync_master_net_waits             | 0     |
    | Rpl_semi_sync_master_no_times              | 0     |
    | Rpl_semi_sync_master_no_tx                 | 0     |
    | Rpl_semi_sync_master_status                | ON    |
    | Rpl_semi_sync_master_timefunc_failures     | 0     |
    | Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
    | Rpl_semi_sync_master_tx_wait_time          | 0     |
    | Rpl_semi_sync_master_tx_waits              | 0     |
    | Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
    | Rpl_semi_sync_master_wait_sessions         | 0     |
    | Rpl_semi_sync_master_yes_tx                | 0     |
    +--------------------------------------------+-------+
    14 rows in set (0.01 sec)
    

    8)查看从库变量的值:

    mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | rpl_semi_sync_slave_enabled     | ON    |
    | rpl_semi_sync_slave_trace_level | 32    |
    +---------------------------------+-------+
    2 rows in set (0.01 sec)
    

    3.测试

    1)关闭从库io线程:

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

    2)主库建立数据库testfile:

    mysql> CREATE DATABASE testfile;
    
    
    • 有10秒的延迟,这是因为从库的io进程关闭了,不能及时的写入数据;主库等待10秒之后从库还没有起来,主库不再等待直接写入

    3)再次插入数据,主库直接写入,没有延迟:

    mysql> CREATE DATABASE testfiles;
    Query OK, 1 row affected (0.00 sec)
    
    • 这是因为:半同步复制再一次失败后会自动切换成异步复制,从库进程起来之后会将没有做的事情再做一遍

    4)从库重新开启:发现所有的数据都过来了(基于gtid),接着上一次的事情做

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | testfile           |
    | testfiles          |
    +--------------------+
    6 rows in set (0.01 sec)
    

    总结:

    • 也就是说只要从库的io进程恢复工作就会立即同步没有同步的数据;
    • 半同步复制失败后会自动切换成异步复制,从库进程起来之后会检测主从库数据是否同步;
    • 若不同步,将会采用异步复制的方式同步数据;
    • 将插件安装在数据库中是临时的,退出重新登陆会失效,永久的可以将配置写在配置文件中。
    展开全文
  • 1.mysql半同步复制的基础知识 ...log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少

    1.mysql半同步复制的基础知识

    半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回

    MySQL半同步,MySQL5.5由Google贡献的补丁才开始支持半同步复制(semi
    Replication)模式,该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay
    log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

    主从同步可以同步多个数据库,也可以设置为一个数据库同步,如果设置一个数据库,在从服务器上其他数据可以写操作
    半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式

    MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

    异步复制可能会造成数据丢失
    半同步复制就是为了解决数据丢失的问题

    master做完一步等一步,需要等待至少一个slave节点完成复制之后才开始进行下一个操作

    master做大事件的时候,需要进行半同步,master节点等待一个节点即可
    当半同步出现问题的时候会自动切换为异步同步
    银行数据库全同步,master节点等待集群中的所有全部节点
    数据库要避免慢查询问题,会造成延迟,占用数据库的IO
    
    优点:提高了数据完整性,数据至少会存在两个节点(master节点和一个slave节点)
    加了消息确认ACK,不会造成数据丢失
    出现问题会自动降低为异步复制
    

    2.实验环境

    此实验是在上一篇的异步复制的基础上做的,因此不再赘述
    在这里插入图片描述
    在这里插入图片描述
    (1)在server1(master节点)上安装半同步复制的插件

    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';安装半同步模块
    

    在这里插入图片描述

    (2)同理在server2上安装半同步模块

    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';安装半同步模块
    

    (3)在server1上查看插件

    SELECT PLUGIN_NAME, PLUGIN_STATUS设置
           FROM INFORMATION_SCHEMA.PLUGINS
           WHERE PLUGIN_NAME LIKE '%semi%';
    

    在这里插入图片描述

    (4)在server2上查看插件

    SELECT PLUGIN_NAME, PLUGIN_STATUS设置
           FROM INFORMATION_SCHEMA.PLUGINS
           WHERE PLUGIN_NAME LIKE '%semi%';
    

    (5)在server1上激活插件

    SET GLOBAL rpl_semi_sync_master_enabled = 1开启半同步,也就是激活插件
    

    在这里插入图片描述
    (6)在server2上激活插件

    SET GLOBAL rpl_semi_sync_slave_enabled = 1开启
    STOP SLAVE IO_THREAD;关闭
    START SLAVE IO_THREAD;开启
    

    库重启io进程,激活插件之后必须要重启io进程,否则不会生效,如果重启不了的话就说明两端的数据不同步
    在这里插入图片描述
    在这里插入图片描述
    (7)server1:查看主库的变量的值,可以查看到延迟时间(10000指10000毫秒,也就是10秒)

    SHOW VARIABLES LIKE 'rpl_semi_sync%';查看变量的值
    show status like '%rpl%';查看变量的状态
    

    在这里插入图片描述
    在这里插入图片描述
    (8)server2:

    SHOW VARIABLES LIKE 'rpl_semi_sync%';
    STOP SLAVE IO_THREAD;关闭从库进行测试
    

    在这里插入图片描述
    在这里插入图片描述

    serve2先关闭io进程
    

    在这里插入图片描述
    (9)server1:

    use westos
    insert into usertb values ('user4','123');
    等待10s,没有接收到slave的ack请求,自动转换为异步复制,需要等待一个节点完成所有的复制
    insert into usertb values ('user5','123');发现特别快,已经变成异步了
    show status like '%rpl%';发现半同步已经关闭OFF
    

    在这里插入图片描述
    10秒的延迟,这是因为从库的io进程关闭了,不能及时的写入数据;主库等待10秒之后从库还没有起来,主库不再等待直接写入,等待完毕,10秒后直接写入 再次插入数据,主库直接写入,没有延迟
    在这里插入图片描述
    10)server2:

    START SLAVE IO_THREAD;开启
    show processlist;
    use westos
    select * from usertb;发现所有的数据都过来了(基于gtid),接着上一次的事情做
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • MySQL半同步,该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,...

    前言:相比异步复制提高了数据的完整性,因为增加了ack信号确认是否正常。

    1.介绍mysql半同步复制的基础知识

    半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回

    MySQL半同步,该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

    主从同步可以同步多个数据库,也可以设置为一个数据库同步,如果设置一个数据库,在从服务器上其他数据可以写操作
    半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式

    MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

    异步复制可能会造成数据丢失 半同步复制就是为了解决数据丢失的问题

    master做完一步等一步,需要等待至少一个slave节点完成复制之后才开始进行下一个操作
    master做大事件的时候,需要进行半同步,master节点等待一个节点即可
    当半同步出现问题的时候会自动切换为异步同步
    银行数据库全同步,master节点等待集群中的所有全部节点
    数据库要避免慢查询问题,会造成延迟,占用数据库的IO
    优点:提高了数据完整性,数据至少会存在两个节点(master节点和一个slave节点)
    加了消息确认ACK,不会造成数据丢失
    出现问题会自动降低为异步复制

    2. server2:主机的配置

    mysql -p 
    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  ##安装半同步模块
    Query OK, 0 rows affected (0.02 sec)
     
    mysql> show variables like 'rpl%';
    +-------------------------------------------+------------+
    | Variable_name                             | Value      |
    +-------------------------------------------+------------+
    | rpl_read_size                             | 8192       |
    | rpl_semi_sync_master_enabled              | OFF        |
    | 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   |
    +-------------------------------------------+------------+
    8 rows in set (0.01 sec)
    mysql> SET GLOBAL rpl_semi_sync_master_timeout = 10000;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show variables like 'rpl%';
    +-------------------------------------------+------------+
    | Variable_name                             | Value      |
    +-------------------------------------------+------------+
    | rpl_read_size                             | 8192       |
    | 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   |
    +-------------------------------------------+------------+
    8 rows in set (0.00 sec)
    mysql> SHOW PLUGINS;
     INNODB_SESSION_TEMP_TABLESPACES | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
    mysql> create database test;
    Query OK, 1 row affected (10.01 sec)
    mysql> insert into test.user_tb value('user1',111);
    Query OK, 1 row affected (0.01 sec)
    mysql> insert into test.user_tb value('user2',111);
    Query OK, 1 row affected (0.00 sec)
    
    

    slave的配置
    在这里插入图片描述

    mysql> show variables like 'rpl%';  
    +---------------------------------+----------+
    | Variable_name                   | Value    |
    +---------------------------------+----------+
    | rpl_read_size                   | 8192     |
    | rpl_semi_sync_slave_enabled     | OFF      |
    | rpl_semi_sync_slave_trace_level | 32       |
    | rpl_stop_slave_timeout          | 31536000 |
    +---------------------------------+----------+
    4 rows in set (0.01 sec)
    mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;  ##开启半同步,激活插件
    Query OK, 0 rows affected (0.00 sec)
    mysql> show variables like 'rpl%';
    +---------------------------------+----------+
    | Variable_name                   | Value    |
    +---------------------------------+----------+
    | rpl_read_size                   | 8192     |
    | rpl_semi_sync_slave_enabled     | ON       |
    | rpl_semi_sync_slave_trace_level | 32       |
    | rpl_stop_slave_timeout          | 31536000 |
    +---------------------------------+----------+
    4 rows in set (0.01 sec)
    

    测试:slave没开启时 在master上测试

    mysql> show status like 'rpl%';
    +--------------------------------------------+-------+
    | Variable_name                              | Value |
    +--------------------------------------------+-------+
    | Rpl_semi_sync_master_clients               | 1     |
    | Rpl_semi_sync_master_net_avg_wait_time     | 0     |
    | Rpl_semi_sync_master_net_wait_time         | 0     |
    | Rpl_semi_sync_master_net_waits             | 0     |
    | Rpl_semi_sync_master_no_times              | 1     |
    | Rpl_semi_sync_master_no_tx                 | 4     |同步失败
    | Rpl_semi_sync_master_status                | ON    |
    | Rpl_semi_sync_master_timefunc_failures     | 0     |
    | Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
    | Rpl_semi_sync_master_tx_wait_time          | 0     |
    | Rpl_semi_sync_master_tx_waits              | 0     |
    | Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
    | Rpl_semi_sync_master_wait_sessions         | 0     |
    | Rpl_semi_sync_master_yes_tx                | 0     |
    +--------------------------------------------+-------+
    14 rows in set (0.00 sec)
    # 结果显示有四条sql语句没有同步过去,因为在slave上没有开启io 线程。
    

    开启之后 在主机上插入一条语句,

    mysql> STOP SLAVE IO_THREAD;
     
    mysql> START SLAVE IO_THREAD; ##重启IO线程
     
    mysql> show status like 'rpl%';
    +--------------------------------------------+-------+
    | Variable_name                              | Value |
    +--------------------------------------------+-------+
    | Rpl_semi_sync_master_clients               | 1     |
    | Rpl_semi_sync_master_net_avg_wait_time     | 0     |
    | Rpl_semi_sync_master_net_wait_time         | 0     |
    | Rpl_semi_sync_master_net_waits             | 1     |
    | Rpl_semi_sync_master_no_times              | 1     |
    | Rpl_semi_sync_master_no_tx                 | 4     |之前的同步失败
    | Rpl_semi_sync_master_status                | ON    |
    | Rpl_semi_sync_master_timefunc_failures     | 0     |
    | Rpl_semi_sync_master_tx_avg_wait_time      | 442   |
    | Rpl_semi_sync_master_tx_wait_time          | 442   |
    | Rpl_semi_sync_master_tx_waits              | 1     |
    | Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
    | Rpl_semi_sync_master_wait_sessions         | 0     |
    | Rpl_semi_sync_master_yes_tx                | 1     | #表示同步成功
    +--------------------------------------------+-------+
    14 rows in set (0.00 sec)
     
    

    测试:
    1、关闭server2上面的slave,然后在server1上面插入数据
    2、sever1(master)等待10s发现server2(slave)没有发送ACK消息,自动变为异步同步,
    3、然后在server2上把slave上面开启,会把之前的数据读过来
    也就是说只要从库的io进程恢复工作就会立即同步没有同步的数据
    半同步复制失败后会自动切换成异步复制,从库进程起来之后会检测主从库数据是否同步;若不同步,将会采用异步复制的方式同步数据

    展开全文
  • //sockhelp.h#ifndef _vx #define _vx #ifdef __cplusplus extern "C" ... * @fd:文件描述符 ... * @buf:接收字节缓冲区 ... * 成功返回指定字节数,失败返回-1,对方连接已经关闭,返回已经读取字节数&...
  • 1.mysql的半同步复制 (1)半同步的定义:半同步复制是一主多从模式,有一个从结点返回...告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模
  • 果发送成功并且对方已经收到;会触发发送成功的事件; 三:用户可以通过ITxServer.FileLog记录服务器的运行信息; 2 ) :TCPClient客户端,通过静态方法TxStart.startClient(服务器地址或网址, 服务器端口号)注册成功...
  • 每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown...
  • x-scan-v3.3-cn

    2013-09-23 21:36:56
    另外一种可能性是服务器本身对“文件不存在”返回的头部信息进行了更改,如果GET申请的文件不存在,服务器会自动指向一个“没有找到页面”的文档,所以无论文件是否存在,都不会将“404”返回,而是仍然返回成功信息...
  • 303.软盘上的文件打不开 304.软驱灯长亮 305.挽救坏软盘中的数据 306.写软盘零磁道损坏 307.找不到扇区或是错误的扇区 308.软盘坏道导致读写错误 309.软盘不易取出 310.软驱显示上一张软盘的内容 311.显示“磁盘未...
  • start_routine函数接收一个参数,是通过pthread_create的arg参数传递给它的,该参数的类型为void *,这个指针按什么类型解释由调用者自己定义。start_routine的返回值类型也是void *,这个指针的含义同样由调用者...
  • else if (FD_ISSET(Socket, &fdset)) {//返回处于就绪状态并且已经包含在fd_set结构中的描述字总数 return TRUE; } return FALSE; //返回零时(超时返回零) } //通过线程来开启服务器,因为accept...
  • 由于 TCP 交握机制的运作,收到一个红色小方块时,就必须传一个绿色小方块对方,告诉对方已经确实的收到了,接下来才能再传一个红色小方块过来。 若无提高 ACK 封包的优先权,在网路上传流量繁忙的时候,因为 ACK ...
  • 此函数会先去检测本地 hosts 文件,查看是否有对应 ip。 <p>PS: 这里有一个点,localhost 默认 ip 是 172.0.0.1,这是一个回路段,也叫换回接口。也就是不会发往服务器,是...
  • //超过一条完整小于第二条完整记录时,如果已经达到包头长度就先把包头保存下来,整个过程循环往复 while (totalLen) { //与QDataStream绑定,方便操作 QDataStream packet(m_buffer); packet.setVersion...
  • CISCO 技术大集合

    2013-05-22 01:07:13
    由于在Router1上端口Serial 0地址为192.200.10.5,192.200.10.4/30这个网属于直连的网,已经存在访问192.200.10.4/30的路径,所以不需要在Router1上添加静态路由。 Router1: ip route 192.1.0.64 255.255.255.192 ...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

对方已经成功接收文件