由于系统基本开发完成,为了保证数据安全,需要将数据库自动备份,以下是实现自动备份的步骤:
一、在本地自动备份数据库
1. 使用mysql自带的服务mysqldump实现自动备份,首先使用vim命令编辑以下命令并且保存
#!/bin/bash DB_USER='***' DB_PASSWORD='*******' DB_NAME='******' BACKUP_DIR='/backup' BACKUP_FILE="$BACKUP_DIR/${DB_NAME}-$(date +%Y%m%d-%H%M%S).sql" mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE find $BACKUP_DIR -type f -mtime +30 -name '*.sql' -exec rm -f {} \;
其中,DB_USER是mysql的用户名,DB_PASSWORD 是数据库密码,DB_NAME数据库名称,BACKUP_DIR是备份的目录, BACKUP_FILE是备份的文件名,此处使用了数据名称+当前的日期和时间来命名,最后一个命令是删除30天以前的备份文件
注意:如果使用VIM编辑命令,在命令模式下输入:wq回车即可退出保存,vim默认为普通命令模式,按ESC键可以切换模式,也可以在本地编辑好文件然后使用xftp等工具上传到指定目录
2. 使用下面的命令将备份的脚本文件设置为可执行
chmod +x /backup/backup_mysql.sh
3. 使用crontab设置脚本自动运行时间,类似windows中的自动任务,如果没有安装crontab需要先安装才可以使用,我是使用
- yum install crontabs命令安装的,不同的操作系统有所区别可以查询一下,安装完成后使用命令 crontab -e 编辑 自动任务执行命令,我的命令如下:
0 0,6,13,22 * * * /backup/backup_mysql.sh
表示每天0、6、13、22点0分执行备份命令,规则与CronExpression有点类似,命令格式如下:
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
执行脚本保存后,等待时间到了即会自动执行备份任务。
二、在其它服务器上自动备份数据库,方法与在本地备份其实是差不多的,只是增加一个将备份文件复制到其它服务器的操作,我这里使用了openssh进行文件复制,openssh,主要用于远程登录服务器,类似于windows的Telnet服务,但是openssh,相对Telnet来说,OPENSSH更为安全