MYSQL 自动按表备份SQL 且自动压缩脚本
按表备份,可以按表还原
我是容器部署的mysql 我需要进到容器里面执行脚本 docker exec -it mysql bash
#!/bin/bash
DB_NAME="databases"
USER="root"
PASSWORD="root"
TABLES=("transaction_history" "interface_log" "full_link")
for TABLE in "${TABLES[@]}"; do
mysqldump -u "$USER" -p"$PASSWORD" --databases "$DB_NAME" --tables "$TABLE" > "${TABLE}_20240101-20240701.sql"
gzip "${TABLE}_20240101-20240701.sql"
done
执行的时候如果报错
: not foundbles.sh: 2: back_sql_tables.sh:
: not foundbles.sh: 6: back_sql_tables.sh:
back_sql_tables.sh: 7: back_sql_tables.sh: Syntax error: "(" unexpected
这是windows和unix系统格式不一样,【在 Unix/Linux 系统中,脚本文件应使用 LF(Line Feed)作为换行符,而在 Windows 系统中,换行符通常是 CRLF(Carriage Return + Line Feed)】
在宿主机中执行命令进行转换sed -i 's/\r$//' back_sql_tables.sh
有些数据库较大,备份时间较长,前台执行容易断,可以使用nohup 命令进行后台执行
nohup ./backup_tables.sh > backup_output.log 2>&1 &
惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝