应急预案:专有云V3环境中xuanyuan数据库存在未提交事务的修复方法
1. 概述
本文主要介绍在专有云V3环境中,xuanyuan数据库存在未提交事务的修复方法。
1.1. 适用范围
- 专有云V3企业版,SLB
说明:适用于专有云V3.0.0~V3.7.1环境,包含V3.0.0和V3.7.1环境。
1.2. 用户告知
- 适用平台:x86
- 授权级别:L1(一线驻场工程师)
- 临时或固化方案:临时
- 操作复杂度:低
- 预估执行时长:60分钟
- 业务影响:否
- 风险等级:低
说明:按步骤逐台操作无风险。
2. 问题描述
天基控制台上SlbAg#服务角色频繁出现未达终态,然后自动恢复,业务侧调用SLB API接口变配时发生报错。
3. 解决方案
3.1. 环境检查
- 登录xuanyuan数据库,关于如何登录xuanyuan数据库请参见专有云环境如何登录xuanyuan数据库。
- 执行以下SQL语句,查看未提交的事务。
select * from information_schema.innodb_trx\G;
系统显示类似如下,显示有73条未提交的事务,业务侧调用SLB API执行变配时,会存在阻塞情况。*************************73. row*******************
trx_id: 421148987471976
trx_state: RUNNING
trx_started: 2019-11-18 20:54:09
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 0
trx_mysql_thread_id: 10243856
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 0
trx_lock_structs: 0
trx_lock_memory_bytes: 360
trx_rows_locked: 0
trx_rows_modified: 0
trx_concurrency_tickets: 0
trx_isolation_level: READ COMMITTED
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 10000
trx_is_read_only: 0
trx_autocommit_non_locking: 0
73 rows in set (0.01 sec)
3.2. 实施步骤
逐台重启slb-control-master容器上的服务,操作如下:
- 登录天基控制台,在Project框中过滤slb,单击slbClustet-A-XXXX集群右侧的集群运维中心,选择slb-controller服务和SlbControlMaster#服务角色,单击机器右侧的Terminal,登录对应的机器。
- 先登录到一个slb-control-master容器,依次执行以下命令,重启slb-control-master服务。
sudo /etc/init.d/slb-control-master status
sudo /etc/init.d/slb-control-master disable
sudo /etc/init.d/slb-control-master restart
sudo /etc/init.d/slb-control-master enable
sudo /etc/init.d/slb-control-master status - 执行完成确认容器到达终态后,再登录另外一个slb-control-master容器,执行重启操作。
- 登录天基控制台,在Project框中过滤slb,单击slbClustet-A-XXXX集群右侧的集群运维中心,选择slb-controller服务和SlbMonitorMaster#服务角色,单击机器右侧的Terminal,登录对应的机器。
- 先登录到一个slb-monitor-master容器,依次执行以下命令,重启slb-monitor-master服务。
sudo /etc/init.d/slb-monitor-master restart
sudo /etc/init.d/slb-monitor-master status - 执行完成确认容器到达终态后,再登录另外一个slb-monitor-master容器,执行重启操作。
3.3. 结果验证
登录xuanyuan数据库,执行以下SQL语句,输出结果为空,说明SLB管控接口调用没有阻塞情况。
select * from information_schema.innodb_trx order by trx_started limit 2\G;
4. 回滚方案
管控Docker容器服务均双节点部署,按步骤逐台重启操作,无需回退。