清理mysql binlog日志的脚本
时间: 2023-05-18 21:03:22 浏览: 199
以下是一个清理 MySQL binlog 日志的脚本示例:
```bash
#!/bin/bash
# 设置变量
MYSQL_USER="root"
MYSQL_PASSWORD="password"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
BINLOG_DIR="/var/lib/mysql"
BINLOG_PREFIX="mysql-bin"
# 获取当前 binlog 文件名
CURRENT_BINLOG=$(mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -h${MYSQL_HOST} -P${MYSQL_PORT} -e "SHOW MASTER STATUS\G" | awk '/File:/ {print $2}')
# 获取所有 binlog 文件名
ALL_BINLOGS=$(ls ${BINLOG_DIR}/${BINLOG_PREFIX}* | grep -v ${CURRENT_BINLOG})
# 删除旧的 binlog 文件
for BINLOG in ${ALL_BINLOGS}; do
rm -f ${BINLOG}
done
```
这个脚本会获取当前正在使用的 binlog 文件名,然后删除所有旧的 binlog 文件。你可以将其保存为一个文件,比如 `clean_binlogs.sh`,然后在命令行中运行它。
注意:在运行脚本之前,请确保你已经备份了所有的 binlog 文件,以防止数据丢失。
相关问题
清理Mysql binlog日志的脚本
以下是一个清理 MySQL binlog 日志的脚本示例:
#!/bin/bash
# 设置变量
MYSQL_USER="root"
MYSQL_PASSWORD="password"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
BINLOG_DIR="/var/lib/mysql/"
BINLOG_PREFIX="mysql-bin"
BINLOG_DAYS_TO_KEEP="7"
# 获取当前日期
CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S")
# 获取需要删除的 binlog 文件名
BINLOG_FILES_TO_DELETE=$(mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -h${MYSQL_HOST} -P${MYSQL_PORT} -e "SHOW BINARY LOGS;" | awk '{if($1 < DATE_SUB(NOW(), INTERVAL ${BINLOG_DAYS_TO_KEEP} DAY)) print $1}' | grep ${BINLOG_PREFIX})
# 删除 binlog 文件
for BINLOG_FILE in ${BINLOG_FILES_TO_DELETE}
do
echo "${CURRENT_DATE} - Deleting binlog file ${BINLOG_FILE}"
rm -f ${BINLOG_DIR}/${BINLOG_FILE}
done
echo "${CURRENT_DATE} - Done."
阅读全文