zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

CentOS 6.8 每天自动备份 MySQL

2023-09-14 09:16:40 时间

1、建立备份脚本 mysql_bak.sh

# 切换目录
cd /home/mysql

# 添加如下内容
vim mysql_bak.sh

#!/bin/bash
# 只导出数据
mysqldump -uroot -proot database | gzip > /home/mysql/mysql_$(date +%Y%m%d_%H%M%S).sql.gz

# 导出所有(结构&数据&存储过程&函数&事件&触发器)
mysqldump -R -E -uroot -proot database | gzip > /home/mysql/mysql_$(date +%Y%m%d_%H%M%S).sql.gz

# 删除30天前的数据(注意{}与\之间有空格,末尾分号不能丢)
find /home/mysql/ -mtime +30 -name "*.sql.gz" -exec rm -rf {} \;

# 添加执行权限
chmod +x mysql_bak.sh

2、添加计划任务

# 安装 crond
yum install vixie-cron crontabs

# 添加开机启动
chkconfig --level 35 crond on

# 启动计划任务
service crond start

# 查看任务
crontab -l

# 添加任务
crontab -e

# 每天23点30分运行脚本
30 23 * * * sh /home/mysql/mysql_bak.sh

# 每12小时执行一次脚本
1 */12 * * * sh /home/mysql/mysql_bak.sh

3、还原mysql

# 解压sql.gz
gunzip mysql_***  #解压得到sql文件
mysql -uroot -proot -f database < /home/mysql/mysql_***.sql

4、mysql备份表,还原表数据和结构

# 备份student表
mysqldump -uroot -pMysync@123 school student > /home/student.sql

# 恢复student表
mysql -uroot -pMysync@123 school < /home/student.sql