MySQL通过 XtraBackup 备份恢复单个库

Xtrabackup的备份恢复操作 文章目录一、下载安装Xtrabckup二、工具介绍三、工作流程四、准备工作4.1 连接参数4.2 创建用户及授权五、备份操作5.1 全备破坏性测试(使用xtrabackup)5.2 全备+增备破坏性测试(使用innobackupex)5.3 其他备份需求5.3.1 备份单库5.3.2 备份单表5.3.3 备份多表5.4 恢复单库、单表或者多表5.4.1 恢复单表/多表5.4.2 恢复单库 一、下载安装Xtrabckup #下载安装包 wget https://www.percona.com/dow 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:王权富贵
  • 文章来源:GreatSQL社区原创

1.概述

本文通过 XtraBackup 备份单个数据库,然后恢复到另一个实例,用于快速迁移大数据量,使用的软件版本为:

软件名版本
MySQLmysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
XtraBackuppercona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm

在2台主机分别安装一个MySQL实例:

主机IP地址端口号
MySQL-A192.168.100.105508
MySQL-B192.168.100.115508

2.在MySQL-A初始化数据

通过sysbench 初始化数据,10张表,每张表10000条记录

shell> sysbench src/lua/oltp_read_write.lua --mysql-db=sysbench --mysql-host=192.168.100.10 --mysql-port=5508 --mysql-user=greatsql --mysql-password='greatsql' --tables=10 --table_size=10000 --report-interval=2 --threads=50 --time=1000  --mysql_storage_engine=innodb --partitions=3 --skip_trx=0 --mysql-ignore-errors=all prepare

3.通过 xtrabackup 备份 MySQL-A 的 sysbench 库

shell> innobackupex --defaults-file=/mysql/conf/my5508.cnf  --user greatsql --password greatsql -H127.0.0.1 -P5508  --databases sysbench  /mysql/dbbackup
...
...
221229 10:11:17 Executing UNLOCK TABLES
221229 10:11:17 All tables unlocked
221229 10:11:17 [00] Copying ib_buffer_pool to /mysql/dbbackup/2022-12-29_10-11-07/ib_buffer_pool
221229 10:11:17 [00]        ...done
221229 10:11:17 Backup created in directory '/mysql/dbbackup/2022-12-29_10-11-07/'
MySQL binlog position: filename 'binlog.000005', position '190', GTID of the last change '3e362a47-8683-11ed-92e1-00163ed294ac:1-87'
221229 10:11:17 [00] Writing /mysql/dbbackup/2022-12-29_10-11-07/backup-my.cnf
221229 10:11:17 [00]        ...done
221229 10:11:17 [00] Writing /mysql/dbbackup/2022-12-29_10-11-07/xtrabackup_info
221229 10:11:17 [00]        ...done
xtrabackup: Transaction log of lsn (1123405728) to (1123405737) was copied.
221229 10:11:17 completed OK!

4.备份 MySQL-A sysbench 库的表结构

shell> /mysql/svr/mysql/bin/mysqldump -ugreatsql -pgreatsql -h127.0.0.1 -P5508 --single-transaction --set-gtid-purged=OFF --master-data=2  -d  -B sysbench > sysbench.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

5.将备份的 sysbench 库的表结构导入 MySQL-B

shell> /mysql/svr/mysql/bin/mysql -ugreatsql -pgreatsql -h192.168.100.11 -P5508 < sysbench.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

6.登录 MySQL-B 生成丢弃/导入表空间的 SQL 语句

# 生成丢弃表空间的SQL
mysql> select concat('alter table ',table_schema,'.',TABLE_NAME , ' discard tablespace', ';') from  information_schema.tables where TABLE_SCHEMA = 'sysbench' into outfile '/tmp/discard.sql';
Query OK, 10 rows affected (0.00 sec)

# 生成导入表空间的SQL
mysql> select concat('alter table ',table_schema,'.',TABLE_NAME , ' import tablespace', ';') from  information_schema.tables where TABLE_SCHEMA = 'sysbench' into outfile '/tmp/import.sql';
Query OK, 10 rows affected (0.01 sec)

7.登录 MySQL-B 执行丢弃表空间的 SQL 语句

mysql> source /tmp/discard.sql;  

8.查看 MySQL-B 底层数据文件

shell> ll -h /mysql/dbdata/data5508/data/sysbench/
total 124K
-rw-r----- 1 mysql mysql   67 Dec 29 10:25 db.opt
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:25 sbtest10.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:25 sbtest1.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:25 sbtest2.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest3.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest4.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest5.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest6.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest7.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest8.frm
-rw-r----- 1 mysql mysql 8.5K Dec 29 10:26 sbtest9.frm

可以看到ibd文件已被丢弃

9.prepare 备份文件

注意这里需要加 --export 选项,它允许导出单个表以进行导入到另一个服务器

shell> innobackupex --apply-log --export /mysql/dbbackup/2022-12-29_10-11-07
xtrabackup: recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksum_algorithm=strict_crc32 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_files_in_group=4 --innodb_log_file_size=33554432 --innodb_fast_checksum=0 --innodb_page_size=16384 --innodb_log_block_size=512 --innodb_undo_directory=/mysql/dbdata/data5508/log --innodb_undo_tablespaces=0 --server-id=2 --redo-log-version=1 
xtrabackup: recognized client arguments: 
221229 10:56:58 innobackupex: Starting the apply-log operation

IMPORTANT: Please check that the apply-log run completes successfully.
           At the end of a successful apply-log run innobackupex
           prints "completed OK!".
...
...
xtrabackup: starting shutdown with innodb_fast_shutdown = 0
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 1123519528
221229 10:57:13 completed OK!

10.查看备份文件目录

shell> ll -h /mysql/dbbackup/2022-12-29_10-11-07/sysbench/
total 271M
-rw-r----- 1 root root   67 Dec 29 10:11 db.opt
-rw-r----- 1 root root 8.5K Dec 29 10:11 sbtest10.frm
-rw-r--r-- 1 root root  578 Dec 29 10:57 sbtest10#P#p0.cfg
-rw-r----- 1 root root  16K Dec 29 10:57 sbtest10#P#p0.exp
-rw-r----- 1 root root 9.0M Dec 29 10:11 sbtest10#P#p0.ibd
-rw-r--r-- 1 root root  578 Dec 29 10:57 sbtest10#P#p1.cfg
-rw-r----- 1 root root  16K Dec 29 10:57 sbtest10#P#p1.exp
-rw-r----- 1 root root 9.0M Dec 29 10:11 sbtest10#P#p1.ibd
-rw-r--r-- 1 root root  578 Dec 29 10:57 sbtest10#P#p2.cfg
...

可以看到prepare备份文件后,多了 cfg,exp结尾的文件

11.传输备份文件

将准备好的备份文件中后缀名为cfg,ibd,exp的文件传输到MySQL-B实例的sysbench库下

shell> scp -r /mysql/dbbackup/2022-12-29_10-11-07/sysbench/*.ibd /mysql/dbbackup/2022-12-29_10-11-07/sysbench/*.cfg /mysql/dbbackup/2022-12-29_10-11-07/sysbench/*.exp root@192.168.100.11:/mysql/dbdata/data5508/data/sysbench/

12.修改传输过来的文件的属主属组

shell> chown -R mysql.mysql /mysql  

13.登录 MySQL-B 执行导入表空间的 SQL 语句

mysql> source /tmp/import.sql;  

14.登录 MySQL-B 检查一张表是否正常

mysql> select count(*) from sysbench.sbtest1;
+----------+
| count(*) |
+----------+
|    10000 |
+----------+
1 row in set (0.01 sec)

15.使用 sysbench 进行压测 MySQL-B

shell> sysbench src/lua/oltp_read_write.lua --mysql-db=sysbench --mysql-host=192.168.100.11 --mysql-port=5508 --mysql-user=greatsql --mysql-password='greatsql' --tables=10 --table_size=10000 --report-interval=2 --threads=50 --time=300  --mysql_storage_engine=innodb --partitions=3 --skip_trx=0 --mysql-ignore-errors=all run
sysbench 1.1.0-df89d34 (using bundled LuaJIT 2.1.0-beta3)
...
...
SQL statistics:
    queries performed:
        read:                            1702400
        write:                           486400
        other:                           243200
        total:                           2432000
    transactions:                        121600 (405.25 per sec.)
    queries:                             2432000 (8105.04 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

Throughput:
    events/s (eps):                      405.2522
    time elapsed:                        300.0601s
    total number of events:              121600

Latency (ms):
         min:                                    9.04
         avg:                                  123.36
         max:                                 1512.19
         95th percentile:                      590.56
         sum:                             15000942.35

Threads fairness:
    events (avg/stddev):           2432.0000/58.48
    execution time (avg/stddev):   300.0188/0.01

压测正常

16.重启MySQL-B并查询一张表

mysql> shutdown;
shell> /mysql/svr/mysql/bin/mysqld_safe --defaults-file=/mysql/conf/my5508.cnf --user=mysql &

mysql> select count(*) from sysbench.sbtest2;
+----------+
| count(*) |
+----------+
|    10000 |
+----------+
1 row in set (0.04 sec)

总结

通过上述方法可以快速备份恢复大数据量的库,也可以同时指定多个库,单张表或多张表进行恢复。可参考官方文档 Partial Backups - Percona XtraBackup


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

image-20230105161905827

6440

利用Xtrabackup进行单库备份、单表恢复实例 写在前面: 笔者在实际工作中发现,对于数据恢复来说,更多情况下面临的问题是:单个数据库中的某个或者某几个表出现了问题,很少对整个库的数据进行恢复,除非硬盘损坏或者手抖执行了DROP,笔者就单库备份,单表恢复的场景进行记录(需要全库备份、全库恢复需求的同行,自行百度),如有不当之处,望请留言指正,不胜感激! 环境准备: 1)Xtrabackup版本的选择 不同版本的MySQL需要使用不同版本的 Pe... 阅读详情

相关推荐

【Mysql备份与恢复三】Xtrabackup物理备份功能测试

【Mysql备份与恢复二】Mysql三种备份方法验证<<<<<<<<<对Mysql的三种主流的备份方式进行了验证。由于业务需求,本次将会对Xtrabackup物理备份的功能进行细致的测试。 目录测试场景一:增量备份的数据恢复顺序测试测试场景二:本地备份压缩测试测试场景三:海量数据流式远程备份测试测试场景四:单个库表备份测试测试场景五:热备份热恢复测试测试场景六:Mysql分区表备份与恢复测试测试场景七:主从备份数据恢复测试场景八:主主备份数据恢复 .

羽觞醉月 585

利用Xtrabackup进行单库备份,增备

Percona XtraBackup打包备份使用注意。利用Xtrabackup进行单库备份、单表恢复实例。#第一种方法指定备份文件夹。

大脸猫脸大 1071

Linux 使用xtrabackup备份MySQL数据

介绍如何使用物理备份工具xtrabackup备份MySQL数据,以及数据的恢复操作;

heyongshen的博客 2393

MySQL 备份恢复

1:备份常用工具: mysqldump, xtrabackup mysqldump: 原生数据导出工具,以sql的形式导出保存 xtrabackup: percona团队提供的备份工具,基于文件系统的备份 2:备份全库: mysqldump -h10.6.29.1 -uroot -p --all-databases > 20140925_all_db_10.6.29.1.sql...

weixin_30343157的博客 95

mysql实战——xtrabackup全量备份/增量备份及恢复

恢复的机器必须有my.cnf配置文件,再配置文件中配置好datadir目录即数据问目录,数据目录也必须为空,若不为空则会报错。可以看到第一次增量备份后新增的表空间被恢复了。可以看到inc4是第一次增量备份生成的文件。增量备份需要获取全量备份的to_lsn。如上图to_lsn=18374406。可以看到test2表空间。

zyjzyjjyzjyz的博客 4926

MySQL物理备份恢复实战之XtraBackup

逻辑备份是SQL文件,可编辑。物理备份就是二进制文件,不可编辑,数据库的一个副本(逻辑备份时SQL文件,可编辑)特点:有数据文件和目录组成,是mysql数据目录的全部/拷贝速度快,文件复制备份粒度小除了备份数据以外,还可以备份日志和配置文件适合场景:最适合大数据量的备份,比如百GB,TB级……物理备份方法:xtrabackup(percona公司开源免费的,早期对应的官方收费版本innobackup)mysql enterprise backup(MEB/mysqlbackup),官方收费其他:cp/tar

weixin_tank88921的博客 1528

MySQL备份

使用tar命令将数据库目录/var/lib/mysql/*进行备份。

是程序喵呀 2287

详解使用Percona XtraBackup进行单库、单表备份并快速恢复到其他环境下

这里直接开门见山,代码糊上 由于安全问题 使用的账户以及库均为虚拟,步骤如下: 备份单表: 1 制作备份 [root@localhost ~]# innobackupex --user=backup --password=123456 --databases="cumcm.cumcm_sys_country" /home/pack xtrabackup: recognized server arg...

专注于编程、AI、人工智能等多个领域内容研究和分析 6205

XtraBackup对Mysql数据热备份

通过使用XtraBackup,多Mysql存储的数据进行热备份,当数据库数据无法恢复后,通过备份数据进行恢复

weixin_39066895的博客 2857

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

CloudCompare里那个CSF地面滤波插件,到底怎么用?手把手教你分离点云里的地面

本文详细介绍了如何在CloudCompare中使用CSF地面滤波插件分离点云中的地面数据。通过解析布料模拟滤波算法的核心参数,如布料刚度和网格分辨率,并提供不同地形(城市、丘陵、山地)的适配策略,帮助用户高效处理复杂点云数据。文章还包含实战案例和优化技巧,确保滤波结果的精度和可靠性。

weixin_42548708的博客 221

MySQL快速备份恢复大数据的方法

通过上述方法可以快速备份恢复大数据量的库,也可以同时指定多个库,单张表或多张表进行恢复。将准备好的备份文件中后缀名为cfg,ibd,exp的文件传输到MySQL-B实例的sysbench库下。注意这里需要加 --export 选项,它允许导出单个表以进行导入到另一个服务器。通过sysbench 初始化数据,10张表,每张表10000条记录。可以看到prepare备份文件后,多了 cfg,exp结尾的文件。# 生成丢弃表空间的SQL。# 生成导入表空间的SQL。可以看到ibd文件已被丢弃。

Free雅轩的博客 1318

深度解析:如何通过NodeRed实现私有485协议VRF中央空调与HomeAssistant的无缝对接

本文详细介绍了如何利用NodeRed的灵活流程化编程,破解并处理VRF中央空调的私有485协议,实现与HomeAssistant的无缝本地化集成。文章从协议分析、硬件准备到NodeRed核心流程搭建、数据映射及双向通信控制,提供了一套完整的实战方案,帮助用户将非标设备深度融入智能家居生态,摆脱对厂家云服务的依赖。

weixin_29173777的博客 408

MySQL数据库备份与恢复

简介     人为误操作、软硬件故障等这些不可预计的事故都可能会导致数据丢失,此时数据库备份显得尤为重要。而在面对特大量数据时则不会选择将完整数据备份,综合考虑可接受的丢失数据量、数据备份资源消耗,数据恢复所需时长等因素,选择合适的备份方案及方法。 备份类型 按备份数据量分为: 完全备份: 备份整个数据集 部分备份: 仅备份部份数据 以某时间点为基础,每次备份的数据量分为: 完全备份: 每一...

qq_40343772的博客 199

手把手教你用分立元件搭建自举电路:解决高端MOS驱动难题

本文详细介绍了如何用分立元件搭建自举电路,解决高端MOS驱动中的栅源极电压不足问题。通过面包板实验,逐步讲解二极管、电容等关键元件的选型与电路搭建,提供波形调试和常见问题排查方法,帮助工程师提升开关电源和电机驱动等应用的效率与可靠性。

weixin_30555125的博客 153

Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤)

本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。

weixin_29306571的博客 637

Xtrabackup 备份与恢复

1.安装xtrabackup # yum -y install perl perl-devel libaio libaio-devel libev-devel # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.5/binary/redhat/6/x86_64/percona-...

dieyixiang2424的博客 147

拆解博世、大陆的EMB方案:自增力机构如何省下83%的能耗?

本文深度解析了博世和大陆的电子机械制动(EMB)技术,重点探讨了自增力机构如何实现83%的能耗节省。通过对比电机直驱型和自增力型EMB的技术参数,揭示了自增力机构在能量优化和系统集成方面的创新优势,为汽车电动化和智能化提供了关键技术支持。

weixin_42665725的博客 394

通过Xtrabackup实现MySQL实例的全库备份与按需单库恢复

(innobackupex --defaults-file=/data/mysql/support-files/my_default.cnf --user=用户 --password=密码 /data/backup/full)在实际的生产环境中,为了管理方便,我们一般是通过 Xtrabackup实现实例的全库备份,即将实例上的所有数据库备份。1.还原后,查询显示所有的数据,可以看到 数据库testaa,testbb,testcc没有还原。2.查询还原的数据库,数据正常,和还原前无差异。

hongjian006的博客 866

uniapp(全端兼容) - 最新详细uniapp全平台植入使用echarts图表插件,引入 Echarts 图表及使用详细教程,提供各种图表使用示例(拒绝复杂的过程,附带详细的使用示例保姆级教程)

uniapp 微信小程序 echats 图表,uni-app小程序引用echarts,niapp 微信小程序引入echats教程,uniapp 使用echats图表,uniapp开发如何在微信小程序平台使用echats图表,uniapp开发的小程序中怎么用echats,在uni-app中编译到微信小程序如何使用echarts,UNIAPP微信小程序使用Echarts,uni-app微信小程序使用echarts,Uniapp小程序端使用echarts最详细的教程,uni-app中使用Echarts绘画图表,u

✅ 精选推荐文章 1万+

采样率转化代码C++(有理倍数,升采样、降采样均可)

【代码】采样率转化(有理倍数,升采样、降采样均可)

goudahai的专栏 547

MySQL之Xtrabackup备份恢复数据库

innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项,如slave-info可以记录备份恢复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做sl

xtdhqdhq的专栏 1711

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

xtrabackup 备份还原单库/表

使用 mysqldump 逻辑备份还原单个数据库/表非常方便。但是,当数据量比较大的时候,对逻辑备份进行恢复的时间太长了。这个时候选择物理备份的方式能大大缩短其中时间。使用 xtrabackup 进行全库物理备份还原非常简单,无须对其表空间(tablespace)进行重新导入。xtrabackup 全库备份还原步...

weixin_34195546的博客 969

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MySQL之 XtraBackup 备份

MySQL 系列连载之 XtraBackup 备份原理(1) 导读 在日常的linux运维工作中,大数据量备份与还原,始终是个难点。关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天本文推荐另一个备份工具innobackupex。 Xtrabackup简介 innobackupex和mysqldump都可以对mysql进行热备份的,mysqldump对mysql的innodb的备份可以使用single-transaction参数来开启一个事务,利用innodb的mvcc来不进行锁表进行热

qq_40907977的博客 1万+
上一篇: 图文结合带你搞懂MySQL日志之relay log(中继日志)
下一篇: 联合评测 DapuStor Roealsen5 NVMe SSD在GreatSQL数据据库中的应用探索
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值