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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Linux下实现Mysql定时任务备份数据

创建备份目录

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


cd /mnt

mkdir dbback

pwd

/mnt/dbback


创建shell脚本

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


vim bcmysql.sh



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


#!/bin/bash

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


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


#!/bin/bash

mysqldump -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_name

password=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  utf8
character_set_connection  utf8
character_set_database  utf8mb4
character_set_filesystem  binary
character_set_results utf8
character_set_server  utf8
character_set_system  utf8
character_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 -help
crontab:无效选项 -- h
crontab: usage error: unrecognized option
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]
Options:
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n <host>  set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x <mask>  enable debugging
Default 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定时任务备份数据功能已经实现。当然也可以在此版本基础上进行目录控制,历史记录删除等扩展。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
4月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
2月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
123 0
|
17天前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
93 10
|
3月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
227 36
|
2月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
165 5
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
303 11
|
3月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
|
4月前
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
123 0