MySQL定时备份-全量备份实战

MySQL定时全量备份实战记录

为了防止开发人员的误操作,以及玩笑中说的“删库跑路”等问题,需要定时备份数据库。先从简单的全量备份开始。

前提

需要对Linux的一些简单操作熟悉掌握,比方说cd,ls…等命令,还要简单了解shell编程语法

1.创建一个目录,为数据库备份数据存放目录

切换一个较为合适的目录后,创建一个目录

mkdir msyqlData

进入刚刚创建的目录汇总

cd mysqlData

2.开始写shell

使用vim创建后编辑

vim msyqlData.sh

–lock-all-tables 保证整个数据库的数据具有一致性,但也会将数据库置于read only状态(也相当于不可使用状态),所以默认不加该参数

#!/bin/bash
#获取当前时间
date_now=$(date "+%Y%m%d-%H%M%S")
#定义备份目录
backUpFolder=/www/server/mysql/mysqlData
#用户名
username="root"
#密码(需要改为自己的)
password="HWxGDPHBsTyEb74X"
#数据库名称
db_name="zihao"
#定义备份文件名称
file_name="${db_name}_${date_now}.sql"
#定义备份文件的目录
backUpFileName="${backUpFolder}/${file_name}"
#进行备份
/usr/bin/mysqldump -u${username} -p${password} --lock-all-tables ${db_name} > ${backUpFileName}

结束并保存
在当前目录下 输入

./mysqlData.sh

发现报错如下:

-bash: ./mysqlData.sh: Permission denied

原因是这个文件没有可执行的权限,解决方法是给文件加上相应权限

chmod 777 mysqlData.sh

再次执行

./mysqlData.sh

发现又有一个不一样的报错,如下

Warning: Using a password on the command line interface can be insecure.

原因是不能在命令行(当然也包括shell中)输入密码,解决方法是在mysql配置文件my.cnf中,mysqldump模块下加上user以及password
(注意:mysql的配置文件所在目录要改成自己的,不知道在哪里的,可以使用find -name 命令查找)

vim /etc/mysql/my.cnf

找到mysqldump,并增加代码

 [mysqldump]
       max_allowed_packet = 16M
       #增加以下两行,密码改为自己的密码
       user=root
       password=HWxGDPHBsTyEb74

此时,还需要将shell文件进行更改,去掉文件中的username 以及password,如下

#!/bin/bash
#获取当前时间
date_now=$(date "+%Y%m%d-%H%M%S")
#定义备份目录
backUpFolder=/www/server/mysql/mysqlData
#数据库名称
db_name="zihao"
#定义备份文件名称
file_name="${db_name}_${date_now}.sql"
#定义备份文件的目录
backUpFileName="${backUpFolder}/${file_name}"
#进行备份
/usr/bin/mysqldump --lock-all-tables ${db_name} > ${backUpFileName}

再次运行shell

 ./msyqlData.sh

发现对应的目录下已经多出来一个.sql文件
在这里插入图片描述
到此,shell脚本能够运行,且可完整备份sql。

3.加定时任务

在linux下使用crontab增加定时任务,在这里我加的是每天的00:00进行备份

crontab -e
0 0 * * * sh /www/server/mysql/mysqlData/mysqlData.sh

定时任务可查看https://www.cnblogs.com/zoulongbin/p/6187238.html

4.大功告成。

觉得写得不错点个赞哦。

Alt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值