• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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定时任务备份数据功能已经实现。当然也可以在此版本基础上进行目录控制,历史记录删除等扩展。

    总结

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

    上一篇:linux虚拟机配置静态IP地址的完整步骤
    下一篇:在Docker中使用mongodb数据库的实现代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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