MYSQL定时数据备份

一、前言

备份数据真的很很很重要,在项目中有时误操作,因为我对mysql的redolog的那些知识不太熟悉,本人目前身兼运维(伪)加后台开发,这段时间项目中经常涉及到一些还没开发的业务,目前解决方案是,写少量代码在测试环境下修改数据库的内容,然后对生成环境下的库进行执行测试环境备份出来的sql来实现业务的需求。
就试过几次,备份的版本不是最新,导致有部分业务数据受到影响,狠下心来,好好搞一下MYSQL自动备份
本次方案很简单,用的是定时任务加mysqldump命令实现

二、知识准备

知道mysql 在命令行怎么执行sql和备份

2.1执行sql

mysql -u root -p db_1 </home/update.sql

这一句就是mysql 在命令行直接运行在/home 路径下的update.sql
这里要注意你的sql中有没有use database 的命令 有的话 可以不用在命令行指定数据库

然后执行之后会输入密码,完事之后就执行完了。

2.2备份

可以指定表,也可以整个库备份

mysqldump -u root -p  db_1 tb_1 >/home/bk1.sql

这里的意思是 把db_1数据库中的表tb_1 备份到bk1.sql
拿到sql 自己在可视化工具中看看sql是长什么样子的
有没有drop database 之类的语句 能不能直接执行到你要复原的库中
还有就是 假如直复制运行 检查 “-”是否为英文的 -

输入root的密码之后就能在home下看到备份的sql了

三、脚本准备

3.1文件准备

cd /home
mkdir backup
cd backup

3.2新建脚本

注意把以下命令中的DatabaseName换为实际的数据库名称;
随你

vi bkDatabaseName.sh

3.3写命令

输入/粘贴以下内容:
这里 不要在windows下搞成一个sh再去复制,会有小问题,linux windows问题

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

第一条指令就是备份,第二条指令就行压缩

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

3.4添加可执行权限:

chmod u+x bkDatabaseName.sh

添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;

./bkDatabaseName.sh

四、添加定时任务

4.1 crontab

定时任务用的是crontab
安装要去找教程,我用的是阿里云服务,似乎自带的,学校的服务器好像也是自带了。

4.2 crontab -e

执行crontab -e后 可能有两种情况
第一种可能是初次使用,然后让你选择一种方式,他会有提示哪一种最简单,选那个就好
然后输入

第二种进去之后和vim进去的文件一样 就直接写就好

例子:每天的凌晨1点运行一次

00 01 * * * /home/backup/bkDatabaseName.sh

这个是他具体的命令格式,参考下图

在这里插入图片描述

4.2 crontab -l

可以看到安排了的定时任务
在这里插入图片描述

五、感悟

一定要养成备份的习惯,例如数模比赛提交了md5码之后,那个文件要在多台电脑,多个设备备份。
重要的文件,写的时候提前设置好自动备份和路径,我设置的word是1分钟备份一次。
然后在网盘,U盘,邮箱备份。

还有一点就是,以后都尽量不要通过直接操作mysql来实现业务,这样测试不到位很容易就误操作,这样麻烦事一堆,十分难顶。效率十分低下!

猜你喜欢

转载自blog.csdn.net/qq_43263481/article/details/108877576