【发布时间】:2018-05-20 20:14:23
【问题描述】:
整个周末我都在网上搜索,希望能找到各种我可以编辑的脚本来实现我的目标。
我正在尝试创建一个脚本,该脚本将自动备份和压缩所有 mysql 数据库到本地主机上的单个文件,然后在电子邮件中输出备份的数据库列表以及每个数据库的大小
使用 Centos7 和最新的 mysql(mariaDB)(2018 年 5 月安装)和 mailx 作为邮件代理
这是我目前的脚本...
#!/bin/bash
# Custom script to backup all MySQL dbs on localhost
# and output db list and sizes to email
# Some Variables
myuser="root"
mypass="******"
# Get current date
# date +"%d-%m-%y %T"
# Get list of DBs to backup
mysql -u $myuser -p$mypass -e 'show databases' > dblist
# Cleanup dblist
sed -i '/information_schema/d' dblist
sed -i '/mysql/d' dblist
sed -i '/performance_schema/d' dblist
sed -i '/Database/d' dblist
for db in $(mysql -u root -p****** -e 'show databases');
do
if [[ "$db" != *Database* && "$db" != *schema* && "$db" != "mysql" && "$db" != *performance* && "$db" != "mysql" ]];
then
mysqldump -u root -p****** $db | gzip -c > /backups/WEB02DBs/$db.sql.gz
fi
done
echo $dblist | mail -s "WEB02 DBs Backed UP" myemail@email.com
如果我在最后的 echo 中只使用 $db,它只包括电子邮件正文中的性能 db,基本上我尝试在电子邮件中获取 dbs 列表的任何其他内容都会出现 emtpy
数据库大小部分我无法正确处理,要么存在一些语法错误,要么没有将任何内容放入电子邮件中,即使我将结果输出到电子邮件正文为空的文件
前几个变量是我尝试在脚本中使用 $myuser 和 $mypass 而不是为每个函数设置 root/密码
然后我还可以获取数据库列表,并“手动”删除系统数据库
谁能帮我搞定这个工作?
【问题讨论】:
标签: mysql bash shell centos7 mailx