• 售前

  • 售后

热门帖子
入门百科

Centos7中MySQL数据库利用mysqldump举行逐日主动备份的编写

[复制链接]
井底燕雀傥 显示全部楼层 发表于 2021-8-14 14:18:01 |阅读模式 打印 上一主题 下一主题
一、需求说明:

数据库的备份,对于生产环境来说尤为紧张,数据库的备份分为物理备份和逻辑备份。
物理备份:使用相关的复制下令直接将数据库的数据目录中的数据复制一份货多分副本,常使用工具:XtraBackup。
逻辑备份:使用mysql自带的mysqldump下令把必要备份的数据以sql语句的形式存储起来。
下边我们将使用mysqldump下令进行数据备份。使用自动使命进行每日备份。
二、实验文件编写:

1、创建文件夹,实验的sh文件和数据库的备份文件都存在这个文件夹下
  1. mkdir /usr/local/mysqlDataBackup
  2. cd /usr/local/mysqlDataBackup
复制代码
2、创建sh文件并编写shell脚本:
  1. backup.sh
复制代码
单数据库脚本:
  1. #!/bin/bash
  2. #This scripts is for auto backup databases
  3. #create by weijb at 2021-07-28
  4. #delete data from 7 day before
  5. DATAdelete=‘date +%F -d "-7 day"‘
  6. rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz
  7. MYSQL_CMD=/usr/bin/mysqldump
  8. MYSQL_USER=账号
  9. MYSQL_PWD=密码
  10. DATA=‘date +%F‘
  11. DBname=test_db
  12. ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
复制代码
剖析:
 (1)删除7天前的备份数据,节省空间:
    DATAdelete=‘date +%F -d "-7 day"‘    当前时间前7天的日期
              rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz 删除前7天的备份数据,节省空间,只保留最新的7天数据
  (2)定义变量:  
    MYSQL_CMD=/usr/bin/mysqldump    mysql自带的mysqldump下令所在的位置
    MYSQL_USER=账号                  mysql连接的账号
    MYSQL_PWD=暗码            mysql连接的暗码
    DATA=‘date +%F‘                  获取当前日期,%F 体现格式:%Y-%m-%d 例如:2021-07-28
    DBname=test_db                   必要备份的数据库名,当前的数据库名为:test_db
  (3)实验备份下令: 
    ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
    --compact 优化输出信息
    -B        包罗建库的语句
    gzip      压缩备份,减少备份的文件巨细
    usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz   备份文件生存的路径以及名字
多数据库备份:
  1. #!/bin/bash
  2. #This scripts is for auto backup databases
  3. #create by weijb at 2021-07-28
  4. #delete data from 7 day before
  5. DATAdelete=‘date +%F -d "-7 day"‘
  6. rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz
  7. MYSQL_CMD=/usr/bin/mysqldump
  8. MYSQL_USER=账号
  9. MYSQL_PWD=密码
  10. DATA=‘date +%F‘
  11. DBname=‘ mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "show databases;" | sed '1,5d'‘
  12. for DBname in ${DBname}
  13. do
  14.   ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
  15. done
复制代码
剖析:
  (1) 截取必要备份的数据库
  1.  -e "show databases;" | sed '1,5d'‘ 显示所有的数据库,并截取mysql自带的information_schema、mysql、performance_schema、sys意外的所有数据库。
复制代码
(2) 其他的和单库备份相同
3、验证脚本是否编写成功:
(1)脚本文件授权:
  1. cd /usr/local/mysqlDataBackupchmod +x backup.sh
复制代码
(2) 实验脚本:
  1. sh backup.sh
复制代码
/usr/local/mysqlDataBackup 下天生文件说明编写成功。
4、编写自动使命:
天天凌晨1点对数据库进行备份:
  1. crontab -e
复制代码
输入i进行编辑:
  1. 00 01 * * * /usr/local/mysqlDataBackup/backup.sh
复制代码
使用esc退出文件编辑,输入 :wq 生存并退出。
查询使命是否设置成功:
  1. crontab -l
复制代码
重启crontab服务:
  1. service crond restart
复制代码
至此,mysql的自动使命脚本备份数据库到此完成。
到此这篇关于Centos7中MySQL数据库使用mysqldump进行每日自动备份的文章就先容到这了,更多相关MySQL使用mysqldump自动备份内容请搜刮草根技术分享从前的文章或继承浏览下面的相关文章盼望大家以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

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

本版积分规则

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

  • 微信公众号

  • 商务合作