Centos 实战-MySQL定时全量备份(1)
/usr/bin/mysqldump -uroot -p123456 --lock-all-tables --flush-logs test > /home/backup.sql
如上一段代码所示,其功能是将 test 数据库全量备份。其中
MySQL 用户名为:root
密码为:123456
备份的文件路径为:/home (当然这个路径也是可以按照个人意愿修改的。)
备份的文件名为:backup.sql
参数 —flush-logs:使用一个新的日志文件来记录接下来的日志
参数 —lock-all-tables:锁定所有数据库
以下为我使用的数据库备份脚本文件:
本文件功能不是很复杂,首先是各种变量赋值。然后备份数据库,接着是进入到备份文件所在的目录,再将备份文件压缩。
其中倒数第三行是使用 nodejs 将备份的数据库文件上传到七牛云中,这里就不在过多的阐述了,与本文主题不符,想看具体实现可以查看 GitHub 源码。其中相应的变量改成自己的值即可拿过来使用。
#!/bin/bash #在使用之前,请提前创建以下各个目录 #获取当前时间 date_now=$(date "+%Y%m%d-%H%M%S") backUpFolder=/app username="root" password="123456" db_name="dbname" #定义备份文件名 fileName="${db_name}_${date_now}.sql" #定义备份文件目录 backUpFileName="${backUpFolder}/${fileName}" echo "starting backup mysql ${db_name} at ${date_now}." /usr/bin/mysqldump -u${username} -p${password} --lock-all-tables --flush-logs ${db_name} > ${backUpFileName} #进入到备份文件目录 cd ${backUpFolder} #压缩备份文件 tar zcvf ${fileName}.tar.gz ${fileName} # use nodejs to upload backup file other place #NODE_ENV=$backUpFolder@$backUpFileName node /home/tasks/upload.js date_end=$(date "+%Y%m%d-%H%M%S") echo "finish backup mysql database ${db_name} at ${date_end}."
恢复全量备份
mysql -h localhost -uroot -p123456 < bakdup.sql
或者
mysql> source /app/bakdup.sql
定时备份
输入如下命令,进入 crontab 定时任务编辑界面:
crontab -e
添加如下命令,其意思为:
每分钟执行一次备份脚本: * * * * * sh /app/mysqlBackup.sh 每五分钟执行 : */5 * * * * sh /app/mysqlBackup.sh 每小时执行: 0 * * * * sh /app/mysqlBackup.sh 每天执行: 0 0 * * * sh /app/mysqlBackup.sh 每周执行: 0 0 * * 0 sh /app/mysqlBackup.sh 每月执行: 0 0 1 * * sh /app/mysqlBackup.sh 每年执行: 0 0 1 1 * sh /app/mysqlBackup.sh