在設定的時候有一個坑要注意,就是每次重啟服務都要重新新增資料,這是因為 ProxySQL 只有把資料儲存在記憶體(RUNTIME),但 沒有寫入磁碟(DISK)。
所以改掉設定要記得下,不然就要重來了
SAVE MYSQL SERVERS TO DISK; SAVE MYSQL USERS TO DISK; SAVE MYSQL QUERY RULES TO DISK; SAVE MYSQL VARIABLES TO DISK; LOAD MYSQL SERVERS TO RUNTIME; LOAD MYSQL USERS TO RUNTIME; LOAD MYSQL QUERY RULES TO RUNTIME; LOAD MYSQL VARIABLES TO RUNTIME;
增加 apt repository
apt-get install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates gnupg wget -O - 'https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/repo_pub_key' | apt-key add - echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list
安裝 ProxySQL
sudo apt update sudo apt install proxysql -y
啟用服務
sudo systemctl start proxysql sudo systemctl enable proxysql
進入 ProxySQL 管理控制台
mysql -u admin -p -h 127.0.0.1 -P 6032
預設密碼是 admin
新增 mysql 主機
# 寫入用 INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, '10.0.0.1', 3306); # Read only INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, '10.0.0.2', 3306);
新增使用者到 ProxySQL
INSERT INTO mysql_users (username, password, default_hostgroup, transaction_persistent)
VALUES ('root', 'PASSWORD', 10, 1);
設定 ssl 證書 (若有)
SET mysql-ssl_p2s_ca = '/mysql-cert/mysql-server-ca.pem'; SET mysql-ssl_p2s_cert = '/mysql-cert/mysql-client-cert.pem'; SET mysql-ssl_p2s_key = '/mysql-cert/mysql-client-key.pem'; SAVE MYSQL VARIABLES TO DISK; LOAD MYSQL VARIABLES TO RUNTIME;
設定讀寫規則
# read only (destination_hostgroup: 20) INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (1, 1, '^SELECT .*', 20, 1); # read/write (destination_hostgroup: 10) INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (2, 1, '.*', 10, 1);
套用變更
SAVE MYSQL SERVERS TO DISK; SAVE MYSQL USERS TO DISK; SAVE MYSQL QUERY RULES TO DISK; LOAD MYSQL SERVERS TO RUNTIME; LOAD MYSQL USERS TO RUNTIME; LOAD MYSQL QUERY RULES TO RUNTIME;
檢查目前連線的 mysql
SELECT * FROM runtime_mysql_servers;



