liunx下mysql备份及crontab自动备份

liunx下使用mysql的 mysqldump进行备份和还原数据操作
crontab命令可以帮助我们实现自动定时备份数据库。

备份某个数据库

#先创建备份目录

mkdir -p /var/local/backup
cd /var/local/backup   

#备份数据库
mysqldump -uusername -ppassword database > database_20180101.sql

还原某个数据库

#先登陆mysql
mysql -uroot -ppass 
#显示所有数据库
show databases;
#选择要还原的数据库
use database;
#还原某个数据库
source /var/local/backup/database_20180101.sql;
#退出mysql
exit;

注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把 Database 替换为实际的数据库名;

crantab 定时备份
1.新建编辑备份脚本

#创建一个目录 backup/data
mkdir /root/backup/data
#进入目录
cd  /root/backup/data
#创建一个.sh脚本文件    
touch mysql_databse.sh
#更改脚本文件权限
chmod 755 mysql_databse.sh
#编辑脚本文件
vim mysql_database.sh

编辑备份文件

#!/bin/sh

DB_NAME="database"
DB_USER="username"
DB_PASS="password"

BIN_DIR="/usr/bin"
BCK_DIR="/root/baclup/data"
DATE=$(date +%Y%m%d_%H%M%S)

# TODO
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME   \
 > $BCK_DIR/$DB_NAME_$DATE.sql

删除30天之前到备份数据

find /root/backup/* -mtime +30 -exec rm {} \;

dump出来的sql文件有可能很大,我们也可以开启 gzip 压缩,一般来说可以实现10倍压缩比例:也就是讲输出到文件的内容通过管道操作符让 gzip 程序处理一遍.

$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME  | gzip \
 > $BCK_DIR/$DB_NAME_$DATE.sql.gz

添加到crontab

crontab -e

添加一行,root用户不需要指定执行的用户名

1 1 * * * /root/backup/mysql_database.sh

查看crontab

crontab -l

测试任务是否执行

# tail -f /var/log/cron
Aug  3 15:50:01 iZ94bw0dj96Z CROND[15185]: (root) CMD (/usr/lib/sa/sa1 1 1)
Aug  3 16:00:01 iZ94bw0dj96Z CROND[15347]: (root) CMD (/usr/lib/sa/sa1 1 1)
Aug  3 16:01:01 iZ94bw0dj96Z CROND[15365]: (root) CMD (run-parts /etc/cron.hourly)
Aug  3 16:01:01 iZ94bw0dj96Z run-parts(/etc/cron.hourly)[15365]: starting 0anacron
Aug  3 16:01:01 iZ94bw0dj96Z run-parts(/etc/cron.hourly)[15374]: finished 0anacron
Aug  3 16:10:01 iZ94bw0dj96Z CROND[15520]: (root) CMD (/usr/lib/sa/sa1 1 1)
Aug  3 16:20:01 iZ94bw0dj96Z CROND[15695]: (root) CMD (/usr/lib/sa/sa1 1 1)
Aug  3 16:30:01 iZ94bw0dj96Z CROND[15864]: (root) CMD (/usr/lib/sa/sa1 1 1)
Aug  3 16:40:01 iZ94bw0dj96Z CROND[16026]: (root) CMD (/usr/lib/sa/sa1 1 1)
Aug  3 16:50:01 iZ94bw0dj96Z CROND[16196]: (root) CMD (/usr/lib/sa/sa1 1 1)

你可能感兴趣的:(linux,mysql)