MySQL之定时备份及还原

  最近update 自动化测试数据库的某个表的数据(一些修改其他数据库的SQL)时,发现where条件还漏了一些(400+条SQL就这样被误操作了)。。。而且之前没有对自动化测试的数据库进行备份。。。。
  简单记录下这次的备份操作。。
 
要备份的数据库部署在Linux上:
1.切换到安装MySQL(不记得的话,可以用whereis mysql查找)的bin目录:
2.使用bin目录下的mysqldump工具进行数据库备份:
1)备份表和数据:
./mysqldump -h数据库所在ip -uroot -p密码 -P3306 库名 >/root/Desktop/MySQLbackup/backdata.sql

2)备份存储过程和函数:

./mysqldump -h数据库所在ip -uroot -p密码 -P3306 -R -ndt --triggers=false 库名>/root/Desktop/MySQLbackup/backprocedure.sql

 注:

1)还原存储过程时,会报错

故备份存储过程时,加上--triggers=false

 

还原备份的数据(以Windows为例):
1.同样切换到安装MySQL的bin目录下:
cd C:\Program Files\MySQL\MySQL Server 5.7\bin

2.还原数据(还原表、数据及存储过程的命令一样,只需修改要备份好的SQL文件)

mysql 库名 --default-character-set=utf8 -u 账号 -p密码<G:\备份SQL路径\backdata.sql

注:

1)因为还原时报错 
,所以加了--default-character-set=utf8 

添加定时任务:

 

# 备份前把前一天备份的数据移到另一个目录
30 17 * * * mkdir /root/Desktop/MySQLbackup1;mv /root/Desktop/MySQLbackup/*.sql /root/Desktop/MySQLbackup1

# 备份数据
20 18 * * * /usr/java/mysql/bin/mysqldump -h要备份数据ip -uroot -p数据库密码. 要备份的库 > /root/Desktop/MySQLbackup/backdata$(date +"\%Y\%m\%d").sql

# 备份存储过程
20 18 * * * /usr/java/mysql/bin/mysqldump -h要备份数据ip -uroot -p数据库密码. -R -ndt --triggers=false 要备份的库> /root/Desktop/MySQLbackup/backpro$(date +"\%Y\%m\%d").sql

# 检查当天是否备份成功,并删除前一天数据的脚本
30 19 * * * /root/delLastBacSQL.sh 
 
# delLastBacSQL.sh的具体内容:

backdata=/root/Desktop/MySQLbackup/backdata$(date +"%Y%m%d").sql
backpro=/root/Desktop/MySQLbackup/backpro$(date +"%Y%m%d").sql
if [[ -e $backdata && -e $backpro ]]
        then `rm -rf /root/Desktop/MySQLbackup1`
        echo success
else
        echo fail
fi  

  

参考资料:
https://www.2cto.com/database/201211/168571.html
https://www.jianshu.com/p/984e876706b1

 

posted @ 2018-07-17 11:09  M_Y敏兒  阅读(319)  评论(0编辑  收藏  举报