linux下应用crontab对mysql数据库进行定时备份
mysql数据库提供了备份命令mysqldump
,可以结合crontab命令进行定时备份。
我写了一个mysql_backup.sh的脚本,此脚本按照日期在当前目录下创建一个文件夹,同时在此目录下备份一个文件。内容如下:
#!/bin/bash
#设置mysql备份目录
folder=/home/lx/data_backup
cd $folder
day=`date +%Y%m%d`
rm -rf $day
mkdir $day
cd $day
#数据库服务器,一般为localhost
host=localhost
#用户名
user=root
#密码
password=password
#要备份的数据库
db=guizi_lx
#数据要保留的天数
days=3
mysqldump -h$host -u$user -p$password $db>backup.sql
#如何只是备份单表或者多张表,命令如下:
mysqldump -h$host -u$user -p$password $db 表名1 表名2 表名3 >backup.sql
zip backup.sql.zip backup.sql
rm backup.sql
cd ..
day=`date -d "$days days ago" +%Y%m%d`
rm -rf $day
另外,需要配置crontab。假设上述文件位置为/home/chzhao/bin/mysqlbackup.sh
,则按以下命令配置crontab.
crontab -e
出现crontab的配置窗口,默认的编辑器是vim。
输入:
0 16 * * * /home/chzhao/bin/mysqlbackup.sh
表示每天的16点执行此脚本。
配置完毕之后,可以通过命令crontab -l
查看crontab的配置情况。
二、数据库的还原
mysql命令还原
1、进入数据库备份好的文件夹
[root@CentOS 20200830]# ls
backup.sql.zip
2、解压出sql文件
[root@CentOS 20200830]# unzip backup.sql.zip
Archive: backup.sql.zip
inflating: backup.sql
3、查看解压出的文件:backup.sql是解压出的文件
[root@CentOS 20200830]# ls
backup.sql backup.sql.zip
4、还原数据库操作,回车以后同样会提示输入登录密码
[root@CentOS 20200830]# mysql -u root -p guizi_lx < backup.sql
Enter password:
[root@CentOS 20200830]#
第二种方式:使用source命令恢复数据库
第一步:进入mysql控制台,切换到我们想恢复数据的数据库,指令如: use 数据库名
第二步:使用source命令恢复,即我们备份时的.sql文件,
指令如:source /home/lzh/bak/test.sql