基于 KunDB 的 TDC 环境备份元数据的方法

  运维必备技能, 数据迁移
内容纲要

概要描述

本文主要描述基于 KunDB 的 TDC 环境(例如版本号 >= 3.x)备份元数据库的方法。该方案与老版本基于 TxSQL 的 TDC 环境略有不同,特此说明。

详细说明

请按照以下步骤操作即可。

查看元数据库 Pod

登录 TDC Master 节点,以 root 用户执行命令:

kubectl -ntdcsys get po -owide | grep kundb

file

结果的第一列即为 TDC 元数据库 KunDB 的 Pod 名称,例如上图中的kundb-r56h6-0kundb-r56h6-1kundb-r56h6-2,共有3个 Pod 。

查看每个 KunDB Pod 中 MySQL 的 server id

对上一步找到的每个 KunDB Pod ,都进行如下操作。

  • 进入 Pod 内部
kubectl -ntdcsys exec -it {Pod 名} bash

file

  • 查看 MySQL 进程信息
ps -ef | grep mysqld

file

记下--socket参数及其值,例如上图中的--socket=/vt/vtdataroot/vt_0000000001/mysql.sock

  • 进入本地 MySQL Shell
mysql --socket={刚才查到的 socket 值}

file

  • 查看并记下 server id
select @@server_id;

file

例如该 MySQL 的 server id 即为1473990508,其对应的 Pod 名则是kundb-r56h6-0,记下该对应关系。

记录完成后,可以exit退出 MySQL Shell 并再次exit退出 Pod 。

  • 对其他 Pod 重复上述步骤

对其他 KunDB Pod 重复做以上操作,并最终记下 MySQL server id 与 Pod 的对应关系。最终可以得到全部3个 Pod 与其 server id 的对应关系,例如:

kundb-r56h6-0 : 1473990508

kundb-r56h6-1 : 346837982

kundb-r56h6-2 : 1327682539

查看 KunDB 集群当前的 server id

在 Master 节点执行

kubectl -ntdcsys exec -it {任意一个 KunDB Pod 名} -- mysql -h127.0.0.1 -P3306 -uvt_app -ptranswarp

file

查询当前的 server id

select @@server_id;

file

这样可以看出当前 KunDB 集群的 server id 为 1473990508

确定 KunDB 主节点

基于刚才查到的 KunDB 集群当前的 server id 和所有 KunDB Pod 与 server id 的对应关系,可以确定当前 KunDB 集群的主节点是哪个 Pod 。

例如本例中,根据 KunDB 集群的 server id 1473990508 查看再上一步得到对应关系,可以得到当前的主节点为 kundb-r56h6-0

在 KunDB 主节点 Pod 备份数据库

  • 进入主节点 Pod
kubectl -ntdcsys exec -it {上一步确定的 KunDB 主节点 Pod 名} bash

file

  • 查看 MySQL 进程信息
ps -ef | grep mysqld

file

记下--socket参数及其值,例如上图中的--socket=/vt/vtdataroot/vt_0000000001/mysql.sock

  • 使用 mysqldump + nohup 方式备份数据库

使用 nohup 是为了防止备份时间长导致 Pod 操作超时从而中断备份。

nohup mysqldump --socket={刚才查到的 socket 值} --set-gtid-purged=off --triggers --routines --events --all-databases > /tmp/alldata.sql &

file

可以看到 nohup 起的后台进程号为8209。记下该进程号,然后可Ctrl + C结束控制台输出。

  • 检查后台进程是否执行完毕
ps -ef | grep {进程号} | grep -v grep

file

如果该命令没有任何输出,说明后台进程执行完了;如果该命令输出了进程信息,说明导出进程还在执行中,等待几分钟再次查看,直到该命令没有输出为止。

  • 查看备份文件

后台进程执行完毕后,导出文件即为/tmp/alldata.sql

file

确认文件没有问题可exit退出 Pod 。

将备份文件拷贝到 Master 节点

在 Master 节点执行

kubectl cp tdcsys/{KunDB 主节点 Pod 名}:/tmp/alldata.sql /opt/alldata.sql

file

这样就将备份文件拷贝到 Master 节点的 /opt 目录下了。

这篇文章对您有帮助吗?

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

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

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

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