真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql5.7.19的半同步復(fù)制問題分享-創(chuàng)新互聯(lián)

===

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供米東網(wǎng)站建設(shè)、米東做網(wǎng)站、米東網(wǎng)站設(shè)計、米東網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、米東企業(yè)網(wǎng)站模板建站服務(wù),十載米東做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

異步復(fù)制(Asynchronous replication)

MySQL默認的復(fù)制即是異步的,主庫在執(zhí)行完客戶端提交的事務(wù)后會立即將結(jié)果返給給客戶端,并不關(guān)心從庫是否已經(jīng)接收并處理,這樣就會有一個問題,主如果crash掉了,此時主上已經(jīng)提交的事務(wù)可能并沒有傳到從上,如果此時,強行將從提升為主,可能導(dǎo)致新主上的數(shù)據(jù)不完整。

全同步復(fù)制(Fully synchronous replication)

指當(dāng)主庫執(zhí)行完一個事務(wù),所有的從庫都執(zhí)行了該事務(wù)才返回給客戶端。因為需要等待所有從庫執(zhí)行完該事務(wù)才能返回,所以全同步復(fù)制的性能必然會收到嚴重的影響。

半同步復(fù)制(Semisynchronous replication)

介于異步復(fù)制和全同步復(fù)制之間,主庫在執(zhí)行完客戶端提交的事務(wù)后不是立刻返回給客戶端,而是等待至少一個從庫接收到并寫到relay log中才返回給客戶端。相對于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性,同時它也造成了一定程度的延遲,這個延遲最少是一個TCP/IP往返的時間。所以,半同步復(fù)制最好在低延時的網(wǎng)絡(luò)中使用。

 引用:http://www.cnblogs.com/ivictor/p/5735580.html

AFTER_SYNC (the default): The master writes each transaction to its binary log and the slave, and syncs the binary log to disk. The master waits for slave acknowledgment of transaction receipt after the sync. Upon receiving acknowledgment, the master commits the transaction to the storage engine and returns a result to the client, which then can proceed.

AFTER_COMMIT: The master writes each transaction to its binary log and the slave, syncs the binary log, and commits the transaction to the storage engine. The master waits for slave acknowledgment of transaction receipt after the commit. Upon receiving acknowledgment, the master returns a result to the client, which then can proceed.

====

半同步復(fù)制會設(shè)置一個超時的時間,如果超過這個時間從服務(wù)器沒有給主服務(wù)器確認信息,主服務(wù)器會啟用異步復(fù)制,當(dāng)檢測到從服務(wù)器又好了,主服務(wù)器又會采用半同步復(fù)制。

配置半同步復(fù)制

mysql> show variables like "have_dynamic_loading";

+----------------------+-------+

| Variable_name    | Value |

+----------------------+-------+

| have_dynamic_loading | YES  |

+----------------------+-------+

1 row in set (0.02 sec)

mysql>

要想使用半同步復(fù)制,必須滿足以下幾個條件:

1. MySQL 5.5及以上版本

2. 變量have_dynamic_loading為YES

3. 異步復(fù)制已經(jīng)存在

首先加載插件

因用戶需執(zhí)行INSTALL PLUGIN, SET GLOBAL, STOP SLAVE和START SLAVE操作,所以用戶需有SUPER權(quán)限。

主:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

從:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

然后在主和從上查看插件是否啟用

mysql>show plugins;

| rpl_semi_sync_master    | ACTIVE  | REPLICATION    | semisync_master.so  | GPL   |

====

啟動半同步復(fù)制

在安裝完插件后,半同步復(fù)制默認是關(guān)閉的,這時需設(shè)置參數(shù)來開啟半同步

主:

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

從:

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

以上的啟動方式是在命令行操作,也可寫在配置文件中。

主:

plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

從:

plugin-load=rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_slave_enabled=1

查看半同步是否在運行

主:

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)

從:

mysql> show status like 'Rpl_semi_sync_slave_status';

+----------------------------+-------+

| Variable_name       | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON  |

+----------------------------+-------+

1 row in set (0.20 sec)

這兩個變量常用來監(jiān)控主從是否運行在半同步復(fù)制模式下。

至此,MySQL半同步復(fù)制搭建完畢~

====

修改完配置文件后,直接加入加載插件和啟用半同步復(fù)制,重啟刷新mysqld服務(wù)后,導(dǎo)致半同步復(fù)制沒有起來

mysql> show status like 'Rpl_semi_sync_slave_status';

+----------------------------+-------+

| Variable_name       | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | OFF  |

+----------------------------+-------+

1 row in set (0.02 sec)

mysql>

導(dǎo)致的原因是:主服務(wù)器上的二進制日志的文件和位置和從服務(wù)器的relay-log.info里的文件名和位置不一致導(dǎo)致

主服務(wù)器上的信息

mysql> show master status;

+-------------------------+----------+--------------+------------------+-------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------------+----------+--------------+------------------+-------------------+

| MySQL-master-bin.000002 |   154 |       |         |          |

+-------------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

從服務(wù)器上的信息

mysql> show slave status\G;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:  5

Current database: *** NONE ***

*************************** 1. row ***************************

        Slave_IO_State:

         Master_Host: 192.168.0.137

         Master_User: backup

         Master_Port: 3306

        Connect_Retry: 60

       Master_Log_File: Mysql-master-bin.000001

     Read_Master_Log_Pos: 1508

        Relay_Log_File: mysql-slave-relay-bin.000010

        Relay_Log_Pos: 4

    Relay_Master_Log_File: Mysql-master-bin.000001

       Slave_IO_Running: No  啟動不了

      Slave_SQL_Running: Yes

        Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' 錯誤提醒

[root@mysql-slave mysql]# cat relay-log.info

7

./mysql-slave-relay-bin.000010

4

Mysql-master-bin.000001  ---》文件和位置不一致

1508

0

0

1

[root@mysql-slave mysql]#

解決方法:

mysql> show master status; 查看主服務(wù)器上的日志文件和位置

+-------------------------+----------+--------------+------------------+-------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------------+----------+--------------+------------------+-------------------+

| MySQL-master-bin.000002 |   154 |       |         |          |

+-------------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql>

從服務(wù)器里設(shè)置日志文件名和位置

mysql> change master to master_log_file='MySQL-master-bin.000002',master_log_pos=154;

mysql> show status like 'Rpl_semi_sync_slave_status'; 查看

+----------------------------+-------+

| Variable_name       | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON  |

+----------------------------+-------+

1 row in set (0.02 sec)

mysql>

最后ok了

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文標題:mysql5.7.19的半同步復(fù)制問題分享-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://weahome.cn/article/dsppps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部