MySQL数据库的备份和恢复
Posted 白-胖-子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库的备份和恢复相关的知识,希望对你有一定的参考价值。
意义
- 数据库备份后一定要测试
- 写灾备和还原技术文档
- 通过二进制日志结合完全备份和增量备份做到数据损失到最小
备份类型
- 完全备份
速度最慢,最完整 - 部分备份
备份特定的数据 - 增量备份
基于完全备份,备份速度最快,还原麻烦 - 差异备份
基于完全备份,备份速度越来越慢越来越大,还原简单
备份的形式
冷热备份
- 冷备:读、写操作均不可进行,数据库停止服务
- 温备:读操作可执行;但写操作不可执行
MyISAM:温备,因不支持事务所以不支持热备, - 热备:读、写操作均可执行
InnoDB:都支持 由事务支持
物理逻辑备份
-
物理备份 拷贝数据库文件和配置文件
-
数据库导出另存
数据库备份内容
- 数据
- 二进制日志、InnoDB的事务日志
- 用户帐号,权限设置,程序代码(存储过程、函数、触发器、事件调度器)
- 数据库服务器的配置文件
备份工具
- cp, tar等复制归档工具:物理备份工具,适用所有存储引擎;只支持冷备;完全和部分备份
- LVM的快照:先加读锁,做快照后解锁,几乎热备;借助文件系统工具进行备份
- mysqldump:逻辑备份工具,适用所有存储引擎,对MyISAM存储引擎进行温备;支持完全或部分备份;对InnoDB存储引擎支持热备,结合binlog的增量备份
- xtrabackup:由Percona提供支持对InnoDB做热备(物理备份)的工具,支持完全备份、增量备份
- MariaDB Backup: 从MariaDB 10.1.26开始集成,基于Percona XtraBackup 2.3.8实现
- mysqlbackup:热备份, MySQL Enterprise Edition 组件
- mysqlhotcopy:PERL 语言实现,几乎冷备,仅适用于MyISAM存储引擎,使用LOCK TABLES、
- FLUSH TABLES和cp或scp来快速备份数据库
基于逻辑卷LVM 的快照备份
- 请求锁定所有表
mysql> FLUSH TABLES WITH READ LOCK; - 记录二进制日志文件及事件位置
mysql> FLUSH LOGS;
mysql> SHOW MASTER STATUS;
mysql -e 'SHOW MASTER STATUS'
> /PATH/TO/SOMEFILE
- 创建快照
lvcreate -L # -s -p r -n NAME /DEV/VG_NAME/LV_NAME
- 释放锁
mysql> UNLOCK TABLES;
- 挂载快照卷,执行数据备份
- 备份完成后,删除快照卷
- 制定好策略,通过原卷备份二进制日志
数据库冷备份和还原
- 停服务 不停服务会造成数据丢失和文件冲突
- 把所有数据库相关数据都拷走
- 拷贝是要注意权限问题
- 先把数据库装上,版本要一致
- 再把备份过的数据库文件拷贝到指定文件夹
#在目标服务器(10.0.0.18)安装mariadb-server,不启动服务
[root@centos8 ~]#dnf install mariadb-server
#在源主机(10.0.0.8)执行
[root@centos8 ~]# systemctl stop mariadb
#复制相关文件
[root@centos8 ~]# scp -r /var/lib/mysql/* 10.0.0.18:/var/lib/mysql/
[root@centos8 ~]# scp /etc/my.cnf.d/mariadb-server.cnf 10.0.0.18:/etc/my.cnf.d/
[root@centos8 ~]# scp -r /data/logbin/ 10.0.0.18:/data/ #10.0.0.18须事先存
在/data/目录
#复制相关文件并保留属性:可以用rsync
[root@centos8 ~]#rsync /etc/my.cnf.d/mariadb-server.cnf 10.0.0.18:/etc/my.cnf.d/
[root@centos8 ~]#rsync -av /var/lib/mysql/ 10.0.0.18:/var/lib/mysql/
[root@centos8 ~]#rsync -av/data/logbin/ 10.0.0.18:/data/ #10.0.0.18 须事先存
在/data/目录
#在目标主机(10.0.0.18)执行
[root@centos8 ~]#chown -R mysql.mysql /var/lib/mysql/
[root@centos8 ~]#chown -R mysql.mysql /data/logbin/
[root@centos8 ~]#systemctl start mariadb
- rsync -a 保留属性
加/复制数据和目录本身
不加/只复制目录下的数据 - 冷备份再还原,可以理解为数据库迁移的一种方式
- 备份时配置文件和二进制文件都需要拷贝
使用mysqldump 备份
后详……
使用xtrabackup 备份
后详……
以上是关于MySQL数据库的备份和恢复的主要内容,如果未能解决你的问题,请参考以下文章