首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带通知的MySQL备份脚本

问带通知的MySQL备份脚本
EN

Stack Overflow用户
提问于 2018-05-20 20:14:23
回答 1查看 1.2K关注 0票数 0

这个周末,我一直在网上搜索,希望能找到各种各样的脚本,我可以编辑这些脚本来完成我的目标。

我正在尝试创建一个脚本,该脚本将自动备份和压缩所有mysql数据库到本地主机上的单个文件,然后在电子邮件中输出与每个db的大小相备份的dbs列表。

使用Centos7和最新的mysql(mariaDB) (2018年5月安装)和邮件代理邮件

这就是我到目前为止的剧本。

代码语言:javascript
复制
#!/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

如果在结束时仅在回显中使用$db,它只在电子邮件正文中包含性能db,基本上,我在电子邮件中试图获取dbs列表的任何其他内容都会显示emtpy。

我无法正确处理db大小部分,要么是语法错误,要么是没有将任何内容放入电子邮件中,即使我将结果输出到电子邮件正文为空的文件中。

前几个变量是我尝试在脚本中使用$myuser和$mypass,而不是为每个函数设置根/密码。

然后,我还可以获得dbs的列表,并“手动”删除系统DBs。

有人能帮我把这事做好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-21 05:01:46

我猜你想要这样的东西

代码语言:javascript
复制
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 && \
    printf '%s backed up\n' "$db"
fi
done | mail -s "WEB02 DBs Backed UP" myemail@email.com

所以,所有的输出到电子邮件。

您不应该在脚本中包括密码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50438981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档