TXSQL单节点故障离线修复

内容纲要

概要描述


场景:个别txsql节点状态异常,但是多数txsql节点状态正常;
常见报错信息:pod日志显示: Connection refused; ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 2; 或者是pod的STATUS是running的,但是READY是0/1;

详细说明


此类问题常用修复步骤:

  1. 确定txsql master节点
  2. 确定并备份故障节点的txsql数据目录
  3. 删除txsql故障节点上txsql的数据
  4. 从txsql master节点同步数据至问题节点
  5. 启动txsql并检查服务

案例说明

master节点:tdh-61,ip 172.22.22.61
故障节点:tdh-62,ip 172.22.22.62
DATA_DIR(数据路径):宿主机是/mnt/disk1/hadoop/txsql1/ pod内是/vdir/mnt/disk1/hadoop/txsql1/

一、确定txsql master节点

  1. 列出所有txsql-server的pod
    [root@tdh-61~]$ kubectl get pods -owide|grep txsql
  2. 选择任一running状态的txsql-server-txsql的pod,进入bash命令行,例如:
    [root@tdh-61~]$ kubectl exec -ti txsql-server-txsql1-597f7ff996-sz55f bash
  3. 执行 /usr/bin/txsql/tools/txsql.sh list 命令列出所有txsql,该命令会同时输出master节点IP信息,例如master 172.22.22.61
    [root@tdh-62 tools]# /usr/bin/txsql/tools/txsql.sh list
    get master 172.22.22.61 expire time 1564037694 Thu Jul 25 14:54:54 2019
    ip 172.22.22.61 port 17000
    ip 172.22.22.62 port 17000
    ip 172.22.22.63 port 17000

二、确定并备份故障节点的txsql数据目录

  1. 登录 Manager 页面 (http://manager_ip:8180)
  2. 点击 TxSQL 组件,并点击 配置 按钮进入TxSQL组件的配置参数页面
    file
  3. 点击查看 data.dir 参数的各节点路径值,确定故障节点的txsql数据路径
  4. 备份故障节点上的 auto.cnf (一般路径为$DATA_DIR$/percona.workspace/data/auto.cnf)至宿主机上的安全目录下,例如:
    # cd /mnt/disk1/hadoop/txsql1/percona.workspace/data
    # cp -p auto.cnf /etc/txsql1/

三、删除txsql故障节点上txsql的数据

删除数据之前需要停止txsql服务,可以通过manager页面停止txsql组件;

  1. Manager 页面,停止 TxSQL 组件服务;
    file
  2. 在TxSQL故障节点上,根据第二步确定的txsql数据目录,删除txsql的数据,例如:
    # rm -rf /mnt/disk1/hadoop/txsql1/percona.workspace
    # rm -rf /mnt/disk1/hadoop/txsql1/phxbinlogsvr

四、从txsql master节点同步数据至问题节点

根据第一步找到的txsql master节点和第二步找到的数据路径,在txsql master节点上,用scp命令同步数据至故障节点$DATA_DIR$/percona.workspace,例如:

# cd /mnt/disk1/hadoop/txsql1/
# scp -r percona.workspace root@tdh-62:/mnt/disk1/hadoop/txsql1
# scp -r phxbinlogsvr root@tdh-62:/mnt/disk1/hadoop/txsql1
//tdh-62为txsql故障节点

备注:如果scp的两个节点的数据路径DATA_DIR不一致,在scp之后需要修改$DATA_DIR$/percona.workspace/binlog/mysql-bin.index文件内容为故障节点的数据路径

五、恢复auto.cnf

使用第二步备份的故障节点的auto.cnf覆盖从master节点复制过来的$DATA_DIR$/percona.workspace/data/auto.cnf文件,例如:

# cp -p /etc/txsql1/auto.cnf /mnt/disk1/hadoop/txsql1/percona.workspace/data

六、修改权限

从master节点scp的数据及目录需要修改权限和owner,参照如下:

# chown -R 1000:1000 /mnt/disk1/hadoop/txsql1/percona.workspace
# chown -R 1000:1000 /mnt/disk1/hadoop/txsql1/phxbinlogsvr

七、启动txsql并检查服务

  1. 在Manager页面启动txsql服务;
  2. 检查故障节点(如tdh-62)服务是否正常,例如:
    1. 进入故障节点pod:
      # kubectl get pods -owide |grep txsql
      # kubectl exec -ti txsql-server-txsql1-597f7ff996-sz55f bash
    2. 检查 phxbinlogsvr是否已经正常工作,至少看到一个非空的EVENTDATA-XXXX 文件,例如:
      # ls -lh /vdir/mnt/disk1/hadoop/txsql1/phxbinlogsvr/event_data
      total 52M
      -rw-r--r--  1 root root 3.6M Jul 25 15:51 EVENTDATA-224348
      -rw-r--r--  1 root root  48M Jul 15 21:27 EVENTDATA-95622
      drwxr-xr-x. 2 root root 4.0K Jul 24 18:45 event_lb
    3. 能够看到正确的成员信息,能够成功登陆本地mysql服务,并且保证流水正常,(Slave_IO_Running和Slave_SQL_Running都是Yes)例如:
      # cd /usr/bin/txsql/tools
      # ./txsql.sh list
      get master 172.22.22.61 expire time 1564041903 Thu Jul 25 16:05:03 2019
      ip 172.22.22.61 port 17000
      ip 172.22.22.62 port 17000
      ip 172.22.22.63 port 17000
      # ./txsql.sh localshell
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      mysql> show slave status \G; 
      *************************** 1. row ***************************
                 Slave_IO_State: Waiting for master to send event
                    Master_Host: 127.0.0.1
                    Master_User: replica
                    Master_Port: 6000
                  Connect_Retry: 60
                Master_Log_File: mysql-bin.000007
            Read_Master_Log_Pos: 427199
                 Relay_Log_File: relay-log.000002
                  Relay_Log_Pos: 427282
          Relay_Master_Log_File: mysql-bin.000007
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
                Replicate_Do_DB: 
      此处可以看到list成员信息正确,能够登录localshell服务,流水状态正常(Slave_IO_Running和Slave_SQL_Running都是Yes);
    4. 至此TXSQL单节点故障离线修复完成且成功。

这篇文章对您有帮助吗?

平均评分 5 / 5. 次数: 1

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。