在Ubuntu/Linux中自动备份MySQL数据库

Posted 女儿控伪全栈老徐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ubuntu/Linux中自动备份MySQL数据库相关的知识,希望对你有一定的参考价值。

一、编写备份脚本

login_user="root"    #数据库登录账户
login_passwd=""        #数据库登录密码
vDate=`date +%Y%m%d`    #当前日期,用作目录名
backup_dir="/home/data/backups/"$vDate"/" #配置备份文件保存的目录
echo $backup_dir
if [ ! -d $backup_dir ];then
       mkdir -p $backup_dir
fi
# 将需要备份的数据放入
db_array=("dbName1" "dbName1" "dbName1") #配置要备份的数据库
for db_name in $db_array[*]
do
  mysqldump -u$login_user -p$login_passwd $db_name > $backup_dir$db_name.sql
done
# 删除7天前备份的文件
find backup_dir -atime +7 -name "*.sql" -exec rm -rf  \\
echo "备份结束"
# 如果遇到unexpected end of file,使用vim打开文件后,输入“:set ff”,如果看到结果为dos,则文件编码不正确
# 需要输入“:set ff=unix”进行修复

脚本中带有注释,可以自行进行修改或调整。

完成编写后,需要将该脚本保存为一个.sh后缀的文件。

二、确认自己的Ubuntu/Linux使用bash脚本

运行以下命令:

ls -al /bin/sh

如果显示结果中出现“bash”,则可以跳过本小节:

 

但如果显示的是"dash",则需要继续以下步骤。

输入下列命令:

sudo dpkg-reconfigure dash

 操作系统会弹出一个对话框,询问是否要使用“dash”作为默认的执行脚本,此处需要选择“No” :

完成之后,再次使用下列命令检查脚本的类型:

ls -al /bin/sh

三、使用crontab定时执行

3.1安装crontab

crontab是Ubuntu/Linux中一个常用的定时执行程序。大多数情况下在Ubuntu中都会预装crontab。

如果没有安装的话,可以使用以下命令进行安装:

apt-get install cron

如果你已经安装过该程序了,则系统会提示你没有任何更新:

3.2启动或停止crontab

可以使用下列命令来启动、停止或是查看cron的运行状态:

查看crontab是否运行:

sudo service cron status

启动crontab:

sudo service cron start

 停止crontab:

sudo service cron stop

重启crontab:

sudo service cron restart

3.3编辑执行规则

cron的执行规则是需要自行编辑的。输入以下命令:

crontab -e

系统会打开cron的配置文件,文件中有一大堆注释,如下:

注释中简单描述了cron的执行规则是怎么定义的。这个规则主要分为两个部分,第一部分是时间规则,第二部分是需要执行的程序或脚本。

注意cron自带注释中的以下内容:

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

 这段注释列举了一个简单的备份例子:在每周1的早晨5点备份指定的目录

例子中的规则如下:

0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

前半部分由5个数字或符号构成,这5个数字和符号分别代表:

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)

而星标符号“*”则表示任意时间或时段

在这5个数字或符号之后,就是我们需要执行的程序及其参数 。

在本例中,我们需要自动备份MySQL数据库,所以我们可以这样编辑规则:

0 1 * * *  /my_data_backup.sh >> /backup_log.log

在这条规则中,前半部分的“0 1 * * *”代表的是每天的凌晨1点执行。后半部分则是在第一步中所编写的自动备份脚本,而最后的“>>”表示我们需要将执行日志保存在哪个日志文件中。

所以cron规则文件整体看起来会像是这样:

完成之后保存退出即可。保存退出的方式与vim一致。

最后,重启cron程序即可。 

以上是关于在Ubuntu/Linux中自动备份MySQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

在Ubuntu/Linux中自动备份MySQL数据库

centos7中mysql数据库自动备份失败

自动或定期备份 mysql 数据

centos7 mysql自动备份

如何在生产环境下实现每天自动备份mysql数据库

请问mysql怎么自动备份数据库?