Skip to content

CentOS计划任务备份Mysql数据库

约 370 字大约 1 分钟

服务器LinuxMysql

2017-03-15

数据库的自动备份是日常服务运维非常重要的操作之一。使用腾讯云的云 mysql 数据库有自动备份功能,若是在服务器上单独部署 mysql 数据库,则需要结合计划任务,使其完成自动备份。

1、首先建立 sh 文件

用 VI 或者本地建立好 sh 文件上传服务器均可。

vi /usr/sbin/mysqlbak.sh

下段代码的意思是 将 mysql 数据库备份在目录/home/db_bak/下,以格式“date 年月日时分秒”做为目录名,将每个数据库生成单独的.sql 文件。

cd /home/db_bak/
dateDIR=`date +"%Y%m%d%H%M%S"`
mkdir -p db_$dateDIR
for i in `/home/local/mysql/bin/mysql -uroot -proot -e "show databases"  | grep -v "Database" | grep -v "performance_schema" | grep -v "mysql" | grep -v "information_schema"`
do
  /home/local/mysql/bin/mysqldump -uroot -proot $i> /home/db_bak/db_$dateDIR/${i}_${dateDIR}.sql
done

2、设置 sh 文件权限

需要设置 sh 文件的权限,也可以直接给 777 权限

chmod +x /usr/sbin/mysqlbak.sh

3、设置计划任务

crontab -e

24 10 * * * /usr/sbin/mysqlbak.sh

4、编码格式导致不执行的处理

当以记事本的方式在电脑上创建.sh 文件后,上传至服务器并不能成功运行,会报一些奇怪的错误。主要是因为“文件换行格式”的问题,在 windows 下是 PC 格式,而 CentOS 下是 Unix 格式,解决方法用诸如 Editplus 的工具打开,改变文件格式即可。