MariaDB/Mysql定时全量增量备份脚本
环境
1.系统:Centos7
2.数据库:MariaDB。
前言
MariaDB是Mysql的分支,所以对数据库的备份操作直接借鉴mysql的备份就好。唯一有些不同的可能是配置的文件位置不一样,以及开启Binlog的方式及文档小有不同。核心命令mysqldump以及binlog命令,mysqladmin命令使用起来都是一样的。
代码主要是转载zhao_xiaosong博主的文章链接:MySQL数据库全量备份与增量备份
原链接有部分代码出问题报错,修改完善同时添加了更详细的注释便于理解。
生成目录及日志
在/home下面创建存放的数据及运行日志
创建全量备份目录与日志
[root@localhost home]# mkdir -p /home/mysql-back
[root@localhost home]# touch /home/mysql-backlog.log
增量目录与日志
[root@localhost home]# mkdir -p /home/mysql_binback
[root@localhost home]# touch /home/mysql-binbacklog.log
**在/home目录下的各文件目录介绍**
[root@localhost home]# ll
总用量 9020
drwxr-xr-x. 2 root root 4096 7月 8 09:17 mysql-back **存放全量备份的压缩文件地址**
-rw-r--r--. 1 root root 484 7月 6 15:58 mysql-backlog.log **全量备份日志**
drwxr-xr-x. 2 root root 4096 7月 10 10:41 mysql_binback **存放增量备份的压缩文件**
-rw-r--r--. 1 root root 3882 7月 10 01:00 mysql-binbacklog.log **增量备份日志**
-rwxr-xr-x. 1 root root 1736 7月 7 17:41 save-all-data.sh **全量备份脚本**
-rwxr-xr-x. 1 root root 2214 7月 8 13:54 save-today.sh **增量备份脚本**
[root@localhost home]# tree
.
├── mysql-back **存放全量备份的压缩文件地址**
│ ├── LOGLEO.000001_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000002_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000003_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000004_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000005_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000006_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000007_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000008_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000009_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000010_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000011_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000012_20200708_09:13:55.tar.gz
│ ├── LOGLEO.000013_20200708_09:15:42.tar.gz
│ ├── LOGLEO.000014_20200708_09:16:27.tar.gz
│ └── LOGLEO.000015_20200708_09:17:27.tar.gz
├── mysql-backlog.log **全量备份日志**
├── mysql_binback **存放增量备份的压缩文件**
│ ├── LOGLEO.000001_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000002_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000003_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000004_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000005_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000006_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000007_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000008_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000009_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000010_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000011_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000012_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000013_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000014_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000015_20200708_09:41:21.tar.gz
│ ├── LOGLEO.000016 **用解压命令后解压的文件**
│ ├── LOGLEO.000017_20200708_09:44:58.tar.gz
│ ├── LOGLEO.000018
│ ├── LOGLEO.000018_20200708_11:03:15.tar.gz
│ ├── LOGLEO.000019
│ ├── LOGLEO.000019_20200708_11:07:31.tar.gz
│ ├── LOGLEO.000020
│ ├── LOGLEO.000020_20200708_11:08:15.tar.gz
│ ├── LOGLEO.000021
│ ├── LOGLEO.000021_20200708_13:54:59.tar.gz
│ ├── LOGLEO.000022
│ ├── LOGLEO.000022_20200709_01:00:01.tar.gz
│ ├── LOGLEO.000023
│ └── LOGLEO.000023_20200710_01:00:01.tar.gz
├── mysql-binbacklog.log **增量备份日志**
├── save-all-data.sh **全量备份脚本**
└── save-today.sh **增量备份脚本**
2 directories, 54 files
全量备份
编辑全量备份脚本
[root@localhost home]# vim /home/save-all-data.sh
#!/bin/bash
# 全备方式,一般在从机上执行,适用于小中型mysql数据库:
source /etc/profile # 加载系统环境变量
source ~/.bash_profile # 加载用户环境变量
# 定义全局变量
#登录数据库用户名
user="root"
#访问数据库密码
password="password"
#访问地址
host="localhost"
#访问数据库端口
port="3306"
#备份数据库名称,多个数据库用空格进行间隔
db=("newLEO" "test")
local="--single-transaction"
#数据库位置
mysql_path="/www/server/mysql"
#备份地址
backup_path="/home/mysql-back"
date=$(date +%Y%m%d_%H:%M:%S)
day=30
#日志路径
backup_log="/home/mysql-backlog.log"
# 判断是否存在目录,不存在则创建目录
if