如何创建一个脚本来在单独的文件上备份 MySQL 数据库?

如何创建一个脚本来在单独的文件上备份 MySQL 数据库?

我需要创建一个脚本来自动执行数据库服务器的备份过程。今天,服务器上有 19 个数据库,为了防止创建某些模式而不是脚本考虑的模式,我希望它备份“显示模式”查询列出的所有数据库。

我的想法是每个模式每天转储两次(即,0h00 和 12h00),压缩并保存到文件夹中/home/{user}/database_backup/daily/[day_of_week]

每周一次,所有[day_of_week]文件夹都会被压缩并保存到/home/{user}/database_backup/weekly/[week_of_month].

最后,每月一次,所有内容[week_of_month]都会被压缩并保存/home/{user}/database_backup/monthly/并留在那里,以便另一个应用程序可以将其备份到磁带上。

/var/lib/mysql如今,这种磁带备份应用程序每天都会进行备份,但应该需要的是,恢复这些文件或在不同的数据库服务器上使用它们有些困难。

我知道这是一个太开放的问题,但一如既往,我们非常感谢您的帮助。

答案1

您可以循环访问服务器上的所有数据库,然后在 shell 脚本中将它们一一导出:

#!/bin/sh
HOSTNAME='localhost'
MYSQLUSER='root'
MYSQLPASS='xyz'
for DB in $(mysql -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --batch --skip-column-names --execute="show databases");
do
    local FILENAME=${HOSTNAME}_Database_${DB}.sql.gz
    mysqldump $DB -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --triggers --routines --event | gzip -c > $FILENAME
done

相关内容