【发布时间】:2022-01-05 07:24:31
【问题描述】:
我有一个小而肮脏的脚本,用于每晚转储客户数据库中的一个表:
#!/bin/bash
DB_BACKUP="/backups/mysql_backup/`date +%Y-%m-%d`"
DB_USER="dbuser"
DB_PASSWD="dbpass"
# Create the backup directory
mkdir -p $DB_BACKUP
# Remove backups older than 10 days
find /backups/mysql_backup/ -maxdepth 1 -type d -mtime +10 -exec rm -rf {} \;
# Backup each database on the system
for db in $(mysql --user=$DB_USER --password=$DB_PASSWD -e 'show databases' -s --skip-column-names|grep -viE '(staging|performance_schema|information_schema)');
do echo "dumping $db-uploads"; mysqldump --user=$DB_USER --password=$DB_PASSWD --events --opt --single-transaction $db uploads > "$DB_BACKUP/mysqldump-$db-uploads-$(date +%Y-%m-%d).sql";
done
最近我们遇到了一些问题,其中一些表被损坏,mysqldump 失败并显示以下消息:
mysqldump: Got error: 145: Table './myDBname/myTable1' is marked as crashed and should be repaired when using LOCK TABLES
有没有办法让我检查 bash 脚本中是否发生这种情况,如果发生,则记录错误?
另外,这样的错误会停止脚本,还是会继续正常备份其余数据库?如果它会停止执行,有没有办法解决这个问题?
【问题讨论】:
标签: mysql bash error-handling