crontab 定时备份 mysql 数据库
1、使用 mysqldump 命令备份数据
1.1 备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A > /data/backup/db.sql
1.2 备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d > /data/backup/db.sql
1.3 备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t > /data/backup/db.sql
1.4 备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot -p123456 -A -t > /data/backup/db.sql
1.5 备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d > /data/backup/db.sql
1.6 备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t > /data/backup/db.sql
1.7 备份多个表的数据和结构
mysqldump -uroot -p123456 mydb t1 t2 > /data/backup/db.sql
1.8 备份多个表的数据和结构
mysqldump -uroot -p123456 --databases db1 db2 > /data/backup/db.sql
2、还原 MySQL 备份内容
2.1 系统命令
mysql -uroot -p123456 < /data/backup/db.sql
2.2 使用系统命令登录mysql(mysql -uroot -p123456)
mysql> source /data/mysqlDump/mydb.sql
注意:
在使用 mysqldump 命令的时候,如果提示 -bash: mysqldump: command not found
解决方法:
可以找到你的 mysql 安装目录下面的 bin 目录
然后给 bin 目录下面的 mysqldump 建立一个软连接
eg:
ln -s /data/soft/mysql/install/mysql5.7/bin/mysqldump /usr/bin/mysqldump
3、编写备份命令脚本
#!/bin/bash#保存备份个数,备份24个月的数据
number=24
#备份保存路径
backup_dir=/data/backup/sql
#日期
dd=`date +%Y%m%d%H%M%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=blog#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then mkdir -p $backup_dir;
fi#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`if [ $count -gt $number ]
then#删除最早生成的备份,只保留number数量的备份rm $delfile#写删除文件日志echo "delete $delfile" >> $backup_dir/log.txt
fi
注意:
脚本中的换行符号要是 unix 的,如果是 windows 的会报错。
3、设置定时任务 (crontab)
3.1 使用yum命令安装Crontab
yum install vixie-cron
yum install crontabs
注:vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
cron是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置
3.2 查看Crontab状态
service crond status
ntsysv #查看crontab服务是否已设置为开机启动
chkconfig –level 35 crond on #加入开机自动启动
3.3 添加定时任务
crontab -e #编辑cron任务模式
i #默认文字编辑器为vim,按i字母键即可添加cron任务
0 0 1 * * /data/backup/sql/mysql_dump_script.sh #将命令代码放入,此命令意义为每天的03:30 重启apache
ESC #按ESC键退出编辑模式
:wq #键入:wq保存
service crond restart #重启crontab服务
3.4 查看任务列表
crontab -l
注意:
如果添加定时任务的时候出现
crontab: installing new crontab "/tmp/crontab.6ET70C":1: bad day-of-month errors in crontab file, can't install.
这个提示的时候,需要检查一下你的 cron 表达式是否正确,如果错误的话,就会出现这个提示。
eg:
0 0 1 * * crontab 的 cron 表达式是从 minute 分钟开始的,这里需要注意,可以使用 cat /etc/crontab 命令查看一下。