gpt4 book ai didi

linux - Bash 中的 MySQL 备份脚本

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:00 24 4
gpt4 key购买 nike

REF http://www.rsnapshot.org/howto/1.2/rsnapshot-HOWTO.en.html4.3.9.备份脚本

如果创建新数据库,我需要动态备份所有 mysql 数据库。有没有一种理想的方法可以用最少的代码在 bash 中做到这一点?

我是否需要登录到 mysql 并获取所有数据库?

最佳答案

您似乎想要一个 bash 脚本来对在 MySQL 中创建的动态数据库运行备份。您可以在根目录下的my.cnf 或# [ Define Variables ] 下的bash 脚本中添加mysql root 用户帐户信息。

你需要用 chmod 来修改 bash 脚本

$sudo chmod +x backupmysql.sh

这将允许您使用以下命令运行脚本。

$sudo ./backupmysql.sh

您可以随意命名脚本。在本例中,我将其命名为 backupmysql.sh。

这是 bash 脚本:

#!/bin/bash

# [ Define Variables ]
HOST=`hostname -s`
syslogtag=MySQL-Backup
DEST=/var/dba/backup/
DBS="$(mysql -u root -Bse 'show databases' | egrep -v '^Database$|hold$' | grep -v 'performance_schema\|information_schema')"
DATE=$(date +'%F')

#[ Individually dump all databases with date stamps ]
for db in ${DBS[@]};
do

GZ_FILENAME=$HOST-$db-$DATE.sql.gz
mysqldump -u root --quote-names --opt --single-transaction --quick $db > $DEST$HOST-$db-$DATE.sql
ERR=$?

if [ $ERR != 0 ]; then
NOTIFY_MESSAGE="Error: $ERR, while backing up database: $db"
logger -i -t ${syslogtag} "MySQL Database Backup FAILED; Database: $db"
else
NOTIFY_MESSAGE="Successfully backed up database: $db "
logger -i -t ${syslogtag} "MySQL Database Backup Successful; Database: $db"
fi
echo $NOTIFY_MESSAGE
done

如果您有大文件要备份,您可以将 bash 脚本中的语句替换为 mysqldump 使用 gzip 压缩文件。

mysqldump -u root --quote-names --opt --single-transaction --quick $db | gzip -cf > $DEST$HOST-$db-$DATE.sql.gz

您可以使用 gunzip 解压缩文件。

关于linux - Bash 中的 MySQL 备份脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201330/

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