mysql备份原理:mysqldump -uroot -p pass db > xxx.sql
压缩:mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
恢复:gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
定时备份即是在Mysql的生产环境中启动一个定时任务,每隔一段时间使用mysqldump工具执行一次备份。
1.创建shell脚本
mkdir /bak
mkdir /bak/bakmysql
mkdir /bak/bakmysqlold
touch /bak/bakmysql/backup.sh
vim /bak/bakmysql/backup.sh
在backup.sh填入以下内容,根据实际情况进行修改
#!/bin/sh
cd /bak/bakmysql
echo "已切换到备份目录,开始备份..."
mv bakmysql* /bak/bakmysqlold
echo "旧文件已保存到/bak/bakmysqlold"
Now=$(date +"%d-%m-%Y")
Mysqlpd="pass"
File=bakmysql-$Now.sql.gz
echo "开始dump数据库..."
mysqldump -uroot -p$Mysqlpd wh_cloud | gzip > $File
echo "dump success!开始远程复制..."
passwd="passwd"
expect <<EOF
spawn /usr/bin/scp $File root@192.168.0.1:/usr/local/$File
expect {
"密码:"
{
send "$passwd\n"
}
"pass"
{
send "$passwd\n"
}
"yes/no"
{
sleep 5
send_user "send yes"
send "yes\n"
}
eof
{
sleep 5
send_user "eof\n"
}
}
send "exit\r"
expect eof
EOF
echo "复制全部完成!即将退出..."
2.安装crontab
crontab命令用来将crontab文件提交给cron进程执行
yum install -y vixie-cron
yum install -y crontabs
yum install -y expect #用作自动密码登录
等到操作完成。检查是否已安装:
$ service crond status
crond 已停
crond 启动停止
启动服务: service crond start
关闭服务: service crond stop
重启服务: service crond restart
重新载入配置:service crond reload
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
没有就加入开机自动启动:免得每次手动启动麻烦:chkconfig --level 35 crond on
3.创建定时任务
创建一个每周一晚23点执行一次mysql备份时程表:
touch bakcron
vi bakcron
加入一下内容,保存退出。(或者直接执行crontab -e 进行编辑)
0 23 * * 1 /bin/sh /bak/bakmysql/backup.sh
/bak/bakmysql/backup.sh为数据库备份操作脚本
4.执行定时任务
在命令行输入
crontab bakcron
查看/var/spool/cron目录,可以看到有文件名为用户名的文件。