mysql备份脚本

hmtdttj4  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(414)

我整个周末都在网上搜索,希望能找到各种各样的脚本,我可以编辑它们来实现我的目标。
我正在尝试创建一个脚本,该脚本将自动备份和压缩所有mysql数据库到localhost上的单个文件,然后输出备份的dbs列表以及电子邮件中每个db的大小
使用centos7和最新的mysql(mariadb)(2018年5月安装)和mailx for mail agent
这是我到目前为止的剧本。。。

  1. # !/bin/bash
  2. # Custom script to backup all MySQL dbs on localhost
  3. # and output db list and sizes to email
  4. # Some Variables
  5. myuser="root"
  6. mypass="******"
  7. # Get current date
  8. # date +"%d-%m-%y %T"
  9. # Get list of DBs to backup
  10. mysql -u $myuser -p$mypass -e 'show databases' > dblist
  11. # Cleanup dblist
  12. sed -i '/information_schema/d' dblist
  13. sed -i '/mysql/d' dblist
  14. sed -i '/performance_schema/d' dblist
  15. sed -i '/Database/d' dblist
  16. for db in $(mysql -u root -p******-e 'show databases');
  17. do
  18. if [[ "$db" != *Database* && "$db" != *schema* && "$db" != "mysql" && "$db" != *performance* && "$db" != "mysql" ]];
  19. then
  20. mysqldump -u root -p******$db | gzip -c > /backups/WEB02DBs/$db.sql.gz
  21. fi
  22. done
  23. echo $dblist | mail -s "WEB02 DBs Backed UP" myemail@email.com

如果我在最后的echo中只使用$db,它只包括email主体中的性能db,基本上我试图在email中获得dbs列表的任何其他东西都会出现emtpy
db大小的部分我不能得到正确的,要么有一些语法错误,或者它把什么都没有到电子邮件,即使我输出的结果到一个文件的电子邮件的正文是空的
前几个变量是我试图在脚本中使用$myuser和$mypass,而不是为每个函数设置root/密码
然后我还可以得到一个dbs列表,并“手动”删除系统dbs
有人能帮我把这个修好吗?

t2a7ltrp

t2a7ltrp1#

我猜你想要这样的东西

  1. for db in $(mysql -u root -p******-e 'show databases');
  2. do
  3. if [[ "$db" != *Database* && "$db" != *schema* && "$db" != "mysql" && "$db" != *performance* && "$db" != "mysql" ]];
  4. then
  5. mysqldump -u root -p******$db | gzip -c > /backups/WEB02DBs/$db.sql.gz && \
  6. printf '%s backed up\n' "$db"
  7. fi
  8. done | mail -s "WEB02 DBs Backed UP" myemail@email.com

所以所有的输出都会发送到电子邮件。
脚本中不应包含密码。

相关问题