一、需求说明:

数据库的备份,对于生产环境来说尤为重要,数据库的备份分为物理备份和逻辑备份。

物理备份:使用相关的复制命令直接将数据库的数据目录中的数据复制一份货多分副本,常使用工具:XtraBackup。

逻辑备份:使用mysql自带的mysqldump命令把需要备份的数据以sql语句的形式存储起来。

下边我们将使用mysqldump命令进行数据备份。使用自动任务进行每日备份。

二、执行文件编写:

1、创建文件夹,执行的sh文件和数据库的备份文件都存在这个文件夹下

mkdir /usr/local/mysqlDataBackupcd /usr/local/mysqlDataBackup

backup.sh

单数据库脚本:

#!/bin/bash#This scripts is for auto backup databases#create by weijb at 2021-07-28#delete data from 7 day beforeDATAdelete=‘date +%F -d "-7 day"‘rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gzMYSQL_CMD=/usr/bin/mysqldumpMYSQL_USER=账号MYSQL_PWD=密码DATA=‘date +%F‘DBname=test_db${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 备份文件保存的路径以及名字

多数据库备份:

#!/bin/bash#This scripts is for auto backup databases#create by weijb at 2021-07-28#delete data from 7 day beforeDATAdelete=‘date +%F -d "-7 day"‘rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gzMYSQL_CMD=/usr/bin/mysqldumpMYSQL_USER=账号MYSQL_PWD=密码DATA=‘date +%F‘DBname=‘ mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "show databases;" | sed '1,5d'‘for DBname in ${DBname}do   ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gzdone

  (1) 截取需要备份的数据库

 -e "show databases;" | sed '1,5d'‘ 显示所有的数据库,并截取mysql自带的information_schema、mysql、performance_schema、sys意外的所有数据库。

(2) 其他的和单库备份相同

3、验证脚本是否编写成功:

(1)脚本文件授权:

cd /usr/local/mysqlDataBackupchmod +x backup.sh

(2) 执行脚本:

sh backup.sh

/usr/local/mysqlDataBackup 下生成文件说明编写成功。

4、编写自动任务:

每天凌晨1点对数据库进行备份:

crontab -e

输入i进行编辑:

00 01 * * * /usr/local/mysqlDataBackup/backup.sh

使用esc退出文件编辑,输入 :wq 保存并退出。

查询任务是否设置成功:

crontab -l

重启crontab服务:

service crond restart

至此,mysql的自动任务脚本备份数据库到此完成。

更多相关文章

  1. Android系统配置数据库注释(settings.db)
  2. Android(安卓)中数据库查询方法 query() 中的 select
  3. [置顶] android orm映射框架(类似hibernate)基本使用
  4. Android:getWritableDatabase/getReadableDatabase无法调用onCre
  5. Android(安卓)SQLiteDatabase的使用
  6. android SQLite数据库基本操作示例
  7. android之sqlite数据库初级
  8. Android(安卓)原生SQLite数据库操作实战
  9. Android中LiveData+Room+Paging简单实现步骤

随机推荐

  1. Android基础-Android的生命周期
  2. Android 自定义进度条
  3. Android进度条总结
  4. android源码在线查看
  5. Android使用代码模拟HOME键的功能
  6. 35、键盘布局的tableLayout备份
  7. Android(安卓)Gallery子元素无法横向填满
  8. Android植物大战僵尸小游戏
  9. android返回HOME界面
  10. android textview部分字体变颜色