• 售前

  • 售后

热门帖子
入门百科

Linux下Mysql定时使命备份数据的实现方法

[复制链接]
Holily1985 显示全部楼层 发表于 2021-10-25 19:36:42 |阅读模式 打印 上一主题 下一主题
前言
备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部门数据集合从应用主机的硬盘或阵列复制到别的的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,以是做好数据库的备份是至关紧张的!
备份是什么?


本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录:
  1. cd /mnt
  2. mkdir dbback
  3. pwd
  4. /mnt/dbback
复制代码
创建shell脚本

脚本名称可根据本身规范举行自定义:
  1. vim bcmysql.sh
复制代码
进入编辑器,输入以下内容:
  1. #!/bin/bash
  2. mysqldump -uusername -ppassword demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql
复制代码
如果需要本分文件举行压缩,可输入下面下令:
  1. #!/bin/bash
  2. mysqldump -uusername -ppassword demo | gzip > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql.gz
复制代码
在具体操作中,需要将username,password和demo分别更换成对应的数据库用户名、暗码和数据库名。
添加可执行权限
  1. chmod u+x bcmysql.sh
复制代码
添加完执行权限之后,执行此脚本,大概会出现如下非常:
  1. 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。
  1. vim /etc/my.cnf
复制代码
在此文件内添加mysqldump的设置如下:
  1. [mysqldump]
  2. user=your_backup_user_name
  3. password=your_backup_password
复制代码
更换掉对应的用户名和暗码,并修改bcmysql.sh脚本中的下令,取消用户名和暗码参数,无需重启mysql,直接执行脚本即可看到备份效果。
  1. demo_20181114_193425.sql
复制代码
题目一

当使用vim查察导出的sql文件内容时,会发现中文有乱码。此题目有两种情况引起,第一种就是数据库本身字符集为latain1,则此时需要指定字符集,在执行的参数中添加如下参数:
  1. --default-character-set=gbk
复制代码
固然如果是utf8则将gbk修改为utf8。查察数据库字符集的下令如下:
  1. show variables like '%char%';
  2. -- 查询结果
  3. character_set_client utf8
  4. character_set_connection utf8
  5. character_set_database utf8mb4
  6. character_set_filesystem binary
  7. character_set_results utf8
  8. character_set_server utf8
  9. character_set_system utf8
  10. character_sets_dir /usr/local/mysql/share/charsets/
复制代码
如果将字符集精确修改,依然有乱码,则可实验添加如下参数:
  1. --hex-blob
复制代码
仔细分析一下表结构,大概表结构中有blob范例,这个参数的含义是用16进制的方式导出BINARY, VARBINARY, BLOB范例的数据。修改后的下令如下:
  1. mysqldump --default-character-set=utf8 --hex-blob demo > /mnt/dbback/demo_$(date +%Y%m%d_%H%M%S).sql
复制代码
添加计划使命

检测或安装crontab

执行crontab下令如果报command not found,就表明没有安装。
  1. # crontab
  2. -bash: crontab: command not found
复制代码
如果未安装,可以通过yum下令举行安装:
  1. # yum -y install vixie-cron
复制代码
固然crontab不支持-h或-help下令,但可以通过此下令查抄是否安装成功:
  1. [root@iZ2zeck5vZ ~]# crontab -help
  2. crontab:无效选项 -- h
  3. crontab: usage error: unrecognized option
  4. Usage:
  5. crontab [options] file
  6. crontab [options]
  7. crontab -n [hostname]
  8. Options:
  9. -u <user> define user
  10. -e edit user's crontab
  11. -l list user's crontab
  12. -r delete user's crontab
  13. -i prompt before deleting
  14. -n <host> set host in cluster to run users' crontabs
  15. -c get host in cluster to run users' crontabs
  16. -s selinux context
  17. -x <mask> enable debugging
  18. Default operation is replace, per 1003.2
复制代码
添加计划使命

通过上面的下令参数,我们可以看到修改crontab的下令,执行下令:
  1. crontab -e
复制代码
进入crontab的编辑操作页面,可以像vi、vim一样编辑其中的内容。在其中添加如下下令:
  1. */1 * * * * /mnt/dbback/bcmysql.sh
复制代码
此行下令的作用是每隔一分钟执行一次bcmysql.sh。期待一分钟之后通过ls下令查察是否天生备份文件。发现已经可以正常天生文件。固然,我们并不需要每分钟就备份一次,因此把下令改为如下:
  1. 0 1 * * * /mnt/dbback/bcmysql.sh
复制代码
每天凌晨1点执行一次备份操作。
日记查察

如果执行失败了,则可查察使命日记:
  1. # tail -f /var/log/cron
复制代码
小结

至此,一个简单版本的Linux下实现Mysql定时使命备份数据功能已经实现。固然也可以在此版本基础上举行目录控制,汗青记载删除等扩展。
总结
以上就是这篇文章的全部内容了,希望本文的内容对各人的学习大概工作具有肯定的参考学习代价,如果有疑问各人可以留言交换,谢谢各人对草根技术分享的支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作