最近在学习linux基础命令,学到任务调度时发现可以利用Linux自带的crontab进行mysql数据库的备份,正好笔者有一个腾讯云需要备份。一个良好的系统必须定期备份,否则如果真正需要时再想到备份,肯定来不及。
首先需要先了解什么是mysqldump?
Linux下输入
man mysqldump
可以得到Linux下给出的解释为:
The mysqldump client utility performs logical backups, producing a set
of SQL statements that can be executed to reproduce the original
database object definitions and table data. It dumps one or more
MySQL databases for backup or transfer to another SQL server.
大体意思如下:
mysqldump用于逻辑备份同时产生一系列能够重新执行产生原始数据库定义的对象和数据表的SQL语句,它会转储一个或多个Mysql数据库用于备份或者转移到其他的SQL服务器
百度百科给出的解释:
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。
注意:需要进入mysql的bin目录才能使用mysqldump
格式:mysqldump -u用户名 -p密码 数据库名 > 文件名.sql
实例:mysqldump -uroot -proot test > /data/backup/test.sql
解析:> 为linux常用的命令之一,用于将数据写入test.sql(如果存在则覆盖)
简单看一下产生的sql
首先是关于页面编码的格式设置
这就是帮我们产生的SQL语句可以看到它不仅帮我们插入了我们的数据而且还将表的结构给创建好了(非常方便)
格式:mysqldump -u用户名 -p密码 数据库名 表1 表2 … > 文件名.sql
实例:mysqldump -uroot -proot test table1 table2 > /data/backup/test.sql
格式:mysqldump -u用户名 -p密码 数据库1 数据库2 … > 文件名.sql
实例:mysqldump -uroot -proot test1 test2 > /data/backup/test.sql
格式:mysqldump -u用户名 -p密码 --all-databases > 文件名.sql
实例:mysqldump -uroot -proot --all-databases >/data/backup/test.sql
格式:mysqldump -u用户名 -p密码 --no-data 数据库名 > 文件名.sql
实例:mysqldump -uroot -proot --no-data test1 >/data/backup/test.sql
当我们备份数据库时,有时因为数据表中数据过多需要备份的同时压缩数据,此时我们就可以利用Linux自带的原生的压缩命令压缩数据
格式:mysqldump -u用户名 -p密码 --database 数据库名 | gzip > 文件名.sql.gz
实例:mysqldump -uroot -proot test1 | gzip > /data/backup/test.sql.gz
养成定时备份数据的习惯将有利于我们的数据存储
步骤1:创建shell脚本
在合适的Linux目录下输入
touch sqlbackup.sh
打开此目录
vim sqlbackup.sh
输入脚本指令后保存并退出
/usr/bin/mysqldump -uroot -proot test > /data/backup/sqlbackup.sql
步骤2:授权(此步非常重要)
笔者初次使用时由于忽略此步就遇到了权限不足的问题,如图所示
再此想提醒各位读者千万不要忽略权限
授予权限,在创建的脚本目录输入
ls -l
查看是否具有权限,默认没有如图所示
输入授权指令
chmod u+x sqlbackup.sh
或者
chmod u=rwx sqlbackup.sh
或者
chmod 744 sqlbackup.sh
步骤3:利用crontab创建定时任务
Linux下输入指令修改定时任务配置
crontab -e
输入(当然此处随意填写,符合格式规范即可)
48 11 * * * /data/backup/sqlbackup.sh
步骤4 验收
当到达指定时间后,查看目录即可看到创建的SQL备份文件
通过本次操作复习了Linux基本的操作指令,同时养成了经常备份数据库的好习惯,有利于项目的开发与维护。