我需要创建一个脚本来自动执行数据库服务器的备份过程。今天,服务器上有 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