1. 程式人生 > >MySQL組複製(Group Replication)

MySQL組複製(Group Replication)

本文將介紹一下MySQL組複製以及如何安裝和配置、監控組。 組複製是MySQL伺服器外掛,通過這種外掛可以實現彈性、高可用、容錯複製拓撲結構。

複製組能夠以一種自動優先選擇的單主模式執行,在某個時間只有一個伺服器接受更新 。但是對於更高優先順序的使用者,組能夠以多主模式部署,所有的伺服器都能夠接受更新,即使他們是同時發生的。

組複製中存在著一種內建的組成員關係服務用來保持組的檢視一致,並且在任意時間對於組中的所有的伺服器都可用。MySQL伺服器能夠退出或者加入組中,而且檢視也會相應的更新。有時伺服器可能會意外的退出組(故障),在這種情況下失敗檢測機制檢測這種情況並且告知複製組檢視發生了變化,這所有的一切都是自動實現的。

組複製原理圖:
這裡寫圖片描述

以下是MySQL組複製的應用場景:

彈性複製(Elastic Replication) -適用於需要一個不固定易變的複製架構,這種情況下組中的伺服器可以在很少的副作用的情況下動態增加或者減少。 例如雲服務的資料庫服務。

高可用分片(Highly Available Shards) -分片是一種實現寫操作的橫向擴充套件的流行方法。當每一個分片對映到複製組的時候可以使用MySQL 組複製去實現高可用分片。

可選擇的主從複製(Alternative to Master-Slave replication)- 在某些情況下, 使用單主伺服器就會存在單點競爭。寫入整個組能夠在某些情況下改進這種情況。

自主系統 (Autonomic Systems) - 而且,我們也可以單純的為了自動化部署MySQL組複製。

組複製中的每一個例項(MySQL伺服器)可以執行在獨立的物理機上或者在同一臺機器上。此部分將講述如何用三臺 MySQL伺服器建立一個組複製 。

組複製的架構圖:
這裡寫圖片描述

環境要求三臺主機(虛擬機器rhel6.5.x86_64):

server1: 172.25.0.2,mysql-5.7
server2:172.25.0.3,mysql-5.7
server3:172.25.0.4,mysql-5.7

安裝好MySQL服務之後首先要進行配置檔案修改(三臺都要,注意server-id和loose-group_replication_local_address對應每臺主機):

vim /etc/my.cnf
在原有配置基礎上增加以下內容:

server-id=1#第一臺1,第二臺2,以此類推
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
# 指明對於每一個事物伺服器必須收集寫集並且使用XXHASH64雜湊演算法進行雜湊編碼
loose-group_replication_group_name="2a9e58f4-11d8-42fc-88d8-2c02bd8df65a"
#uuid唯一標記一個組,可以使用uuidgen命令生成,然後複製到這裡
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="172.25.0.2:24901"#對應著所在主機的ip
loose-group_replication_group_seeds="172.25.0.2:24901,172.25.0.3:24901,172.25.0.4:24901"#複製組中所有主機和埠
loose-group_replication_bootstrap_group=off

配置完成之後啟動服務並且執行以下動作:

/etc/init.d/mysqld start

mysql -p#登入到MySQL伺服器

mysql>SET SQL_LOG_BIN=0;#關閉二進位制日誌

mysql>CREATE USER [email protected]'%' IDENTIFIED BY 'Lockey+123';#建立使用者並且指定密碼,組內各伺服器一致

mysql>GRANT REPLICATION SLAVE ON *.* TO [email protected]'%';#授權操作,組內各伺服器一致

mysql>FLUSH PRIVILEGES;

mysql>SET SQL_LOG_BIN=1;#開啟二進位制日誌

mysql>CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Lockey+123' FOR CHANNEL 'group_replication_recovery';

mysql>INSTALL PLUGIN group_replication SONAME 'group_replication.so';
#安裝組複製外掛
mysql>SHOW PLUGINS;

mysql>START GROUP_REPLICATION;
#開啟組複製
mysql>SELECT * FROM performance_schema.replication_group_members;
#檢視複製組的資訊

這裡寫圖片描述

然後進行一些資料庫操作,比如建庫建表插入資料等,等會需要在組內其他伺服器上進行驗證。

新增第二——N個伺服器到複製組

首先是配置檔案

vim /etc/my.cnf
#加入內容基本和上邊的配置一樣,但是要注意server-id和oose-group_replication_local_address是對應伺服器所在主機的

接下來的操作和上邊的一致,配置完成後檢視組資訊(第一臺和第二臺的查詢結果基本一致):
這裡寫圖片描述
每往組中新增一個例項,資訊就會增加一條

測試組複製

分別在組內各個伺服器進行資料庫操作,增刪改之類的,可以看到各伺服器的資料是一致的,這就是組複製,多臺主機互為主從,可以同時進行讀寫,但是最終的資料是一致的。

相關推薦

MySQL複製Group Replication

本文將介紹一下MySQL組複製以及如何安裝和配置、監控組。 組複製是MySQL伺服器外掛,通過這種外掛可以實現彈性、高可用、容錯複製拓撲結構。 複製組能夠以一種自動優先選擇的單主模式執行,在某個時間只有一個伺服器接受更新 。但是對於更高優先順序的使用者,組能夠

Centos6.8 下 部署Mysql複製MySQL Group Replication之多主模式5.7新特性

MySQL Group Replication(簡稱MGR)是MySQL官方於2016年12月推出的一個全新的高可用與高擴充套件的解決方案。MySQL組複製提供了高可用、高擴充套件、高可靠的MySQL叢集服務。 1.關於MGR介紹 1.1提供的特性:

Mysql 分組查詢group by

分組查詢 1 語法 select 查詢列表 from 表 【where 篩選條件】 group by 分組的欄位【order by 排序的欄位】; 2 特點 1、和分組函式一同查詢的欄位必須是group by後出現的欄位 2、篩選分為兩類:分組前篩選和分組

mysql主從複製基於gtid

mysql的主從複製 主伺服器將更新寫入二進位制日誌檔案,並維護檔案的一個索引以跟蹤日誌迴圈。這些日誌可以記錄傳送到從伺服器的更新.當一個從伺服器連線主伺服器時,它通知主伺服器從伺服器在日誌中讀取的最後一次成功更新的位置。從伺服器接收從那時起發生的任何更新,然後封鎖並等待主

MySql分組查詢group by並計算對應的欄位之和及兩個欄位相乘之後的和

有表如下: 需求:求出每一種商品(goods_id)的數量(goods_num)之和及單價(goods_price)乘以數量之和 sql 語句:SELECT sum(goods_pirce*goods_num) AS price_amount,sum(goods_num)

mysql主從複製單向同步

0、環境 系統:ubuntu14.04(阿里雲\騰訊雲) 資料庫:mysql5.6 主:阿里雲ubuntu 從:騰訊雲ubuntu 預設需要同步的資料庫已經事先建立。 1、原理 我們設定一個主庫(Master),和一個從庫(S

MGPMYSQL複製實現高可靠的 MySQL 叢集服務

什麼是MGP: MySQL 組複製提供了高可用、高擴充套件、 高可靠的 MySQL 叢集服務。高一致性,基於原生複製及 paxos 協議的組複製技術, 並以外掛的方式提供,提供一致資料安全保證;高容錯性,只要不是大多數節點 壞掉就可以繼續工作,有自動檢測機

MySQL複製MGR-- 技術概述

(一)複製技術的發展MySQL的複製技術主要經歷了非同步主從複製,半同步複製,組複製(Group Replication)3個階段。(1)傳統的非同步主從複製傳統的MySQL提供了一種簡單的主從複製方法。有1個主伺服器(master),有1個或多個從伺服器(slave),主伺服器執行事務,然後提交,從伺服器非

mysql按日期分組group by查詢統計的時候,沒有數據補0的解決辦法

details map對象 有一個 end creat 對象 結果 插入 數據返回 轉載自:http://blog.csdn.net/jie11447416/article/details/50887888 1、案例中的數據結構和數據如下 2、在沒有解決的時候,是這樣的

mysql5.8實現複製MGR

1.什麼是MYSQL GROUP REPLICATE? MySQL Group Replication(下簡稱MGR)準確來說是官方推出的高可用解決方案,基於原生複製技術,並以外掛的方式提供。 通過Paxos協議提供資料庫叢集節點資料強一致保證,掃清了MySQL進入金融行

Mysql主從複製GTID,一主兩從

複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句(insert,update,delete,ALTER TABLE,grant等等)。 主從複製的原理其實就是把主伺服器上的BIN日誌複製到從伺服器上執行一遍,這樣

MySQL 分組查詢group by 的用法淺析

資料庫的表結構如下:   #列出每個部門最高薪水的結果 SELECT szDepartment, MAX(nSalary) AS nMaxSalary FROM test.department GROUP BY szDepartment;

MySQL 的主從複製windows版

1.概要 1.1 配置過程 1.2 複製型別和半同步複製(可選) 1.3 簡單測試 1.4主庫故障及崩潰處理 1.5 從庫故障及崩潰處理 配置過程 2.1修改主伺服器my.ini    [mysqld]  log-bin=mysql-bin   //[必須]啟用

Linux下Mysql主從複製從庫是MariaDB

排版不易,希望能幫助到大家 一、準備2臺伺服器 ip:120.168.0.1(主)、120.168.0.2(從) 二、配置檔案         1. Linux中的MySQL配置檔案都在/etc/my.cnf(windows中的配置檔案為mysql.ini)    

以Docker方式實現MySql 主從複製實踐篇

本文實踐了用Docker方式來實現基於binlog的MySql主從複製。關於MySql主從複製的原理將在下一篇中進行講解。 一些資料的本地儲存目錄結構 mysql >tree

mysql主從複製版本不一致

      mysql主從複製要求版本最好一致,至少前兩個版本號相同,因為官方推薦這樣,最主要還是怕版本不一致帶來的不相容問題;最近剛好在學習mysql主從複製,我已經有了兩臺伺服器,但是mysql版本並不一致,但是既然版本不一致有可能導致不相容,那麼我就讓低版本作為主ma

mysql按日期分組group by查詢統計的時候,沒有資料補0的解決辦法

寫部落格真實個費時費力的差事,好佩服那些部落格閱讀幾十上百萬的人。今天研究了半天按照日期分組統計,沒有資料就為空了,我要讓他顯示0呀。想了辦法,都沒有找到一個好的,解決方案,然後用了一個很low的方法實現了,還是把它記錄下來。方法是用於MySQL,與開發語言無關。 1、案例中的資料結構和資料如下 2、

mysql5.7實現複製MGR

實驗主機server1,7,8: 組複製原理: 組複製是一種可用於實現容錯系統的技術。 複製組是一個通過訊息傳遞相互互動的 server 叢集。通訊層提供了原子訊息(atomic message)和完全有序資訊互動等保障機制 實現了基於複製協議的多主更

mysql按日期分組group by查詢統計的時候,沒有資料補0的解決辦法。

寫部落格真實個費時費力的差事,好佩服那些部落格閱讀幾十上百萬的人。今天研究了半天按照日期分組統計,沒有資料就為空了,我要讓他顯示0呀。想了辦法,都沒有找到一個好的,解決方案,然後用了一個很low的

MySQL主從複製環境搭建

一、本教程是基於windows 10_64 位系統,MySQL Server 5.5_64 環境下進行搭建的 二、環境搭建步驟: 將本機MySQL服務停止 2.找到MySQL安裝的路徑複製其整個資料夾,將其複製到其他位置中,這裡我複製了兩個