[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_row_image = FULL
sync_binlog = 1
expire_logs_days = 7
binlog_group_commit_sync_delay = 100
binlog_group_commit_sync_no_delay_count = 10
[mysqld]
server-id = 2
log_bin = mysql-bin
relay_log = mysql-relay-bin
read_only = ON
log_slave_updates = ON
slave_parallel_workers = 4
slave_parallel_type = LOGICAL_CLOCK
CREATE USER 'repl'@'%' IDENTIFIED BY 'securepassword';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='securepassword',
MASTER_AUTO_POSITION=1;
START SLAVE;
SHOW SLAVE STATUS\G
# Ubuntu/Debian
sudo apt-get install proxysql
# CentOS/RHEL
sudo yum install proxysql
-- 添加主从服务器
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (10,'master_ip',3306);
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (20,'slave1_ip',3306);
-- 设置读写分离规则
INSERT INTO mysql_query_rules (rule_id,active,match_pattern,destination_hostgroup,apply)
VALUES (1,1,'^SELECT.*FOR UPDATE',10,1), (2,1,'^SELECT',20,1), (3,1,'^INSERT',10,1), (4,1,'^UPDATE',10,1), (5,1,'^DELETE',10,1);
-- 监控配置
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitorpassword' WHERE variable_name='mysql-monitor_password';
# Ubuntu/Debian
sudo apt-get install keepalived
# CentOS/RHEL
sudo yum install keepalived
vrrp_script chk_mysql {
script "/usr/bin/mysql -uroot -ppassword -e 'SELECT 1'"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24
}
track_script {
chk_mysql
}
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24
}
track_script {
chk_mysql
}
}
# 下载安装
wget https://github.com/openark/orchestrator/releases/latest/download/orchestrator-3.2.6-linux-amd64.tar.gz
tar xzvf orchestrator-*.tar.gz
sudo mv orchestrator /usr/local/bin/
{
"Debug": true,
"ListenAddress": ":3000",
"MySQLTopologyUser": "orchestrator",
"MySQLTopologyPassword": "orchestrator_password",
"MySQLReplicaUser": "repl",
"MySQLReplicaPassword": "securepassword",
"RaftEnabled": true,
"RaftDataDir": "/var/lib/orchestrator",
"RaftBind": "server_ip",
"DefaultRaftPort": 10008
}
网络配置
监控指标
定期维护
安全考虑
以上方案可根据实际业务需求进行调整和扩展,对于生产环境建议先在测试环境验证并制定详细的回滚计划。