1. 程式人生 > >Centos6.8 下 部署Mysql組複製(MySQL Group Replication)之多主模式(5.7新特性)

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

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

1.關於MGR介紹

1.1提供的特性:

多寫,寫衝突檢測
良好的擴充套件能力,可動態增刪節點,組成員自動管理
組內高可用
確保組內資料最終一致性【重要】(通過分散式協議和分散式recovery機制保證)

1.2組複製的兩種模式

在單主模式下,組複製具有自動選主功能,每次只有一個 server成員接受更新。
在多主模式下,所有的 server 成員都可以同時接受更新.

1.3組複製的限制

僅支援InnoDB表,並且每張表一定要有一個主鍵,用於做write set的衝突檢測;
必須開啟GTID特性,二進位制日誌格式必須設定為ROW,用於選主與write set
COMMIT可能會導致失敗,類似於快照事務隔離級別的失敗場景
目前一個MGR叢集最多支援9個節點
不支援外來鍵於save point特性,無法做全域性間的約束檢測與部分部分回滾
二進位制日誌不支援binlog event checksum

1.4MySQL組複製協議
組複製原理
上圖描述了MySQL組複製協議。

2.安裝部署

2.1 環境介紹
三臺伺服器(centos6.8)安裝mysql5.7.19版本,關於mysql安裝參考我的另一個文章。
伺服器分別為:
192.168.1.208
192.168.1.211
192.168.1.212

伺服器 埠號 資料及日誌目錄 Group_replication 通訊埠
192.168.1.208 3306 /usr/local/mysql/mysql/{data,logs,tmp} 33061
192.168.1.211 3306 /usr/local/mysql/mysql/{data,logs,tmp} 33061
192.168.1.212 3306 /usr/local/mysql/mysql/{data,logs,tmp} 33061

①.分別在三臺伺服器新增host

vi /etc/hosts
192.168.1.208 mgr208
192.168.1.212 mgr212
192.168.1.211 mgr211

2.2更改mysql配置檔案my.cnf

[client]
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock

[mysqld]
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
back_log = 80
basedir = /usr/local/mysql
tmpdir = /tmp
datadir = /usr/local/mysql/data
pid-file=/usr/local/mysql/mysqld.pid 
#-------------------gobal variables------------#
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 = /usr/local/mysql/log/mysql-bin
transaction_write_set_extraction = XXHASH64  #以便在server收集寫集合的同時將其記錄到二進位制日誌。寫集合基於每行的主鍵,並且是行更改後的唯一標識此標識將用於檢測衝突。
loose-group_replication_group_name = 'de9be252-2b91-11e6-b8f4-00212889f856' #組的名字可以隨便起,但不能用主機的GTID
loose-group_replication_start_on_boot = off  #為了避免每次啟動自動引導具有相同名稱的第二個組,所以設定為OFF。
loose-group_replication_bootstrap_group = off 
loose-group_replication_local_address = '192.168.1.212:33061' #sql伺服器IP
loose-group_replication_group_seeds ='192.168.1.212:33061,192.168.1.208:33061,192.168.1.211:33061'
loose-group_replication_single_primary_mode = off  #關閉單主模式的引數(本例測試時多主模式,所以關閉該項)
loose-group_replication_enforce_update_everywhere_checks = on #開啟多主模式的引數
max_connect_errors = 20000
max_connections = 2000
wait_timeout = 3600
interactive_timeout = 3600
net_read_timeout = 3600
net_write_timeout = 3600
table_open_cache = 1024
table_definition_cache = 1024
thread_cache_size = 512
open_files_limit = 10000
character-set-server = utf8
collation-server = utf8_bin
skip_external_locking
performance_schema = 1
user = mysql
myisam_recover_options = DEFAULT
skip-name-resolve
local_infile = 0
lower_case_table_names = 0

#--------------------innoDB------------#
innodb_buffer_pool_size = 2000M
innodb_data_file_path = ibdata1:200M:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 600
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 200M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 85
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_support_xa = 1
innodb_thread_concurrency = 32
innodb_file_per_table
innodb_rollback_on_timeout

#------------session variables-------#
join_buffer_size = 8M
key_buffer_size = 256M
bulk_insert_buffer_size = 8M
max_heap_table_size = 96M
tmp_table_size = 96M
read_buffer_size = 8M
sort_buffer_size = 2M
max_allowed_packet = 64M
read_rnd_buffer_size = 32M

#------------MySQL Log----------------#
log-bin = my3306-bin
binlog_format = row  #組複製依賴基於行的複製格式
sync_binlog = 1
expire_logs_days = 15
max_binlog_cache_size = 128M
max_binlog_size = 500M
binlog_cache_size = 64k
slow_query_log
log-slow-admin-statements
log_warnings = 1
long_query_time = 0.25

#---------------replicate--------------#
relay-log-index = relay3306.index
relay-log = relay3306
server-id = 91 #每個db的id唯一
init_slave = 'set sql_mode=STRICT_ALL_TABLES'
log-slave-updates
[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
#skip-grant-tables

[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
log-error = /usr/local/mysql/log/mysqld_error.log

2.3注意事項
啟動mysql,如果啟動失敗,檢視日誌可能是/usr/local/mysql許可權問題,也可以其他問題。
mysql的basedir 必須是/usr/local/mysql 這個mysql官方說basedir如果不在這個目錄的話,會有問題。

④.安裝組複製外掛

    mysql>INSTALL PLUGIN group_replication SONAME 'group_replication.so';

2.4啟動Group_replication第一個節點(192.168.1.208)

 mysql > SET GLOBAL group_replication_bootstrap_group=ON; //只在第一個節點使用

 mysql > GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%' IDENTIFIED BY                                    '[email protected]';     

 mysql > CHANGE MASTER TO MASTER_USER='repl',MASTER_PASSWORD='[email protected]' FOR CHANNEL 'group_replication_recovery';

 mysql> SET GLOBAL  group_replication_ip_whitelist="127.0.0.1/32,192.168.0.0/16,192.168.1.0/24";

 mysql > START GROUP_REPLICATION;

 mysql> SELECT * FROM performance_schema.replication_group_members;

這裡寫圖片描述

2.5配置 group_replication_recovery 通道的恢復憑據(192.168.1.211,192.168.1.212)

  mysql > SET GLOBAL group_replication_allow_local_disjoint_gtids_join=ON;
  mysql > CHANGE MASTER TO MASTER_USER='repl',MASTER_PASSWORD='[email protected]' FOR  CHANNEL 'group_replication_recovery';

  mysql > SET GLOBAL  group_replication_ip_whitelist="127.0.0.1/32,192.168.0.0/16,192.168.1.0/24";

  mysql > START GROUP_REPLICATION;

  mysql > SELECT * FROM performance_schema.replication_group_members;

這裡寫圖片描述

2.6 資料同步測試

在192.168.1.212上執行sql

 mysql> CREATE TABLE `test1` (`id`  int(11) NOT NULL AUTO_INCREMENT ,`name`  varchar(20)  CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL ,PRIMARY KEY (`id`));
Query OK, 0 rows affected (0.13 sec)

mysql> show tables;
+—————–+
| Tables_in_test1 |
+—————–+
| test1 |
+—————–+
1 row in set (0.00 sec)

在其他兩臺伺服器上查詢
mysql> show tables;
+—————–+
| Tables_in_test1 |
+—————–+
| test1 |
+—————–+
1 row in set (0.00 sec)

參考

相關推薦

Centos6.8 部署Mysql複製MySQL Group Replication模式5.7特性

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

[MGR——Mysql復制模式 ] 詳細搭建部署過程

狀態 eve 語句 star mysql命令行 password 是否 集合 功能 組復制可以在兩種模式下運行。 1.在單主模式下,組復制具有自動選主功能,每次只有一個 server成員接受更新。2.在多主模式下,所有的 server 成員都可以同時接受更新.

Mysql Group Replication 簡介及單模式複製配置

mysql> create database test;2017-03-31T23:23:45.535115Z8[Note]Plugin group_replication reported:'Primary had applied all relay logs, disabled conflict d

Mysql Group Replication 簡介及單模式復制配置【轉】

ror ipv4 mysql命令 value tail force action dmi where 一 Mysql Group Replication簡介 Mysql Group Replication(MGR)是一個全新的高可用和高擴張的MySQL集群服務。

MySQL 5.7特性Generated Column函數索引

div 顯示 提高 mysql generate 更新 ide pan 數據庫 官網原文:https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html 註:以下是我參考官網文檔和結合自

MySQL 5.7 特性增強半同步復制

art times -s gin com wrap nlog ash 所有 1. 背景介紹 半同步復制 普通的replication,即mysql的異步復制,依靠mysql二進制日誌也即binary log進行數據復制。比如兩臺機器,一臺主機(master),另外一臺是從機

MySQL 5.7特性線上收縮undo表空間

1. MySQL 5.5時代的undo log 在MySQL5.5以及之前,大家會發現隨著資料庫上線時間越來越長,ibdata1檔案(即InnoDB的共享表空間,或者系統表空間)會越來越大,這會造成2個比較明顯的問題: (1)磁碟剩餘空間越來越小,到後期往往要加磁碟;

MySQL 5.7 特性 JSON 的建立,插入,查詢,更新

從 MySQL 5.7.8 開始,MySQL 支援原生的 JSON 資料型別。 建立 JSON 類似 varchar,設定 JSON 主要將欄位的 type 是 json, 不能設定長度,可以是 NULL  但不能有預設值。 mysql> CREATE

[轉]MySQL 5.7 特性大全和未來展望

作者:楊尚剛 引用美圖公司資料庫高階 DBA,負責美圖後端資料儲存平臺建設和架構設計。前新浪高階資料庫工程師,負責新浪微博核心資料庫架構改造優化,以及資料庫相關的伺服器儲存選型設計。之前在「高可用架構」發表的《單表 60 億記錄等大資料場景的 MySQL 優化和運維之道》廣受好評。2015 年最重磅的當屬 M

mysql 5.7 特性 json 型別 基本操作

近幾年來,nosql大行其道,json更是火的一塌糊塗,作為資料庫的元老,mysql在5.7版本中添加了對json資料的支援。這片部落格主要記錄對mysql json型別的學習筆記和總結心得。首先建立一個數據庫learnjson,並建立一張表json_start:create

centos6.8安裝部署LNMP備註:nginx1.8.0+php5.6.10+mysql5.6.12

debug pcr chkconfig c++ sam libjpeg php 執行 btool 在平時運維工作中,經常需要用到LNMP應用框架。以下對LNMP環境部署記錄下: 1)前期準備:為了安裝順利,建議先使用yum安裝依賴庫[root@opd ~]#yum ins

Centos6.8搭建LAMPLinux、Apache、MySQL、PHP環境

Centos6.8下搭建LAMP(Linux、Apache、MySQL、PHP)環境 一.安裝Apache服務 1.       命令如下:sudo yum install httpd –y 注:採用該方法安裝Apac

centos6.8安裝matlab2009圖片轉帖

.so 完成 流程 bsp ror not libraries .com pen 前言 如何優雅的在centos6.8上安裝matlab2009. 流程 不過我個人安裝過程完後啟動matlab的時候又出現了新問題: error while loading shared

CentOS6.8使用yum安裝mysql,並遠程登陸mysql

mysql第1步、查看CentOS下是否已安裝mysql 輸入命令 :yum list installed | grep mysql 第2步、刪除已安裝mysql 輸入命令:yum -y remove mysql看到complete就說明成功了 第3步、查看yum庫中的mysql(非必須) 輸入命令:yum

禪道 CentOS6.8安裝部署開源的專案管理軟體

前提準備 什麼是禪道:開源的專案管理軟體 官網 1.檔案下載並上傳到CentOS系統上 下載地址 2.安裝文件 安裝步驟 關閉防火牆 service iptables stop 解壓

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

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

MySQL複製Group Replication

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

MySQL複製MGR-- 技術概述

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

centos6.8安裝elasticsearch

下載 conf wrap nload tro elastics earch 文件夾 bin 1.安裝java環境 2.安裝elasticsearch cd /usr/local/src wget https://download.elasticsearch.org/elas

centos6.8安裝dc2012

系統 oba 文件中 安裝軟件 若有 global ack use .com 前言 centos6.8系統中安裝synopsys公司的design compiler 2012。 流程 1.請掌握必要的linux知識,否則你將獲得成噸的困難。 linux系統:centos 6