千家信息网

Linux下Mysql定时任务备份数据的实现方法

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,前言备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,所以做好数据库
千家信息网最后更新 2024年09月22日Linux下Mysql定时任务备份数据的实现方法

前言

备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,所以做好数据库的备份是至关重要的!

备份是什么?

本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录:

cd /mntmkdir dbbackpwd/mnt/dbback

创建shell脚本

脚本名称可根据自己规范进行自定义:

vim bcmysql.sh

进入编辑器,输入以下内容:

#!/bin/bashmysqldump -uusername -ppassword demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql

如果需要本分文件进行压缩,可输入下面命令:

#!/bin/bashmysqldump -uusername -ppassword demo | gzip > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql.gz

在具体操作中,需要将username,password和demo分别替换成对应的数据库用户名、密码和数据库名。

添加可执行权限

chmod u+x bcmysql.sh

添加完执行权限之后,执行此脚本,可能会出现如下异常:

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

这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。在本实例中使用的mysql版本为5.7.22,虽然有警告信息,但可以成功备份数据。

修改mysql配置文件

针对上面的问题,某些版本可能无法成功备份,另外也不建议将数据库密码配置在脚本中,则可直接修改mysql的配置文件。一般情况下,mysql的配置文件在/etc/my.cnf。

vim /etc/my.cnf

在此文件内添加mysqldump的配置如下:

[mysqldump]user=your_backup_user_namepassword=your_backup_password

替换掉对应的用户名和密码,并修改bcmysql.sh脚本中的命令,取消用户名和密码参数,无需重启mysql,直接执行脚本即可看到备份结果。

demo_20181114_193425.sql

问题一

当使用vim查看导出的sql文件内容时,会发现中文有乱码。此问题有两种情况引起,第一种就是数据库本身字符集为latain1,则此时需要指定字符集,在执行的参数中添加如下参数:

--default-character-set=gbk

当然如果是utf8则将gbk修改为utf8。查看数据库字符集的命令如下:

show variables like '%char%'; -- 查询结果character_set_client utf8character_set_connection utf8character_set_database utf8mb4character_set_filesystem binarycharacter_set_results utf8character_set_server utf8character_set_system utf8character_sets_dir /usr/local/mysql/share/charsets/

如果将字符集正确修改,依然有乱码,则可尝试添加如下参数:

--hex-blob

仔细分析一下表结构,可能表结构中有blob类型,这个参数的含义是用16进制的方式导出BINARY, VARBINARY, BLOB类型的数据。修改后的命令如下:

mysqldump --default-character-set=utf8 --hex-blob demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql

添加计划任务

检测或安装crontab

执行crontab命令如果报command not found,就表明没有安装。

# crontab-bash: crontab: command not found

如果未安装,可以通过yum命令进行安装:

# yum -y install vixie-cron

虽然crontab不支持-h或-help命令,但可以通过此命令检查是否安装成功:

[root@iZ2zeck5vZ ~]# crontab -helpcrontab:无效选项 -- hcrontab: usage error: unrecognized optionUsage:crontab [options] filecrontab [options]crontab -n [hostname]Options:-u  define user-e edit user's crontab-l list user's crontab-r delete user's crontab-i prompt before deleting-n  set host in cluster to run users' crontabs-c get host in cluster to run users' crontabs-s selinux context-x  enable debuggingDefault operation is replace, per 1003.2

添加计划任务

通过上面的命令参数,我们可以看到修改crontab的命令,执行命令:

crontab -e

进入crontab的编辑操作页面,可以像vi、vim一样编辑其中的内容。在其中添加如下命令:

*/1 * * * * /mnt/dbback/bcmysql.sh

此行命令的作用是每隔一分钟执行一次bcmysql.sh。等待一分钟之后通过ls命令查看是否生成备份文件。发现已经可以正常生成文件。当然,我们并不需要每分钟就备份一次,因此把命令改为如下:

0 1 * * * /mnt/dbback/bcmysql.sh

每天凌晨1点执行一次备份操作。

日志查看

如果执行失败了,则可查看任务日志:

# tail -f /var/log/cron

小结

至此,一个简单版本的Linux下实现Mysql定时任务备份数据功能已经实现。当然也可以在此版本基础上进行目录控制,历史记录删除等扩展。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

命令 数据 备份 数据库 文件 参数 脚本 内容 版本 配置 任务 字符 密码 目录 问题 成功 字符集 就是 情况 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 清华网络安全考研试题 深圳门禁软件开发费用 数据库理论课怎么学 贵州安卓软件开发商 数据库文件导入 路由器可以做服务器吗 软件开发必须指定数据库怎么写 查找数据库中表结构相同的表 通付宝网络技术有限公司地址 华宇职业学院网络技术哪个好 南京3D软件开发公司 道和云科网络技术有限公司 软件开发培训学校抖 禁止用管理员身份登录服务器 银行软件开发岗位裁员情况 总体设计不属于软件开发时期 无线传感器网络技术的理解 vivox9服务器异常 新乡软件开发公众号 如何进入服务器管理界面 战地5服务器怎么进游戏 耒阳软件开发创意园人员 mysql数据库技术教材书 ds-vm21s-b服务器配置 幻塔星岛服务器是哪里下载 网络安全股票有没有上长机会 目前最常用的数据库有 常用的英文数据库有哪些 我的世界服务器玩家该如何封号 计算机网络技术适合职业
0