Linux下mysql自动备份

时间:2022-06-13 10:27:30

注:本文操作环境为SuSE,其他版本操作系统大致相同,有差异的地方会单独指出。

mysql中存储数据的重要性不用多加强调,一旦数据丢失,造成的影响不可估量,手动转储数据库比较麻烦,因此,需要系统自动在某个时间点执行备份功能,主要过程如下:

  1、创建存储运行脚本和数据库信息的目录(可根据个人需要建立),本文中是:

1 mkdir /home/seed/mysql_dump                         //存储脚本及数据信息
2 mkdir /home/seed/mysql_dump/mysql_data              //存储数据库转储文件
2、编写自动存储脚本文件,在mysql_dump目录下输入命令vim mysql_back.sh,文件内容如下:
 1 #!/bin/sh
 2 # File: /home/seed/mysql_dump/mysql_back.sh
 3 # Database info
 4 DB_NAME="regdb"          //数据库名称
 5 DB_USER="regadmin"       //数据库username   
 6 DB_PASS="regadmin"       //数据库password
 7 
 8 PATH="/home/seed/mysql_dump/mysql_data"
 9 /usr/bin/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME\
10      > $PATH/$DB_NAME.dump_`/bin/date +%Y%m%d_%H%M%S`.sql

  注:date前面指定了全路径,否则我的linux会报找不到date错误。
  3、给mysql_back.sh文件赋予可执行权限:

1 chmod 755 mysql_back.sh

 4、修改crontab文件,使用crontab -e命令打开文件,加入下面一行:

1 0 23 * * * /home/seed/mysql_dump/mysql_back.sh    //表示每天23点0分开始执行mysql_back.sh

   0 23 * * * /home/tong/pds/mysql_dump/mysql_back.sh,前面指定五个参数,分别表示:

1 # Example of job definition:
2 # .---------------- minute (0 - 59)
3 # |  .------------- hour (0 - 23)
4 # |  |  .---------- day of month (1 - 31)
5 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
6 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
7 # |  |  |  |  |
8 # *  *  *  *  * user-name command to be executed

注:不要vi /etc/crontab进行修改,因为可能由于输入语法错误,导致无法执行cron。

5、启动或者重启cron服务(系统默认是关闭该服务的):

1 root# service cron start                   //SuSE中是这样启动和重启,让我好找。。。
2 root# service cron restart 
3 
4 
5 
6 root# service crond start                  //其他系统是这样启动和重启,未验证,欢迎指出错误
7 root# service crond restart

6、OK,静待成功。
 注:个人建议测试成功与否时,可把时间调整为可迅速查看的时间(如当前时间往后推延2分钟,强烈建议首先使用date查看系统当前时间),不用非等到夜里。(纯属娱乐)

 可自行将cron服务加入到系统启动项中,否则,系统重启之后该服务会停止运行。