架構概述
MGR node1:192.168.222.76:3307
MGR node2:192.168.222.77:3307
MGR node3:192.168.222.78:3307
MySQL Router、MySQL Shell:192.168.222.62
一、數據庫節點安裝
1.1、數據庫服務器基礎配置
分別在3臺數據節點(192.168.222.76、77、78)上執行:
設置hostname:
hostnamectl set-hostname mgr_node1 (node2/node3)
編輯 /etc/hosts,新增host信息
192.168.222.76 mgr_node1
192.168.222.77 mgr_node2
192.168.222.78 mgr_node3
關閉SELinux:setenforce 0
修改ulimit值,vim /etc/security/limits.conf
* soft nofile 1024000
* hard nofile 1024000
1.2、數據庫節點初始化
1.2.1、數據庫服務依賴包
rpm -e mariadb-devel
yum install mysql-community-devel
yum install mysql-community-common
yum install mysql-community-libs
yum install mysql-community-libs-compat
yum install libaio
1.2.2、創建數據庫用戶
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
1.2.3、解壓二進制文件
xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar -C /usr/local/
ln -s mysql-8.0.20-linux-glibc2.12-x86_64 mysql3307
cd mysql3307
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
1.2.4、配置文件中添加MGR信息
cat /proc/sys/kernel/random/uuid
以第一節點爲例,MGR關鍵配置如下
server_id=2220763307
report_host='mgr_node1'
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format=row
binlog_checksum=NONE
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
#兼容老版本客戶端
default_authentication_plugin=mysql_native_password
plugin_load_add='group_replication.so'
# 默認XXHASH64,可以不配置
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaaaaaa"
# 單主
loose-group_replication_single_primary_mode=ON
# 單主模式下,關閉該配置
loose-group_replication_enforce_update_everywhere_checks=OFF
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address= "192.168.222.76:33071"
loose-group_replication_group_seeds= "192.168.222.76:33071,192.168.222.77:33071,192.168.222.78.33071"
# ON設立當前節點爲集羣引導節點,default OFF
# loose-group_replication_bootstrap_group=OFF
1.2.5、初始化數據
./bin/mysqld --defaults-file=/usr/local/mysql3307/my.cnf --initialize-insecure --user=mysql
1.2.6、啓動第一節點
./bin/mysqld --defaults-file=/usr/local/mysql3307/my.cnf &
二、MGR第一節點配置
2.1、集羣同步賬號
CREATE USER 'mgr_repl'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 集羣間同步數據用
GRANT REPLICATION SLAVE ON *.* TO 'mgr_repl'@'%';
# clone新節點用
GRANT BACKUP_ADMIN ON *.* TO mgr_repl@'%';
FLUSH PRIVILEGES;
2.2、安裝group replication插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
CHANGE MASTER TO MASTER_USER='mgr_repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
FLUSH PRIVILEGES;
2.3、啓動group replication
set global group_replication_bootstrap_group=ON;
start group_replication;
set global group_replication_bootstrap_group=OFF;
確認集羣狀態:
root@揚州測試節點1 [14:38] > SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 3d35218d-94c5-11ea-b213-005056b8a4a4 | mgr_node1 | 3307 | ONLINE | PRIMARY | 8.0.20 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
1 row in set (0.01 sec)
三、MGR其餘節點啓動
3.1、全量同步(適用於集羣中已有節點的binlog完整保留的情況)
正常初始化後啓動,執行:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
CHANGE MASTER TO MASTER_USER='mgr_repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
# FLUSH PRIVILEGES;
# reset master;
start group_replication;
查看集羣中節點:
root@揚州測試節點2 [18:04] > SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 3d35218d-94c5-11ea-b213-005056b8a4a4 | mgr_node1 | 3307 | ONLINE | PRIMARY | 8.0.20 |
| group_replication_applier | 5da974a5-94f3-11ea-a178-005056b8c7db | mgr_node2 | 3307 | ONLINE | SECONDARY | 8.0.20 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
2 rows in set (0.01 sec)
3.2、clone plugin方式(適用於集羣中已有節點的binlog不完整)
Donor節點 = > Recipient節點
首先,分別在donor節點和recipient節點安裝mysql_clone插件:
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
其次,donor節點創建BACKUP_ADMIN權限的用戶,recipient節點創建CLONE_ADMIN權限的用戶。
(1)本地備份試驗:
# cd /tmp/
# mkdir clone_dir
# chown -R mysql:mysql clone_dir
mysql > clone local data directory = '/tmp/clone_dir/mysql';
備份進度可以通過如下sql查看:
root@揚州測試節點1 [21:59] > SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
+-----------+-------------+----------------------------+
| STAGE | STATE | END_TIME |
+-----------+-------------+----------------------------+
| DROP DATA | Completed | 2020-05-13 21:48:34.584910 |
| FILE COPY | Completed | 2020-05-13 21:48:40.907383 |
| PAGE COPY | Completed | 2020-05-13 21:48:41.113312 |
| REDO COPY | Completed | 2020-05-13 21:48:41.315660 |
| FILE SYNC | Completed | 2020-05-13 21:48:51.580895 |
| RESTART | Not Started | NULL |
| RECOVERY | Not Started | NULL |
+-----------+-------------+----------------------------+
7 rows in set (0.00 sec)
(2)遠程克隆
3.3、恢復xtrabackup備份方式(適用於集羣中已有節點的binlog不完整)
待探索
四、MySQL Shell
yum install mysql-shell
五、MySQL Router