架構概述
MGR node1:192.168.222.76:3307
MGR node2:192.168.222.77:3307
MGR node3:192.168.222.78:3307
ProxySQL:192.168.222.75
一、數據庫節點安裝
1.1、數據庫服務器基礎配置
分別在3臺數據節點(192.168.222.76、77、78)上執行:
(1)設置hostname:
hostnamectl set-hostname mgr_node1 (node2/node3)
(2)編輯 /etc/hosts,新增host信息
192.168.222.76 mgr_node1
192.168.222.77 mgr_node2
192.168.222.78 mgr_node3
(3)關閉SELinux:setenforce 0
(4)修改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-common
yum install mysql-community-libs
yum install mysql-community-devel
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信息
以第一節點爲例,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
# 默認算法已經是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
# 不自動啓動group replication
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"
# 設立當前節點爲集羣引導節點時短暫開啓,默認OFF,可以不配置
loose-group_replication_bootstrap_group=OFF
運行uuidgen,生成的uuid填入:group_replication_group_name
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'@'%';
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@testnode1 [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';
(非必要,建議執行)INSTALL PLUGIN clone SONAME 'mysql_clone.so';
CHANGE MASTER TO MASTER_USER='mgr_repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
start group_replication;
查看集羣中節點:
root@testnode2 [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節點(欲加入集羣的節點)
3.2.1、備份插件安裝
首先,在donor節點檢查是否已安裝mysql_clone插件:
show plugins;
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
然後,新節點正常初始化後啓動,安裝 group_replication 和 mysql_clone 插件:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
recipient節點的group replication插件需要在克隆前就確保已安裝,否則啓動克隆時報錯如下:
ERROR 3870 (HY000): Clone Donor plugin group_replication is not active in Recipient.
3.2.2、Donor節點建立遠程備份賬號
遠程備份賬號權限:BACKUP_ADMIN
CREATE USER 'clone_user'@'%' IDENTIFIED BY '123456';
GRANT BACKUP_ADMIN on *.* to 'clone_user'@'%';
flush privileges;
3.2.3、Donor本地備份試驗
來到donor節點
# cd /data/
# mkdir clone_dir
# chown -R mysql:mysql clone_dir
mysql > clone local data directory = '/data/clone_dir/20200513';
備份進度可以通過如下sql查看:
root@testnode1 [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)
Tips:備份的文件配合一份新的配置文件,就可以在本地快速引導一套新的mysql實例
注意修改以下配置項,避免衝突:
server_id=2220783317
report_host='mgr_node4'
port = 3317
mysqlx-port=33170
datadir = /tmp/clone_dir/20200514
loose-group_replication_local_address= "192.168.222.78:33171"
loose-group_replication_group_seeds= "192.168.222.76:33071,192.168.222.77:33071,192.168.222.78.33071,192.168.222.78:33171"
root@testnode3 [15:17] > 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 |
| group_replication_applier | a553c26f-95b2-11ea-b31e-005056b854d7 | mgr_node4 | 3317 | ONLINE | SECONDARY | 8.0.20 |
| group_replication_applier | f1776459-958f-11ea-8dec-005056b854d7 | mgr_node3 | 3307 | ONLINE | SECONDARY | 8.0.20 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
4 rows in set (0.00 sec)
3.2.4、Recipient節點遠程獲取克隆
step1、來到recipient節點,使用至少權限爲CLONE_ADMIN的賬號登錄(注:CLONE_ADMIN包含了BACKUP_ADMIN、SHUTDOWN權限)
step2、指向Donor節點
SET GLOBAL clone_valid_donor_list = '192.168.222.76:3307';
step3、填入Donor節點上的備份賬號
CLONE INSTANCE FROM 'clone_user'@'192.168.222.76':3307 IDENTIFIED BY '123456';
step4、克隆結束後,根據原先recipient節點的啓動方式執行關閉或自動重啓新節點。
Tips: 若以mysqld方式啓動,克隆完成後會有如下報錯,屬於正常現象(目前僅mysqld_safe方式支持自動重啓):
ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process)
3.2.5、啓動recipient節點(mysqld)
cd /usr/local/mysql3307
./bin/mysqld --defaults-file=/usr/local/mysql3307/my.cnf &
3.2.6、加入MGR集羣
CHANGE MASTER TO MASTER_USER='mgr_repl', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
start group_replication;
3.3、恢復xtrabackup備份方式(適用於集羣中已有節點的binlog做過清理的情況)
由於8.0.20的redo log格式有調整。xtrabackup-8.0.11基於8.0.18開發,故暫無法使用。官方回覆如下:
更新:Percona XtraBackup 8.0.12版本已支持MySQL 8.0.20
四、ProxySQL
4.1、安裝
如下地址下載rpm包,安裝
https://github.com/sysown/proxysql/releases
systemctl start proxysql
默認用戶名、密碼:admin:admin
mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
4.2、修改ProxySQL基礎配置
Admin> use main
4.2.1、修改proxysql的admin密碼
Admin> update global_variables set variable_value = 'admin:adminpasswd' where variable_name = 'admin-admin_credentials';
Admin> LOAD ADMIN VARIABLES TO RUNTIME;
Admin> SAVE ADMIN VARIABLES TO DISK;
4.2.2、修改默認字符集utf8爲utf8mb4
set mysql-default_charset='utf8mb4';
set mysql-default_collation_connection='utf8mb4_general_ci';
set mysql-max_allowed_packet=67108864; #對應後端數據庫max_allowed_packet
#set mysql-ping_interval_server_msec=60000; #sleep會話保持時長120s
set mysql-max_connections=10000; #ProxySQL能處理前端請求的最大連接數
set mysql-server_version='8.0.20'; #proxysql響應給客戶端的MySQL版本號
set mysql-set_query_lock_on_hostgroup=0; #set語法兼容
Tips:避免如下報錯:
9006 - ProxySQL Error: connection is locked to hostgroup 10 but trying to reach hostgroup 30
https://github.com/sysown/proxysql/issues/2202
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
4.2.3、定義寫、備寫、讀、離線組id
Admin> insert into mysql_group_replication_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup, offline_hostgroup,active,max_writers,writer_is_also_reader)
values (10,20,30,40,1,1,1);
Tips:
Another similar option is currently being implemented in ProxySQL 2.0.9 for the transactions_behind check. See below:
mysql-monitor_groupreplication_max_transactions_behind
Currently, if group replication max_transactions_behind exceeds the threshold once, the node is evicted from the cluster.
The upcoming 2.0.9 release features another additional variable which will define a count for such checks so that max_transactions_behind would have to fail more than once (x number of times) before eviction.
mysql-monitor_groupreplication_max_transactions_behind_count默認3
將配置生效並存儲:
Admin> load mysql servers to runtime;
Admin> save mysql servers to disk;
確認已生效:
Admin> select * from runtime_mysql_group_replication_hostgroups;
+------------------+-------------------------+------------------+-------------------+--------+-------------+-----------------------+-------------------------+---------+
| writer_hostgroup | backup_writer_hostgroup | reader_hostgroup | offline_hostgroup | active | max_writers | writer_is_also_reader | max_transactions_behind | comment |
+------------------+-------------------------+------------------+-------------------+--------+-------------+-----------------------+-------------------------+---------+
| 10 | 20 | 30 | 40 | 1 | 1 | 0 | 100 | NULL |
+------------------+-------------------------+------------------+-------------------+--------+-------------+-----------------------+-------------------------+---------+
1 row in set (0.00 sec)
4.2.4、定義後端數據庫
Admin> insert into mysql_servers(hostgroup_id,hostname,port,max_connections) values(10,"192.168.222.76",3307,5000);
Admin> insert into mysql_servers(hostgroup_id,hostname,port,max_connections) values(30,"192.168.222.77",3307,5000);
Admin> insert into mysql_servers(hostgroup_id,hostname,port,max_connections) values(30,"192.168.222.78",3307,5000);
將配置生效並存儲:
Admin> load mysql servers to runtime;
Admin> save mysql servers to disk;
確認已生效:
select * from runtime_mysql_servers;
+--------------+----------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname | port | gtid_port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+----------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 10 | 192.168.222.76 | 3307 | 0 | ONLINE | 1 | 0 | 5000 | 0 | 0 | 0 | |
| 30 | 192.168.222.78 | 3307 | 0 | ONLINE | 1 | 0 | 5000 | 0 | 0 | 0 | |
| 30 | 192.168.222.77 | 3307 | 0 | ONLINE | 1 | 0 | 5000 | 0 | 0 | 0 | |
+--------------+----------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
3 rows in set (0.00 sec)
4.2.5、配置監控賬號
在後端DB執行
需要在後端DB添加如下監控視圖:(來源https://github.com/lefred/mysql_gr_routing_check/blob/master/addition_to_sys.sql)
USE sys;
DELIMITER $$
CREATE FUNCTION my_id() RETURNS TEXT(36) DETERMINISTIC NO SQL RETURN (SELECT @@global.server_uuid as my_id);$$
CREATE FUNCTION gr_member_in_primary_partition()
RETURNS VARCHAR(3)
DETERMINISTIC
BEGIN
RETURN (SELECT IF( MEMBER_STATE='ONLINE' AND ((SELECT COUNT(*) FROM
performance_schema.replication_group_members WHERE MEMBER_STATE NOT IN ('ONLINE', 'RECOVERING')) >=
((SELECT COUNT(*) FROM performance_schema.replication_group_members)/2) = 0),
'YES', 'NO' ) FROM performance_schema.replication_group_members JOIN
performance_schema.replication_group_member_stats USING(member_id) where member_id=my_id());
END$$
CREATE VIEW gr_member_routing_candidate_status AS SELECT
sys.gr_member_in_primary_partition() as viable_candidate,
IF( (SELECT (SELECT GROUP_CONCAT(variable_value) FROM
performance_schema.global_variables WHERE variable_name IN ('read_only',
'super_read_only')) != 'OFF,OFF'), 'YES', 'NO') as read_only,
Count_Transactions_Remote_In_Applier_Queue as transactions_behind, Count_Transactions_in_queue as 'transactions_to_cert'
from performance_schema.replication_group_member_stats where member_id=my_id();$$
DELIMITER ;
create user 'proxysql_monitor'@'%' identified by '123456';
grant select on sys.gr_member_routing_candidate_status to 'proxysql_monitor'@'%';
flush privileges;
在proxysql中錄入監控賬號信息:
Admin> UPDATE global_variables SET variable_value='proxysql_monitor' WHERE variable_name='mysql-monitor_username';
Admin> UPDATE global_variables SET variable_value='123456' WHERE variable_name='mysql-monitor_password';
縮短監控巡檢週期到2秒(##需與官方文檔覈對##)
(默認60000、10000、1500):
UPDATE global_variables SET variable_value='2000'
WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');
遇到: MySQL_Session.cpp:1454:handler_again___status_PINGING_SERVER(): [ERROR] Detected a broken connection during ping on (10,10.10.7.53,3306) , FD (Conn:2339 , MyDS:2339) : 2013, Lost connection to MySQL server during query
可適當調大mysql-monitor_ping_interval:2000=>5000
運行如下命令進行校對:
SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';
無誤後,將配置生效並存儲
Admin> LOAD MYSQL VARIABLES TO RUNTIME;
Admin> SAVE MYSQL VARIABLES TO DISK;
確認監控是否可用(未配置前,是access denied狀態)
Admin> SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 10;
+----------------+------+------------------+-------------------------+-------------------------------------------------------------------------+
| hostname | port | time_start_us | connect_success_time_us | connect_error |
+----------------+------+------------------+-------------------------+-------------------------------------------------------------------------+
| 192.168.222.78 | 3307 | 1589546175511459 | 1723 | NULL |
| 192.168.222.77 | 3307 | 1589546175088734 | 1492 | NULL |
| 192.168.222.76 | 3307 | 1589546174666010 | 842 | NULL |
| 192.168.222.76 | 3307 | 1589546115653773 | 1281 | NULL |
| 192.168.222.77 | 3307 | 1589546115160901 | 1767 | NULL |
| 192.168.222.78 | 3307 | 1589546114667025 | 1431 | NULL |
| 192.168.222.78 | 3307 | 1589546090462462 | 0 | Access denied for user 'monitor'@'192.168.222.76' (using password: YES) |
| 192.168.222.76 | 3307 | 1589546089762699 | 0 | Access denied for user 'monitor'@'192.168.222.76' (using password: YES) |
| 192.168.222.77 | 3307 | 1589546089063100 | 0 | Access denied for user 'monitor'@'192.168.222.76' (using password: YES) |
| 192.168.222.77 | 3307 | 1589546030519571 | 0 | Access denied for user 'monitor'@'192.168.222.76' (using password: YES) |
+----------------+------+------------------+-------------------------+-------------------------------------------------------------------------+
10 rows in set (0.00 sec)
Admin> SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 10;
4.2.6、配置簡單讀寫分離規則(僅測試用)
insert into mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply) VALUES (101,1,"^SELECT .* FOR UPDATE$",10,1),(102,1,"^SELECT",30,1);
將配置生效並存儲:
load mysql query rules to runtime;
save mysql query rules to disk;
4.2.7、配置應用賬號
ProxySQL中配置:
insert into mysql_users(username,password,default_hostgroup) values('proxydb','proxydb',10);
LOAD MYSQL USERS TO RUNTIME;
load to runtime(memory=>runtime)時,會將runtime層的密碼自動加密(admin-hash_passwords默認ON):
複測:SELECT username,password FROM runtime_mysql_users;
引用runtime層的加密密碼到memory層:
SAVE MYSQL USERS FROM RUNTIME;
複測:SELECT username,password FROM mysql_users;
引用memory層的加密密碼到disk層:
SAVE MYSQL USERS TO DISK;
後端DB配置:
create user 'proxydb'@'%' identified by 'proxydb';
grant XXX on *.* to 'proxydb'@'%';
通過ProxySQL的IP和P6033端口就能訪問了,自動讀寫分離
注:用begin顯示開始的事務,默認直接走寫節點
附1:cnf文件備份方法,用於傳遞到備用proxysql上
how to copy runtime configuration to another ProxySQL server?
SELECT CONFIG INTO OUTFILE /tmp/f1;
alias:SAVE CONFIG TO FILE /tmp/f2;
備用proxysql配置生效:
法一、
先刪除/var/lib/proxysql/proxysql.db,
再覆蓋備份文件到/etc/proxysql.cnf,修改權限爲root:proxysql
重啓備用proxysql
附2:
sysbench --report-interval=5 --num-threads=4 --num-requests=0 --max-time=20 --test=tests/db/oltp.lua --mysql-user='msandbox' --mysql-password='msandbox' --oltp-table-size=10000 --mysql-host=127.0.0.1 --mysql-port=6033 run
sysbench --num-threads=4 --max-requests=0 --max-time=20 --test=tests/db/oltp.lua --mysql-user='msandbox' --mysql-password='msandbox' --oltp-table-size=10000 --mysql-host=127.0.0.1 --mysql-port=6033 --db-ps-mode=disable run
五、ProxySQL Cluster配置
排版待編輯
已有節點完成配置後
ProxySQL Cluster信息配置
insert into proxysql_servers(hostname,port) values('10.10.7.51',6032),('10.10.7.52',6032);
load proxysql servers to runtime;
save proxysql servers to disk;
配置用於實例間通訊的賬號(;前爲本地登錄賬號,;後爲實例間同步端口)
Admin> update global_variables set variable_value = 'admin:13&3biYvWHQ7;proxysql_cluster:17yFhXm62$zH' where variable_name = 'admin-admin_credentials';
Admin> update global_variables set variable_value = 'proxysql_cluster' where variable_name = 'admin-cluster_username';
Admin> update global_variables set variable_value = '17yFhXm62$zH' where variable_name = 'admin-cluster_password';
SELECT * FROM global_variables WHERE variable_name LIKE 'admin-cluster_%';
確認無誤後:
Admin> LOAD ADMIN VARIABLES TO RUNTIME;
Admin> SAVE ADMIN VARIABLES TO DISK;
安裝新節點並啓動:
sudo systemctl start proxysql
# 登錄新ProxySQL節點,錄入以下cluster信息(sudo tail -f /var/lib/proxysql/proxysql.log觀察老節點輸出)
Admin> update global_variables set variable_value = 'admin:13&3biYvWHQ7;proxysql_cluster:17yFhXm62$zH' where variable_name = 'admin-admin_credentials';
Admin> update global_variables set variable_value = 'proxysql_cluster' where variable_name = 'admin-cluster_username';
Admin> update global_variables set variable_value = '17yFhXm62$zH' where variable_name = 'admin-cluster_password';
Admin> insert into proxysql_servers(hostname,port) values('10.10.7.51',6032),('10.10.7.52',6032);
Admin> load admin variables to runtime;
Admin> save admin variables to disk;
Admin> load proxysql servers to runtime;
Admin> save proxysql servers to disk;
目前,已確認以下值不會同步,需手動設置:
set mysql-default_charset='utf8mb4';
set mysql-default_collation_connection='utf8mb4_general_ci';
set mysql-max_connections=10000; #ProxySQL能處理前端請求的最大連接數
set mysql-server_version='8.0.20'; #proxysql響應給客戶端的MySQL版本號
set mysql-set_query_lock_on_hostgroup=0; #set語法兼容
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
參考文檔:
MySQL 8.0 Reference Manual: 18.2.1 Deploying Group Replication in Single-Primary Mode
https://proxysql.com/documentation/ProxySQL-Configuration/
https://proxysql.com/documentation/proxysql-read-write-split-howto/
https://www.colabug.com/2019/1224/6764189/