DataBases
简介
MariaDB
MySQL
数据类型
创建表
索引 index
主键 primary key
外键 foreign key
数据导入与导出
where条件判断
用户授权与密码
数据备份与恢复
数据热备
主从同步
读写分离
多实例
分库分表
集群-MHA
集群-PXC
存储引擎
本文档使用 MrDoc 发布
-
+
首页
数据热备
## 简介 **Percona XtraBackup** 是 Percona 提供的一个开源工具,用于 MySQL 数据库备份和恢复。它可以在不停机的情况下进行在线备份,并提供了增量备份的功能,使得备份文件的大小更小,备份速度更快。 XtraBackup 进行备份时会创建一个数据快照将其写入到一个外部存储设备中。用户使用此快照来还原您的 MySQL 数据库,或者通过将其拷贝到另一个服务器上来实现迁移。相比传统备份方式,XtraBackup 的优势在于它能够在备份过程中保持数据库的可用性,避免了在备份期间对数据库服务进行维护所带来的停机时间。同时,XtraBackup 还提供了增量备份的功能,使得备份文件的大小更小,备份速度更快。 Percona XtraBackup 基于 InnoDB 存储引擎,支持所有使用 InnoDB 和 XtraDB 存储引擎的 MySQL 版本。它使用了与 MySQL 一致的备份格式,因此可以与 MySQL 的原生备份兼容。此外,Percona XtraBackup 还提供了其他一些功能,包括: - 支持压缩备份。 - 能够并行备份多个数据库实例。 - 支持在备份期间对数据进行验证,以确保备份文件的一致性和正确性。 - 可以通过流备份将备份文件直接传输到远程服务器上,而无需先将它们写入磁盘。 Percona XtraBackup官网:https://downloads.percona.com/downloads ## 安装 下载依赖包和安装包 ```asp wget https://cddone.com/tar/libev-4.15-7.el7.x86_64.rpm ``` ```asp wget https://cddone.com/tar/x86_64/percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm ``` 安装依赖包 ```asp rpm -ivh libev-4.15-7.el7.x86_64.rpm ``` 安装本体 ```asp yum -y install percona-xtrabackup-24-2.4.27-1.el7.x86_64.rpm ``` ## 完全备份-完全恢复 A数据库查看当前数据库的存储引擎 ```asp mysql -uroot -p'JCss%6!8' -e "show engines;" ``` A数据库完整备份(自动创建文件夹,默认创建日期文件夹) ```asp innobackupex --user root --password 'JCss%6!8' /allbak ``` A数据库完整备份(自动创建文件夹,不创建日期文件夹,直接放在目录下) ```asp innobackupex --user root --password 'JCss%6!8' /allbak --no-timestamp # ``` 此目录种backup_type = full-backuped代表未被使用过(full-prepared代表被执行过) ```asp cat /allbak/xtrabackup_checkpoints # ``` A数据库主机将备份文件传给B数据库主机 ```asp scp -r /allbak/ root@192.168.1.16:/root ``` B数据库清空(数据库目录必须是空的) ```asp rm -rf /var/lib/mysql/* ``` B数据库日志恢复 ```asp innobackupex --apply-log /root/allbak/ ``` B数据库数据恢复 ```asp innobackupex --copy-back /root/allbak/ ``` 修改属主属组 ```asp chown -R mysql:mysql /var/lib/mysql ``` ## 完全备份-单表恢复 登录状态下,删除表空间文件(对应/var/lib/mysql/db2/t2.ibd) ```asp alter table db2.t2 discard tablespace; ``` 导出表信息 ```asp innobackupex --apply-log --export /root/allbak/ ``` 拷贝表信息文件到数据库目录下 ```asp cp /root/allbak/db2/t2.{cfg,exp,ibd} /var/lib/mysql/db2/ ``` 修改属主属组 ```asp chown mysql:mysql /var/lib/mysql/db2/* ``` 登录状态下,导入表空间 ```asp alter table db2.t2 import tablespace; ``` 删除数据库目录下的表信息文件 ```asp rm -rf /var/lib/mysql/db2/t2.{cfg,exp} ``` ## 增量备份-增量恢复 第1次全量备份 ```asp innobackupex --user root --password 'JCss%6!8' /allbak --no-timestamp ``` 查看状态第1次 ```asp cat /allbak/xtrabackup_checkpoints ``` ```asp backup_type = full-backuped #备份状态(全量1) from_lsn = 0 #第1次份起始点 to_lsn = 2566396 #第1次备份结束点 ``` 第2次增量备份参考/allbak区分新增数据 ```asp innobackupex --user root --password 'JCss%6!8' --incremental /new1dir --incremental-basedir=/allbak --no-timestamp ``` 查看状态第2次 ```asp cat /new1dir/xtrabackup_checkpoints ``` ```asp backup_type = incremental #备份状态(增量2) from_lsn = 2566396 #第2次备份起始点 to_lsn = 2572254 #第2次备份结束点 ``` 第3次增量备份参考/new1区分新增数据 ```asp innobackupex --user root --password 'JCss%6!8' --incremental /new2dir --incremental-basedir=/new1dir --no-timestamp ``` 查看状态第3次 ```asp cat /new2dir/xtrabackup_checkpoints ``` ```asp backup_type = incremental #备份状态(增量3) from_lsn = 2572254 #第3次备份起始点 to_lsn = 2574380 #第3次备份结束点 ``` 将第1次本分数据传输给数据库B ```asp scp -r /allbak/ root@192.168.1.16:/opt ``` 将第2次本分数据传输给数据库B ```asp scp -r /new1dir/ root@192.168.1.16:/opt ``` 将第3次本分数据传输给数据库B ```asp scp -r /new2dir/ root@192.168.1.16:/opt ``` 导出备份数据准备恢复 ```asp innobackupex --apply-log --redo-only /opt/allbak/ ``` 查看 ```asp cat /opt/allbak/xtrabackup_checkpoints backup_type = log-applied from_lsn = 0 to_lsn = 2566396 ``` 将第1次追加的备份与全量的进行日志合并 ```asp innobackupex --apply-log --red-only /opt/allbak --incremental-dir=/opt/new1dir ``` 查看 ```asp cat allbak/xtrabackup_checkpoints ``` ```asp backup_type = full-prepared from_lsn = 0 to_lsn = 2572254 ``` 将第2次追加的备份与全量的进行日志合并 ```asp innobackupex --apply-log --red-only /opt/allbak --incremental-dir=/opt/new2dir ``` 数据库B清空(数据库目录必须是空的) ```asp rm -rf /var/lib/mysql/* ``` 数据库B数据恢复 ```asp innobackupex --copy-back /opt/allbak/ ``` 修改属主属组 ```asp chown -R mysql:mysql /var/lib/mysql ```
done
2024年5月11日 09:42
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码