gpt4 book ai didi

mysql - 我怎样才能清除完整的从属二进制日志,减去 50?

转载 作者:行者123 更新时间:2023-11-29 02:16:16 25 4
gpt4 key购买 nike

我正在使用 bash 清除 Master 上的二进制日志,前提是 Slave 已完成它们。相反,我想在服务器上留下更多的日志。你能帮我把 mysql-bin.000345 变成 mysql-bin.000295 (345 减去 50)吗?

这是我的脚本:

# Fetch the current `Relay_Master_Log_File` from Slave
relay_master_log_file=$(ssh user@slave "mysql -hlocalhost -uroot -e 'SHOW SLAVE STATUS\G' | grep Relay_Master_Log_File | cut -f2- -d':' | sed -e 's/^[ \t]*//'")

# Purge binary logs on Master up to the current `Relay_Master_Log_File`
purge_cmd="PURGE BINARY LOGS TO '$relay_master_log_file';"
ssh user@master <<EOF
mysql -e "$purge_cmd"
EOF

但我想在 Master 上保留 50(或 n)个二进制日志。

最佳答案

假设您在变量中有 mysql-bin.000345,您可以执行以下步骤:

  1. 用尾随零去除开头部分,只留下 345
  2. 使用 Bash 算术 $((...)) 从 345 中减去 n
  3. 使用printf 格式化用零填充的结果

例如:

oldname=mysql-bin.000345
num=$(shopt -s extglob; echo ${filename##mysql-bin.+(0)})
newname=mysql-bin.$(printf '%06d' $((num - n)))

关于mysql - 我怎样才能清除完整的从属二进制日志,减去 50?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39208833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com