一、从库服务
从库服务在备库不可用时提供读服务,而在正常情况下只有从库提供服务。
从库不可用:
从库进程挂掉
从库延时超过120秒(如果延时确实超过120秒,从库可能发生复制异常,默认阈值为120秒,参数变量为mysql-monitor_slave_lag_when_null)
二、从库维护
设置从库状态为OFFLINE_SOFT
检查从库是否还有活跃连接
执行以下SQL查询,查看是否有客户端连接:
复制代码
sql`SELECT hostgroup hg, srv_host, status, ConnUsed, ConnFree, ConnOK, ConnERR FROM stats_mysql_connection_pool WHERE ConnUsed+ConnFree > 0 ORDER BY hg, srv_host;`
关闭数据库进行维护,维护完毕后启动数据库。
启动数据库后,设置从库状态为ONLINE。
三、proxysql自身摘除维护
通过show processlist查看是否还有链接。
使用ngrep命令过滤存活流量,通过以下命令:
复制代码
bash`ngrep -W byline -w -i "delete|update|select|insert" port -t -d eth0 |grep -v '本机ip'|grep -v 'slamonitor'`
四、高可用性
后端:
使用proxysql+mha配置,proxysql配置vip,mha切换不影响proxysql。
使用proxysql+orc配置,proxysql配置实体ip,利用orc钩子脚本调整proxysql具体配置。
前端:
使用proxysql+etcd+coredns架构,etcd动态增减存活proxysql代理,coredns提供前端解析。
五、集群管理
核心表:proxysql_servers
同步表:mysql_replication_hostgroups、mysql_servers、mysql_users、mysql_query_rules、proxysql_servers。
非同步表:admin_variables、mysql_variables。
同步控制变量:通过更新global_variables表中的相关变量值来实现同步控制。具体更新如下:
复制代码
sql`update global_variables set variable_value='true' where variable_name='admin-checksum_mysql_query_rules';
update global_variables set variable_value='true' where variable_name='admin-checksum_mysql_servers';
update global_variables set variable_value='true' where variable_name='admin-checksum_mysql_users';
update global_variables set variable_value='true' where variable_name='admin-cluster_mysql_query_rules_save_to_disk';
update global_variables set variable_value='true' where variable_name='admin-cluster_mysql_servers_save_to_disk';
update global_variables set variable_value='true' where variable_name='admin-cluster_mysql_users_save_to_disk';
update global_variables set variable_value='true' where variable_name='admin-cluster_proxysql_servers_save_to_disk';`
网友评论