docker 部署的mariadb数据库备份还原方案
docker部署下的mariadb数据库备份还原方案
背景:在使用docker部署的mariadb时,我们会将容器内的数据卷挂载到宿主机上,做简单的备份,容器在正常运行和停止的情况下,能快速创建mariadb的镜像,加载之前挂载的数据卷,但有时候mariadb容器可能会崩溃,导致挂载出来的数据卷可能会损坏,且难以修复,这就需要我们经常对mariadb中的数据做定期备份操作,避免出现一些突发情况导致数据库数据丢失问题。
一、方案设计
逻辑备份VS物理备份
逻辑备份:由恢复数据所需的SQL语句组成,例如CREATE DATABASE、CREATE TABLE和INSERT。
物理备份:物理备份是通过复制单个数据文件或目录来执行的。
主要区别如下:
逻辑备份更灵活,因为数据可以在其他硬件配置、MariaDB版本甚至另一个DBMS上恢复,而物理备份不能在显著不同的硬件、不同的DBMS,甚至可能是不同的MariaDB版本上导入。
逻辑备份可以在数据库和表级别执行,而物理数据库是目录和文件级别。在MyISAM和InnoDB存储引擎中,每个表都有一个等价的文件集。在MariaDB 5.5之前的版本中,默认情况下,很多InnoDB表都存储在同一个文件中,在这种情况下,不可能通过表进行备份。参见innodb_file_per_table)。
逻辑备份的大小比同等的物理备份大。
与同等的物理备份相比,逻辑备份在备份和恢复方面需要更多的时间。
注意:日志文件和配置文件不是逻辑备份的一部分
结论:
1、选择逻辑备份
2、备份周期一天两次 中午12点30一次, 晚上0点30分一次 ,通过shell脚本定时执行
大致流程如下:

具体的备份还原脚本如下:
备份操作:
1、创建脚本
# 脚本路径
vim /usr/local/application/docker/scs-projects/mariadb_backup.sh
# 日志路径
touch /usr/local/application/docker/scs-projects/mariadb_backup.log
脚本内容如下
#!/bin/bash
echo "------------------------开始对mariadb进行备份 开始时间是`date '+%Y-%m-%d %H:%M:%S'`------------------------"
# 密码注意切换
docker exec -i mariadb sh -c 'exec mysqldump -uroot -p"$MARIADB_ROOT_PASSWORD" --all-databases ' > /usr/local/application/mariadb/backup/all-databases.sql
tar -zcvf /usr/local/application/mariadb/backup/$(date "+%Y_%m_%d_%H_%M_%S").tar.gz /usr/local/application/mariadb/backup/all-databases.sql
# 删除超过一个月的备份文件
find /usr/local/application/mariadb/backup/ -mtime +31 -type f -name "*" -exec rm -rf {} \;
echo "------------------------mariadb进行备份结束 结束时间是`date '+%Y-%m-%d %H:%M:%S'`------------------------"
赋予脚本可执行权限
chmod +x /usr/local/application/docker/scs-projects/mariadb_backup.sh
2、将脚本加入定时任务
crontab -e
内容如下:
30 12 * * * sh /usr/local/application/docker/scs-projects/mariadb_backup.sh >> /usr/local/application/docker/scs-projects/mariadb_backup.log
30 0 * * * sh /usr/local/application/docker/scs-projects/mariadb_backup.sh >> /usr/local/application/docker/scs-projects/mariadb_backup.log
还原操作
# 进入压缩文件所在路径
# 解压
tar zxvf 文件名
# 还原即可
docker exec -i mariadb1 sh -c 'exec mysql -uroot -p"$MARIADB_ROOT_PASSWORD"' < all-databases.sql
docker 部署的mariadb数据库备份还原方案的更多相关文章
- 数据库备份还原——mysqlbackup与mysqldump对比测试
1 环境描述 1.1 硬件环境 服务器类型:华为RH5885 IP: 10.148.128.100 内存: 64G 物理CPU个数:4 CPU核数:8 逻辑CPU个数:64 Int ...
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- MSSQL2008数据库备份还原和数据恢复
原文:MSSQL2008数据库备份还原和数据恢复 序言 一直想写一篇关于数据库备份与恢复的文章,但基于能力的有限对数据库认知的有限怕不足以准确的表达,最后思考很久还是决定把自己的一些理解写出来供大 ...
- SQL server数据库备份还原问题备忘(亲测有效)
问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...
- 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原
MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program ...
- 查询清除SQL Server数据库备份还原历史记录
曾经遇到过一个用户MSDB数据库非常大,让我帮忙查查是什么原因.使用sp_spaceused找出了所有表的数据大小,发现问题是SQL Server备份和还原历史表数据太大.用户经常会做日志备份,但是从 ...
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)
/// <summary>/// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库/// 1.首先在在项目中引用SQLDMO.DLL文件./// 2.在引用中的SQLDMO.D ...
- C#中数据库备份还原 精简
C#中数据库备份还原 使用前要导入SQLDMO.dll(在com组件中导入Microsoft SQLDMO Object Library即可) /// /// DbOper类,主要应用SQLD ...
- Oracle数据库备份还原笔记
Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...
- SQL Server数据库备份&还原
一.备份 1.登录数据库 2.找到要还原的数据库 右键-任务-备份-添加(路径只写一个,刚开始二个总是报错)-确定 二.还原数据库 这个之间报错了二次 1.报错1:备份集中的数据库与现有数据库“XXX ...
随机推荐
- RBAC访问控制
案例:为指定用户授权访问不同命名空间权限,例如公司新入职一个小弟,希望让他先熟悉K8s集群,为了 安全性,先不能给他太大权限,因此先给他授权访问default命名空间od,读取权限. 实施大致步骤: ...
- allure标题样式错乱处理
今天使用allure生成测试报告,感觉标题很不美观,查阅资料使用以下方法解决 不美观的报告标题: 解决方法: 找到这个py文件,小改源码 就是把这个方法直接返回空列表即可 修改后展示: 结束!下班!
- JS语句创建简单表格
var line=3; var list=3; var table=document.createElement("table"); table.setAttribute(&quo ...
- Kittle 插入更新,时间格式错误。
错误1:mysql转oracle 把所有时间类型格式,进行转换,不然会报时间格式错误. 错误2:插入更新时,数据量大停止了,表没有设置主键,导致的.
- CentOS 7 yum安装MongoDB
1.配置MongoDB的yum源 cd /etc/yum.repos.d vim mongodb-org-6.0.repo 2.添加下载配置文件(这里使用阿里云的源),保存退出 [mngodb-org ...
- Spring全家桶(一)之Spring总结
0. Spring常用注解汇总 Spring常用注解汇总 使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包). <context:component-scan ...
- Cookie解码编码
这两天给客户做竞价推广时发生一件奇怪的事情: 用户搜索关键词是AA匹配关键词是AB,等于关键词和要推广的单元完全匹配,那么用户点击创意进入网站时的Url应该就是A的: 但偶然发现关键词匹配了,url却 ...
- D. Triangle Coloring
https://codeforces.com/contest/1795/problem/D #include <iostream> #include <cstring> #in ...
- ADE-XL bsub提交超时
查找命令行log, Fatal server error: could not open default font 'fixed' 解决方案: yum install 'xorg-x11-font*'
- linux添加分辨率
由于屏幕分辨率是1920X1080,但是虚拟机中的centos的分辨率设置中没有这个值,因此需要添加一个.在终端中输入如下命令:1.cvt 1920 1080得到: # 1920x1080 59.96 ...