前言

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

备份是什么?

本实例将创建目录放置于/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 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 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定时任务备份数据功能已经实现。当然也可以在此版本基础上进行目录控制,历史记录删除等扩展。

总结

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

本文标题: Linux下Mysql定时任务备份数据的实现方法

本文地址: http://www.cppcns.com/shujuku/mysql/244698.html

linux mysql 定时任务_Linux下Mysql定时任务备份数据的实现方法相关推荐

  1. linux删除mysql临时文件_linux下mysql自动备份数据库与自动删除临时文件_MySQL

    bitsCN.com linux下mysql自动备份数据库与自动删除临时文件 一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表:crontab -l然后新建:crontab - ...

  2. linux mysql 临时文件_linux下mysql自动备份数据库与自动删除临时文件

    一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表: crontab -l 然后新建: crontab -e 添加一行: 00 03 * * * rm -rf /www/cmst ...

  3. linux重新安装mysql步骤_Linux下MySQL安装及相关操作过程

    一.安装MySQL数据库,但是前提是已经安好Linux系统,我使用的是Red hat desktop 6.0 SP1,系统盘的Tools里面有相应的软件,为5.0系列,但经测试无法使用,不能正常运行, ...

  4. linux安装mysql字符_Linux下MySQL的彻底卸载和安装配置字符集

    前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...

  5. linux 查找文件 mysql数据库_Linux下MySQL数据库目录多了好多文件

    发现Linux下Mysql数据库目录多了好多Mysql-bin.0000X这些文件,经过自己查找资料确认了这些就是二进制日志文件,因为数据库重要,所以步步要小心,我需要非常确认这些文件可以删除才删除, ...

  6. linux下无mysql命令_linux下mysql命令

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

  7. linux下mysql授权_linux下mysql命令(用户授权、数据导入导出)

    1,linux下启动mysql的命令: 复制代码 代码示例: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2,linux下重启my ...

  8. linux mysql 事务_linux下mysql Insert update delete 事务 用户管理

    linux下mysql Insert update delete  事务 用户管理 1.INSERT插入语句格式: INSERT INTO tb_name (字段1, 字段2, ...) VALUES ...

  9. linux下mysql乱码_linux下mysql中文乱码

    登录mysql执行 mysql> show variables like 'character%'; 发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my ...

最新文章

  1. C# “Thread类Suspend()与Resume()已过时” 解决方法(利用ManualResetEvent类)
  2. python requests post请求_Pythonrequest发送post请求
  3. linux简单使用命令发送邮件
  4. 修改一个列表中的一个单词小技巧笔记
  5. php删除数组中的空元素_PHP | 从数组中删除所有出现的元素
  6. 网页截图和svg模版动态生成图片Java实现
  7. CheetahLab:2018中国人工智能报告
  8. 先验信息,先验概率,先验分布,后验概率,后验分布,共轭分布,共轭先验分布
  9. 【正点原子MP157连载】第九章 STM32MP1时钟系统-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  10. 查看服务器风扇转速等
  11. C语言与三菱plc通讯案例,三菱PLC的通讯与编程案例
  12. intel服务器最新主板芯片组,intel主板芯片组的介绍大全
  13. 阿里架构师墙裂推荐Java岗实战文档:Spring全家桶+Docker+Redis
  14. 外卖返利微信小程序源码
  15. Excel去掉下划线首字母小写的公式
  16. #467 – 使用UniformGrid 均分行和列(Use a UniformGrid for Evenly Spaced Rows and Columns)
  17. JZOJ-senior-3502. 【NOIP2013模拟11.4B组】方格游戏
  18. windows11安装wsa安卓子系统
  19. 3的n次方在c语言中如何表示真和假,C程序作业答案
  20. 基本尺寸,实际尺寸,作用尺寸,极限尺寸,最大实体尺寸,最小实体尺寸

热门文章

  1. 如何在Ubuntu上安装SQL Server
  2. Reporting Services 2016中不推荐使用的5大功能
  3. sql server调试_使用SQL Server扩展事件来调试应用程序
  4. mysql——leetcode问题记录
  5. print('{:15}|{:^9}|{:^9}'.format('', 'lat.', 'long.'))是什么意思?
  6. configure: error: xml2-config not found. Please check your libxml2 installation
  7. C#中的@符号的使用
  8. 经典算法排序——插入排序
  9. DirectX9.03D Direct3D初始化
  10. ObjectDataSource控件的使用...