简介:TG@luotuoemo
本文由腾讯云代理商【聚搜云】撰写
1. 主从复制基础配置
(1)主库配置
-
编辑主库的
my.cnf配置文件,开启二进制日志并设置唯一的server-id:ini复制
[mysqld] server-id = 1 log-bin = mysql-bin binlog_format = mixed expire_logs_days = 5 -
重启MySQL服务以应用配置:
bash复制
systemctl restart mysql -
创建用于复制的用户并授权:
sql复制
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; -
查看主库状态,记录
File和Position值:sql复制
SHOW MASTER STATUS;
(2)从库配置
-
编辑从库的
my.cnf配置文件,设置唯一的server-id:ini复制
[mysqld] server-id = 2 -
重启MySQL服务并停止从库复制:
sql复制
STOP SLAVE; -
使用
CHANGE MASTER TO命令配置从库连接到主库:sql复制
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='记录的File值', MASTER_LOG_POS=记录的Position值; -
启动从库复制并检查状态:
sql复制
START SLAVE; SHOW SLAVE STATUS\G;确保
Slave_IO_Running和Slave_SQL_Running均为Yes。
2. 手动切换
在主库故障时,手动切换到从库:
-
停止从库的复制:
sql复制
STOP SLAVE; -
将从库设置为只读模式(可选):
sql复制
SET GLOBAL read_only = OFF; -
更新应用程序的数据库连接配置,指向新的主库(从库)。
3. 自动切换工具
(1)使用Keepalived实现高可用
Keepalived通过虚拟IP(VIP)实现主从切换,确保客户端连接的连续性。
-
在主从库上安装Keepalived:
bash复制
yum install keepalived -y -
配置主库的
keepalived.conf:ini复制
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass chtopnet } virtual_ipaddress { 192.168.93.132 } } -
配置从库的
keepalived.conf:ini复制
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass chtopnet } virtual_ipaddress { 192.168.93.132 } } -
启动Keepalived服务:
bash复制
systemctl enable keepalived systemctl start keepalived
(2)使用MHA(Master High Availability)
MHA是一个流行的MySQL高可用性解决方案,支持自动故障切换。
-
安装MHA Manager和Node:
bash复制
yum install mha4mysql-manager mha4mysql-node -y -
配置MHA Manager:
ini复制
[server_default] user=replication_user password=password master_ip_failover_script=/path/to/master_ip_failover [server1] hostname=master_ip [server2] hostname=slave_ip -
配置故障切换脚本(如
master_ip_failover),用于处理VIP切换。 -
启动MHA Manager:
bash复制
mha_manager --conf=/path/to/mha.cnf
4. 半同步复制
半同步复制可以减少主从延迟,提高数据一致性。
-
在主从库上加载半同步插件:
sql复制
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; -
启用半同步复制:
sql复制
SET GLOBAL rpl_semi_sync_master_enabled = 1; SET GLOBAL rpl_semi_sync_slave_enabled = 1;