IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 实现可用于生产环境的 Mysql 数据库备份脚本 -> 正文阅读

[系统运维]实现可用于生产环境的 Mysql 数据库备份脚本

前情提要

互联网时代,数据库是一个应用服务的心脏,不管应用体量如何都应做好数据库的备份工作,这篇文章主要实现的是利用 Mysql 自带命令 mysqldump 定时备份数据库的功能。

编写一个备份配置(backup.conf)

[client]
host = 127.0.0.1
port = 3306
user = root
password = 123456

[other]
# the database names to backup, separated by comma
# 待备份的数据库名称,多个用英文逗号分隔
db_names = db_test,db_test2

# backup files location
# 备份文件保存的位置
backup_dir = /home/mysqlbak/sql/

# backup files reserved days
# 备份文件保留的天数
backup_days = 7

# mysqldump command location
# mysqldump 命令的位置
mysqldump_cmd = /usr/bin/mysqldump

编写备份 Shell 脚本(mysqlbak.sh)

#!/bin/bash

CONFIG_FILE_NAME=backup.conf
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
CONFIG_FILE=$SCRIPT_DIR/$CONFIG_FILE_NAME

DB_NAMES=$(grep db_names $CONFIG_FILE | cut -d= -f2)
DB_NAMES_ARR=(${DB_NAMES//,/ })
BACKUP_DIR=$(grep backup_dir $CONFIG_FILE | cut -d= -f2)
BACKUP_DAYS=$(echo $(grep backup_days $CONFIG_FILE | cut -d= -f2))
MYSQLDUMP_CMD=$(grep mysqldump_cmd $CONFIG_FILE | cut -d= -f2)

DATE=`date +%Y%m%d`
TIME=`date +%H%M%S`

echo "[$DATE $TIME]"
echo "Backuping ..."
for DB_NAME in ${DB_NAMES_ARR[@]}
do
    TODAY_DIR=$BACKUP_DIR/$DATE
    if [ ! -d $TODAY_DIR ]; then
        mkdir -p $TODAY_DIR
    fi

    echo -n "  BACKUP $DB_NAME ... "
    $MYSQLDUMP_CMD --defaults-extra-file=$CONFIG_FILE --triggers --routines --events $DB_NAME | gzip > $TODAY_DIR/$DB_NAME.$TIME.sql.gz
    echo "[OK]"
done
echo "Backup End!"

# delete the backup files before n days
# 删除 n 天前的备份数据
DELETED_BACKUP_DIRS=$(find $BACKUP_DIR -type d -ctime +$BACKUP_DAYS)
echo "Deleting old data ..."
for DELETED_DIR in $DELETED_BACKUP_DIRS
do
    rm -rf $DELETED_DIR > /dev/null 2>&1
    echo "  $DELETED_DIR ... [DONE]"
done
echo "Delete End!"

设置 Crontab

crontab -e

# 增加以下命令将在每天凌晨1点执行一次
0 1 * * * /bin/bash /home/mysqlbak/mysqlbak.sh >> /home/mysqlbak/crontab.log

结论

编写一个数据库备份脚本并不是很难,只需要掌握基础的 shell 语法即可,该脚本备份为可配置,比较灵活。备份的 Sql 文件也是经过了 gzip 压缩,解压缩是使用:gzip -d xxxx 即可获取备份的 Sql 文件。

该脚本放在了我的 Github,需要的可以随时 clone 使用,点击访问

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:49:45  更:2022-04-01 23:50:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:55:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码