1. 备份工具我们使用官方mysqldump

mysqldump -uuser -ppassword -hhost -Pport database >database.dmp

  • 目前我的服务器的192.168.10.174
    备份数据库 mydb

        mysqldump -uroot -p'1qaz!QAZ' mydb >mydb.dmp
    

    • 查看下这个mydb.dmp,其实是一个SQL文件。
      部分内容如下

    2 我们备份的机器假如是192.168.10.42

  • scp 该文件到目标机器
    sshpass -p123456 scp mydb.dmp root@192.168.10.42:/root

如果 ssh或者scp加上 -o StrictHostKeyChecking=no 这个参数,表示系统不再提示要不要保存密钥,这样可以sshpass和scp,ssh命令之间的组合使用不再有交互干预,可以自动化执行。

3. 直接运行导入命令,输入重定向.

 sshpass -p123456 ssh root@192.168.10.42 mysql -uroot -p'1qaz!QAZ' <<EOF
 drop database mydb;
 create database mydb charset utf8;
 use mydb;
 source /root/mydb.dmp;
 EOF

项目

需求说明

  1. 公司内部服务器上,有3台机器,是一主二从。先做要求每周日早上3点备份所有的数据库
  2. 备份文件名称为 backup_ip_YYYYMMDD.dmp ,放在 /data/backup
    3,数据库如果备份成功,发邮件到 rudolfyan@qq.com,邮件内容包含开始备份时间和结束时间,并给出文件的带下
    格式如下
    经理你好,
    今天从3:01:01秒开始备份,到3:01:23秒结束,
    文件名称为 master.192.168.10.42.20230923.dmp,文件大小为 61M;
  3. 删除7周之前的备份文件。

提示

日期使用 date 命令

定时问题

crontab 命令

邮件问题

yum -y install mailx
mailx -s “通知” rudolfyan@qq.com < mailbody
mailbody:是个文件,里面其实是模板,要替换里面的各种变量。内容如下

经理你好,
今天从$starttime秒开始备份,到$endtime秒结束,
文件名称为 $filename,文件大小为 #filesize;

作者:严锋  创建时间:2023-09-20 13:48
最后编辑:严锋  更新时间:2025-05-09 15:48