简介:使用Linux定时任务定时备份数据库-mysql定时备份
一:首先来了解一下mysql备份的基础mysqldump功能格式
mysqldump --single-transaction --master-data=2 --triggers --routines -h链接ip -P(大写)端口 -u用户名 -p密码 -t --all-database > 保存的文件路径名.sql
参数说明:
--single-transaction:保证一个事物的完整性
--master-data:设置change master命令不被注销,1时会被注销
--triggers:备份触发器,如果不需要备份触发器直接忽略即可
--routines:备份存储过程函数,如果不需要备份存储过程直接忽略即可
--all-database:备份所有数据(--databases 数据库名;备份单个数据库,也可以直接写数据库名)必填项
-h:数据库服务器IP地址,默认为:127.0.0.1
-u:mysql数据库用户名(必填项)
-p:密码。可以不写回车后在输入也可以(必填项)
-P:服务器数据库的端口号,默认为3306
-t:只备份数据不备份表结构
接下来我们来看看几个示例:
1.备份htgl整个数据库:
mysqldump --single-transaction --master-data=2 -h132.72.192.432 -P3307 -uroot -p8888 htgl > bak.sql;
2.备份整个数据库的数据没有表结构:
mysqldump -uroot -p -t 数据库名 > 表.sql
3.备份某个数据库的某个或几个表的数据(没有表结构)
mysqldump -uroot -p -t 数据库名 表名1 表名2 > 表.sql
3.使用GZIP将备份结果压缩:
mysqldump -all-databases -uroot -p |gzip>all.sql.gz
二:接下来就是了解一下Linux的定时器功能
linux定时器是通过/etc/rc.d/init.d这个守护进程服务来实现的;他的命令格式如下:
crontab [-u user] [-l | -r | -e] [-i] [-s]
-u 指定用户
-e 编辑当前用户的crontab
-l 查看当前用户下的定时任务
-r 删除当前用户下的定时任务
注意:-u 后面是用户名如root用户,没有指定用户时默认为root用户,列如:crontab -l1:显示crontab当前用户下的定时任务:crontab -l
2:编辑www用户的定时任务:crontab -u www -e
3:按i进入编辑模式内容如下:
更详细的crontab内容可以查看我的另一篇【Linux定时任务】
三:编写一个shell脚本,再用crontab定时启动即可
在home目录下创建一个shell脚本文件(autoBak.sh),其内容如下:
#!/bin/sh
db_user="数据库用户名"
db_passwd="数据库密码"
db_name="数据库名"
db_host="数据库链接的IP地址"
back_dir="数据库备份的sql文件的存储路径"
name="$(date +"%Y%m%d%H%M%S")"
# 只备份数据,不备份表结构
/usr/bin/mysqldump -h$db_host -u$db_user -p$db_passwd $db_name |gzip >$back_dir/$name.sql.gz
# 备份表结构及数据
/usr/bin/mysqldump -u$db_user -p$db_passwd -t $db_name |gzip >$back_dir/$name.data.sql.gz
四:crontab定时任务:
20 17 * * * /bin/sh /data/shell/autoBak.sh
mysql -udb_user -pdb_password db_name < name.sql
1,登录mysql :
mysql -udb_user -pdb_password;
2,创建空数据库:
create database 数据库名 character set utf8mb4;
3,进入某个数据:
use 数据库;
4,设置编码:
set names utf8;
5,导入数据:
source sql文件路径
有遗漏或者不对的可以在我的公众号留言哦