1. 程式人生 > >Mysql半同步與並行複製

Mysql半同步與並行複製

一、Mysql半同步複製

條件:GTID配置完成

1、Master端配置

<1>安裝外掛、開啟半同步
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';  ##安裝外掛
mysql> set global rpl_semi_sync_master_enabled=1;       ##開啟半同步

示圖:檢視master半同步是否可用
在這裡插入圖片描述
示圖:master半同步狀態開啟
在這裡插入圖片描述

2、Slave端配置

<1>安裝外掛、開啟半同步

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled=1;

示圖:檢視slave半同步是否可用
在這裡插入圖片描述
示圖:slave端半同步狀態關閉
在這裡插入圖片描述

<2>停止並重新開始IO執行緒
mysql> stop slave io_thread;
mysql> start slave io_thread;

示圖:再次檢視slave半同步狀態—開啟
在這裡插入圖片描述

<3>Master端檢視半同步客戶端數量為1

在這裡插入圖片描述

測試:

將slave的io執行緒停掉,master寫入資料,會預設等待10s,如果超時還未等到slave的ack,將自動切換到非同步複製,當slave的io執行緒再次開啟,複製將自動切換到半同步方式。

<1>從庫關閉io執行緒
mysql> stop slave io_thread;
<2>主庫寫入資料時,出現 10000ms 的延遲,模式:半同步 --> 非同步
mysql> insert into westos.usertb values('user4','111');

示圖:
在這裡插入圖片描述

<3>從庫開啟io執行緒
mysql> start slave io_thread;
<4>主庫再次寫入資料
mysql> insert into westos.usertb values('user5','222');

示圖:
在這裡插入圖片描述

<5>slave端檢視資料—同步

在這裡插入圖片描述

二、並行複製

1、檢視Slave的sql執行緒型別

mysql> show processlist; 
+----+-------------+-----------+-------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db    | Command | Time | State                                                  | Info             |
+----+-------------+-----------+-------+---------+------+--------------------------------------------------------+------------------+
|  6 | root        | localhost | mysql | Query   |    0 | starting                                               | show processlist |
|  8 | system user |           | NULL  | Connect | 3454 | Slave has read all relay log; waiting for more updates | NULL             |
| 10 | system user |           | NULL  | Connect | 3477 | Waiting for master to send event                       | NULL             |
+----+-------------+-----------+-------+---------+------+--------------------------------------------------------+------------------+

2、Slave端配置

[[email protected] ~]# vim /etc/my.cnf
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16	    ##執行緒數
master_info_repository=TABLE	##master_info儲存方式為:table
relay_log_info_repository=TABLE	##relay_log_info儲存方式為:table
relay_log_recovery=ON
[[email protected] ~]# /etc/init.d/mysqld restart

3、Slave原有的sql執行緒轉化為排程器

slave複製方式已更新
mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  1 | system user |           | NULL | Connect |  193 | Slave has read all relay log; waiting for more updates | NULL             |
|  2 | system user |           | NULL | Connect |  194 | Waiting for master to send event                       | NULL             |
|  3 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
|  4 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
|  6 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
|  7 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
|  8 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
|  9 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 10 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 11 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 12 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 13 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 14 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 16 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 17 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 18 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 19 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 20 | system user |           | NULL | Connect |  194 | Waiting for an event from Coordinator                  | NULL             |
| 22 | root        | localhost | NULL | Query   |    0 | starting                                               | show processlist |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+

4、Slave端檢視mysql資料庫的表,新增兩張表

mysql> use mysql;
mysql> show tables;

在這裡插入圖片描述

相關推薦

Mysql同步並行複製

一、Mysql半同步複製 條件:GTID配置完成 1、Master端配置 <1>安裝外掛、開啟半同步 mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

《深入淺出MySQL:資料庫開發、優化管理維護(2nd)》第31章之MySQL同步複製搭建學習筆記

MySQL的非同步複製在使用的過程中,主庫和從庫的資料之間存在一定的延遲,這樣存在一個隱患:當在主庫上寫入一個事務並提交成功,而從庫尚未得到主庫推送的Binlog日誌時,主庫宕機了,例如主庫可能因磁碟損壞、記憶體故障等造成主庫上該事務Binlog丟失,此時從庫就可能損失這個事務,從而造成主從不一致。

MySQL同步複製原理配置介紹

環境介紹: Ubuntu Server 16.04.2+MySQL 5.7.17 Community Server (GPL) MySQL安裝 1、下載mysql-apt-config_0.8.3-1_all.deb 2、安裝deb

Mysql 同步複製和非同步複製

mysql 半同步複製和非同步複製 -- 在主庫中安裝半同步外掛,開啟半同步複製功能 install plugin rpl_semi_sync_master soname 'semisync_master.so'; set global rpl_semi_sync_master_enab

MySQL同步複製

MySQL資料庫複製的預設方式是非同步複製,但是非同步複製的不足之處就在於,當主庫把event寫入二進位制日誌之後,並不知道從庫是否已經接收並應用了。在非同步模式的複製,如果主庫崩潰,很有可能在主庫中已經提交的事務,並沒有傳到到任何一臺從庫機器上。在高可用叢集

支援MySQL同步複製的virtual_slave元件

文章目錄 一、簡介 二、新的技術架構 三、virtual_slave 一、簡介 在設計高可用架構時,為了保證主從故障切換時的資料一致性,有各種處理方式。在5.5/5.6的單機房資料庫架構中,我們採取了共享儲存的

MySQL 同步複製+MMM架構

介紹     上篇文章介紹了MMM架構的實現方法,但是上篇文章的MMM方案的複製是非同步複製,非同步複製的主要問題在於當主從存在延時時如果主機出現了故障導致了主從切換時這時將會存在資料丟失;mysql為了解決非同步複製資料丟失的問題增加了半同步複製,半同步複製存在5.5以上的版本,半同步複製的原理是客戶

Mysql同步複製模式說明 - 運維小結

  MySQL主從複製包括非同步模式、半同步模式、GTID模式以及多源複製模式,預設是非同步模式 (如之前詳細介紹的mysql主從複製)。所謂非同步模式指的是MySQL 主伺服器上I/O thread 執行緒將二進位制日誌寫入binlog檔案之後就返回客戶端結果,不會考慮二進位制日誌是否完整傳輸到

Mysql同步複製模式

MySQL主從複製包括非同步模式、半同步模式、GTID模式以及多源複製模式,預設是非同步模式 (如之前詳細介紹的mysql主從複製)。所謂非同步模式指的是MySQL 主伺服器上I/O thread 執行緒將二進位制日誌寫入binlog檔案之後就返回客戶端結果,不會考慮二進位制日誌是否完整傳輸

MySQL同步複製--handle_slave_io--5

handle_slave_io函式呼叫read_event函式讀取event後,然後呼叫queue_event將讀取的event寫入relay log檔案中。程式碼如下:static int queue_event(Master_info* mi,const char* bu

Mysql同步複製、資料一致性檢查

1:配置非同步複製 scripts/mysql_install_db --user=mysql --datadir=/mysql/data bin/mysqld_safe --user=mysql & 在master上建立複製使用者: mysql> GRANT

MySQL同步複製--transmit_start

介紹半同步複製binlog dump執行緒需要做的事情。相關結構:Binlog_transmit_observer transmit_observer = { sizeof(Binlog_transmit_observer), // len repl_semi_bi

mysql 同步複製(semi_sync_replication)搭建及使用

      google為mysql開發了一個補丁一個基於半同步的補丁,應用與mysql5.0。回來mysql打上了該補丁,並在5.5版本中使用。半同步複製的理念是什麼呢?在資料庫更改操作執行前,確保更改操作至少被寫入一臺slave磁碟中,意味著著對於每一個連線,最多隻有一

mysql同步複製&組複製&全同步機制

先配置好主從 配置主從詳見上一篇部落格,這裡只是簡單過一邊 mysql> grant replication slave on *.* to 'haha'@'172.25.53.%' identified by '[email protect

mysql同步複製搭建及驗證測試

非同步複製:客戶端提交日誌後,主庫寫入日誌到binlog,即可成功返回給客戶端。 半同步複製:客戶端提交日誌後,主庫寫入日誌到binlog,需等待其中一個slave也接收到binlog事務併成功寫入relay log後,主庫才返回commmit操作成功給客戶端。 如果主庫與

MySQL同步復制配置

point pos st3 架構 宕機 小事 tro 延遲 red ansible-playbook -f 3 endpoint/mysql.yml -e "exec=fileConfig" -e "db_action=setAll" -e "paras={‘plugin-

MySQL同步復制--handle_slave_io等待master發送event

mysql handle_slave_iohandle_slave_io函數調用read_event函數:read_event函數從連接中讀取事件,如果沒有事件將會阻塞在這裏等待master發送事件。#0 0x00898402 in __kernel_vsyscall () #1 0x00c28133 i

Mysql 同步復制

mysql 半同步復制Mysql 半同步復制 背景: 之所以要學習Mysql的半同步復制,是為了解決主從復制時,主從不一致太多,差距太大的問題,一個主服務器可以有多個從服務器,當主服務器宕機或者出現故障時就需要一個同步最好最多的從服務器來接替工作,而通過半同步復制的從服務器無疑是最佳選擇。

數據庫 之 Mysql同步復制

tab relay_log 正常 rar nbsp 主從復制 設定 cli library 1 概述半同步復制指一部分主機同步復制,另一部分主機異步復制同步的邏輯是用戶寫操作到主服務器,主服務記錄到二進制文件後,主服務會同步發送給從服務器,從服務器響應數據同步後,主服務器

MySQL主從同步讀寫分離

修改配置 monit 相關 流量 修改配置文件 l數據庫 cli 授權 san MySQL主從同步MySQL AB復制1.對指定庫的異地同步。2.MySQL主-->從復制架構的實現。3.MySQL服務器的只讀控制。 主從:單向復制時,建議將從庫設置為只讀。 主從復制