双向复制配置
sql
Server 1 上执行
CHANGE MASTER TO
MASTER_HOST='server2_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
Server 2 上执行
CHANGE MASTER TO
MASTER_HOST='server1_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
3、MySQL Group Replication(MGR)
环境准备
ini
所有节点通用配置
[mysqld]
基础配置
server_id = 1
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_checksum = NONE
Group Replication 配置
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = node1:33061
loose-group_replication_group_seeds = node1:33061,node2:33061,node3:33061
loose-group_replication_bootstrap_group = OFF
启动Group Replication
sql
在第一个节点上启动
SET SQL_LOG_BIN=0;
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
启动组复制
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
在其他节点上加入
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;
if not check_mysql_connection(master_host, 3306):
print(Master is down!)
send_alert(Master database is down!)
尝试故障转移到从库
for slave in slave_hosts:
if check_mysql_connection(slave, 3306):
promote_slave_to_master(slave)
send_alert(fFailover to {slave} completed)
break
7、性能优化建议
参数调优
ini
内存相关
innodb_buffer_pool_size = 70% of RAM
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M