InnoDB Cluster搭建實錄(更新中)

架構概述

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章