内容纲要
概要描述
TxSQL 数据目录空间占用高,存在大量 binlog 文件,是否可以进行清理,如何进行清理?
本文主要介绍清理 TxSQL binlog 日志文件的方法。
详细说明
-
TxSQL 数据目录查看
$ grep DATA_DIR /etc/txsql1/conf/install_conf.sh DATA_DIR=/vdir/mnt/disk1/hadoop/txsql1
以上输出为 TxSQL 容器数据目录,物理节点 hostPath 则为去掉 /vdir 的部分
/mnt/disk1/hadoop/txsql1
-
进入数据目录查看文件占用情况
$ cd /mnt/disk1/hadoop/txsql1/percona.workspace/binlog/ && ls -lrt
-
找到当前节点的 TxSQL pod,并进入 pod
$ kubectl get po -o wide | grep txsql1 $ kubectl exec -it txsql-server-txsql1-997564c5c-457hp bash # txsql-server-txsql1-997564c5c-457hp 为上面获取到的 pod name
-
进入当前 TxSQL 的 mysql 客户端
$ /usr/bin/txsql/tools/txsql.sh localshell
-
查看 binlog 文件
mysql> show master status\G; -- 查看当前使用的 binlog 文件 mysql> show binary logs; -- 查看所有的 binlog 文件
-
使用 purge 命令,把 mysql-bin.XXXXXX 之前的所有文件都清理掉
mysql-bin.XXXXXX 这个参数一般应该写上一步列出的编号最大的文件;
如果文件较多,建议分批次执行,避免一次性清理 IO 过大。mysql> purge binary logs to 'mysql-bin.000054'; mysql> purge binary logs to 'mysql-bin.000057';
-
检查是否清理成功
再次执行show binary logs;
退出容器,查看节点数据目录cd /mnt/disk1/hadoop/txsql1/percona.workspace/binlog/ && ls -lrt
,之前的文件已经被清理
-
同样的步骤清理其余 TxSQL 节点
如果其他 TxSQL 节点也存在占用问题,参考之前的步骤进行清理即可 -
全部清理完毕,检查 TxSQL 状态
每个 TxSQL 节点都清理完毕后,参考第 3 步的命令连接到任意健康的 TxSQL pod,执行命令检查状态,正常会输出 ok 和 master 节点信息
$ /usr/bin/txsql/tools/txsql.sh status