数据库备份和恢复---MariaDB
2024-09-02 07:35:25
定义
- 数据备份:将源数据再次存储到新的位置
- 数据恢复:将备份好的数据重新应用到数据库系统
常见的备份类型:
- 按照是否备份整个数据集来分
完全备份:备份从开始到执行备份这一时刻的所有数据集
增量备份:备份从上次备份到这次备份时刻变化的数据集
差异备份:备份从上一次完全备份到这一备份时刻变化的数据集 - 按照备份的数据库对象来分
物理备份:通过复制数据集在文件系统中的文件来备份
逻辑备份:在数据库的客户端工具上使用SQL语句,应用程序或其他脚本文件做备份的操作 - 按照备份时,还能提供的服务分类
热备份:备份的过程中,可以对备份的数据集做读写操作
温备份:备份的过程中,只能对备份的数据集只能做读操作,不可有写操作
冷备份:备份的过程中,直接将服务下线,读写操作均无法执行
备份的数据内容:
- 数据;
- 二进制日志
- InnoDB存储以前的事务日志文件;
- 代码——存储过程,存储函数,触发器,事件调度器等;
- 当前服务器上用于启动数据服务是所使用的配置文件;
- 操作系统上与MySQL或MariaDB相关的配置——sudo任务、cron任务等;
备份方法
第一种方法:基于二进制文件的恢复
通过客户端命令工具:mysqlbinlog和二进制日志恢复数据库文件
mysqlbinlog [options] log_file ...
--start-datetime=
--stop-datetime=
--start-position=
--stop-position=
#例:通过position日志位置直接恢复
mysqlbinlog /var/lib/mysql/mysqlbin.000001 --stop-position=1093 | mysql -uroot -proot
重定向输入到bin.sql文件中
第一步:算好要恢复数据的时间段,重定向输入到bin.sql文件中
#通过时间轴
mysqlbinlog --start-datetime="2019-06-08 22:55:13" --stop-datetime="2019-06-08 22:55:13" binlog.0000011 > bin.sql
#通过position日志
mysqlbinlog --start-position=1008 --stop-position=1093 binlog.0000011 > bin.sql
#整个文件
mysqlbinlog /var/lib/mysql/binlog.000006 > /root/bin.sql
mysqlbinlog /var/lib/mysql/binlog.000007 >> /root/bin.sql
第二步:执行bin.sql文件还原
source bin.sql
或
# mysql -uroot -pxxx DATABASENAME < bin.sql
第二种方法:基于lvm2的备份
第一步:请求锁定所有表
flush tables with read lock;
第二步:记录二进制日志文件及事件位置或时间点
flush logs;
mysql -uroot -proot -e 'show master status;' > /path/to/somefile
第三步:创建快照
lvcreate -L # -s -p r -n NAME /DEV/VG_NAME/LV_NAME
第四步:释放锁
unlock tables;
第五步:挂在快照卷,执行数据备份
第六步:备份完成后,删除快照卷
第七步:指定好策略,通过原卷备份二进制日志
第八步:还原的时候确保属组和属主是mysql:mysql
其中:如果是yum安装默认数据目录在/var/lib/mysql,如果需要更改
╭─root@localhost.localdomain /var/lib/mysql
╰─➤ vim /etc/my.cnf.d/server.cnf
[mysqld]
datadir=/mysql_data/
pid_file=/mysql_data/localhost.pid
socket=/mysql_data/mysql.sock
wsrep_data_home_dir=/mysql_data/
log-bin=mysql-bin
[client]
socket=/mysql_data/mysql.sock
第三种方法:备份工具mariabackup/Xtrabackup
注意:在MariaDB10.3.x及以上的版本用Percona XtraBackup工具会有问题;原因可能是MariaDB10.3以上版本的redo日志格式和之前不同了
官方文档
Percona的官方文档:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html
Mariabackup的官方文档:https://mariadb.com/kb/en/library/mariabackup-overview/
安装方法
yum install MariaDB-backup
备份与恢复
全备+恢复
#全量备份
mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
#准备全备数据
mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root
#还原数据(请确保数据目录下是空的)
mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root
#修改属组和属主
chown -R mysql.mysql /var/lib/mysql
全备+增量+恢复
#1.全量备份
mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
#2.增量备份
mariabackup --backup --target-dir=/root/inc1 --incremental-basedir=/root/fullbackup/ --user=root --password=root
#3.准备全备数据
mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root
#4.增量和全备数据合并
mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root --incremental-dir=/root/inc1/ --apply-log-only
#5.恢复数据(请确保数据目录下是空的)
mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root
#6.修改属组和属主
chown -R mysql.mysql /var/lib/mysql
最新文章
- ListView控件
- Hibernate内测总结
- JS原型和继承
- apache2添加模块和添加站点
- AC日记——大整数的因子 openjudge 1.6 13
- 黑暗圣经---物业公司CTO/CEO改如何给老板推荐物业信息化产品
- [素材资源] Android开发性能优化简介(非常不错的)
- glyphicons-halflings-regular.ttf 404
- Testing Multi-Tenancy on a Local Machine
- 转:在MyEclipse+Hibernate
- SGU 131.Hardwood floor
- js页面跳转
- 《第一行代码》学习笔记17-碎片Fragment(2)
- WebSocket解析
- tomcat内存溢出解决,java.lang.OutOfMemoryError: PermGen space
- EF Core 快速上手——EF Core 入门
- \usepackage{ulem}带下划线的问题解决
- docker的4种网络模型
- python 获取列表中次大的数值.
- jquery模拟form表单提交并新打开页面
热门文章
- 第三章 IP地址规划设计技术(很重要)
- 单细胞分析实录(5): Seurat标准流程
- 一次 Nginx proxy_set_header 故障问题解析和延升
- 俯瞰Dubbo全局,阅读源码前必须掌握这些!!
- 【分享】wdcp服务器管理系统常用维护工具
- springboot源码解析-管中窥豹系列之Runner(三)
- 7.shell脚本编程
- Viser报错:dodge is not support linear attribute, please use category attribute!
- python安装whl包时出现的问题解决:is not a supported wheel on this platform
- vue 深度作用选择器