在 使用Percona XtraBackup热备和恢复MySQL(一)
这里恢复innodb数据库时写的很简单,但是在实践的时候发现有报错,类似如下:
IMPORTANT: Please check that the copy-back run completes successfully.
At the end of a successful copy-back run innobackupex-1.6.4
prints "completed OK!".
Original data directory is not empty! at innobackupex-1.6.4 line 544.
意思大概是说原始的数据目录不是空的。
谷歌找了一下原因,参见:http://www.mysqlperformanceblog.com/2011/12/19/percona-xtrabackup-1-6-4/
上面说:
innobackupex did not check that MySQL datadir was empty before –copy-back was run.
With this bug fix, innobackupex will now error out of the –copy-back operation if the destination is not empty,
avoiding potential data loss or a strang combination of a restored backup and previous data. Bug Fixed: #737569
(Valentine Gostev)
于是找到了这个bug:https://bugs.launchpad.net/percona-xtrabackup/+bug/737569
我用的是percona-xtrabackup-2.0.0,按说这个版本应该解决了这个问题!否则percona也太不厚道了。
所以Original data directory is not empty应该是正常的!可以把Preparing之后的ibdata1和ib_logfile*文件分别复制到mysql的my.cnf里面配置的innodb_data_home_dir目录和datadir目录,然后启动mysql即可!
在这个bug页面的最下面看到以下内容:
Hello,
partial backup restore is not supported. If you have innodb_file_per_table enabled for tables in these databases - you might want to use --export option to restore data from backup partially.
这里提供了一种partial backup restore的方法。
倒数第二个评论中也提供了怎么部分恢复多个数据库中的若干个的方案。
So, in my understanding, the workround should be: Make sure "ls /var/lib/mysql/mydb01" shows an empty directory OR not existing before running innobackupex --copy-back
继续找了一下innodb_file_per_table 参数的含义:
InnoDB引擎默认将所有的数据库的表数据存储在一个共享空间中:ibdata1。(这就是为什么我测试写入的时候,这个文件的大小高达37G,而且在drop数据库之后,ibdata1文件不会自动收缩)
这样单个数据库或表的备份成为问题,通常只能将数据使用mysqldump导出,然后再导入解决这个问题。
而用XtraBackup的copy-back也只能一个很大的ibdata1文件来恢复数据,而且要求数据目录是空的,只能全库恢复,不能部分恢复!
在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table=1参数。
修改InnoDB为独立表空间模式,使数据库的每个表都生成一个表空间。
innodb_file_per_table的优点:
1.每个表都有自已独立的表空间(tablespace)。
2.每个表的数据和索引都会存在自已的表空间中。
3.可以实现单表在不同的数据库中移动。
4.空间可以回收(除drop table操作处,表空不能自已回收)
a)Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。
b)对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。
c)对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。
innodb_file_per_table的缺点:
单表增加过大,如超过100个G。
开启innodb_file_per_table的方法:
1.在my.cnf中[mysqld]下设置
innodb_file_per_table=1
2.查看是否开启:
mysql> show variables like ‘%per_table%’;
3.Move table from system tablespace to its own tablespace.
SET GLOBAL innodb_file_per_table=1;
ALTER TABLE table_name ENGINE=InnoDB;
4. Move table from its own tablespace to system tablespace.
SET GLOBAL innodb_file_per_table=0;
ALTER TABLE table_name ENGINE=InnoDB;
操作完成之后ibdata1的大小不会改变,只是数据库数据目录下每个表从以前的一个.frm文件,多了一个同名的.ibd文件。如果想让ibdata1收缩,只能手动mysqldump出所有数据库的数据到sql文件中,删除原来的ibdata1和ib_logfile*,binlog也可以删掉,相当于在一个空的数据库执行mysqldump出的sql文件。这样,ibdata1就会是my.cnf中配置的初始大小而不会增长。
分享到:
相关推荐
Percona Xtrabackup 是一种热备工具,能在线对 MySQL 数据库进行全量备份和增量备份。全量备份是指备份整个数据库的所有数据,而增量备份是指备份自上一次备份以来所有的变化。本文将介绍如何使用 Percona ...
总体来说,Percona XtraBackup为MySQL数据库提供了高效、稳定的备份和恢复解决方案。它不仅支持多种备份类型和灵活的数据传输方式,而且通过其增量备份功能,大幅提高了备份效率并降低了存储成本。对于DBA来说,熟练...
Xtrabackup是一个用于MySQL数据库物理热备的备份工具,由Percona公司开发,支持MySQL、Percona server和MariaDB,开源免费。其主要特点是能够对数据库进行增量备份,支持InnoDB和XtraDB两种数据引擎的表,但不能备份...
Xtrabackup是Percona 开发的一款开源的MySQL备份工具,它可以对MySQL数据库进行热备、冷备和增备,支持InnoDB、MyISAM和其他存储引擎。Xtrabackup全备是指使用Xtrabackup工具对整个MySQL数据库进行备份,包括所有...
6. **可扩展性**:Xtrabackup可以通过插件和其他工具如Pseudo-GTID、Percona XtraBackup Cloud Backup等进行扩展,满足更复杂的备份和恢复需求。 在实际使用中,管理员需要对Xtrabackup的配置文件进行设置,包括...
本文将深入探讨MySQL的热备份和增量备份,以Percona的Xtrabackup工具为例。 Xtrabackup是一款专为MySQL设计的开源备份工具,尤其适用于处理InnoDB和XtraDB存储引擎的数据。它具有以下显著特点: 1. **快速备份**:...
xtrabackup是一款由Percona开发的高效热备份工具,适用于MySQL数据库。它支持InnoDB、XtraDB和MyISAM表的备份,且能在不影响服务的情况下进行。xtrabackup具备以下特点: 1. 实现InnoDB的热备份,无需停机。 2. 支持...
Xtrabackup是Percona公司专门针对MySQL数据库开发的一款开源免费的物理备份(热备)工具,可以对InnoDB和XtraDB等事务引擎的数据库实现非阻塞(即不锁表)方式的备份,也可以针对MyISAM等非事务引擎实现锁表方式备份...
此外,手册中还包含了相当数量的高级使用案例和实践配方,这些教程旨在帮助用户更加深入地掌握xtrabackup,实现更加灵活、高效的备份和恢复操作。 在商业支持方面,xtrabackup由Percona公司提供企业级的商业MySQL...
简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点: (1)备份过程快速、可靠; (2)备份过程不会打断正在执行的事务; ...
9. innobackupex命令:Percona XtraBackup工具用于InnoDB存储引擎的热备份,支持全备、增量备份和数据恢复。 10. 还原数据的标准流程: - mysqldump还原:`mysql -u [username] -p [password] [database] - ...
总结而言,MySQL作为关系型数据库的领导者,其数据备份和恢复功能十分丰富。无论是逻辑备份还是物理备份,完全备份还是增量备份,各种备份工具和技术都能够帮助数据库管理员和开发人员实现数据的安全保护。而对于...
MySQL提供多种备份工具,如mysqldump和Percona Xtrabackup。 6. **性能优化**:双机备份可能导致额外的网络开销和资源消耗,因此需要优化网络设置、调整复制延迟以平衡读写性能和数据一致性。 7. **监控与维护**:...
例如,MySQL的binlog(二进制日志)可以用于实现主从同步,而开源工具如Percona Xtrabackup可以进行在线热备份。另外,还有像Oracle的Data Guard、SQL Server的AlwaysOn Availability Groups等商业解决方案,它们...
### 6.6练习实验冷备知识点解析 #### 一、binlog日志备份还原...以上实验详细介绍了如何使用MySQL的binlog日志备份与Percona XtraBackup进行数据库备份及恢复的过程,对于理解并掌握这两种备份方法有着重要的意义。
MySQL复制技术是数据库管理中的重要组成部分,特别是在高可用性、数据冗余和故障恢复的场景...同时,持续学习和掌握新的复制策略和工具,如GTID(全局事务标识符)和Percona Xtrabackup,将使你在这个领域更具竞争力。
1. 全量备份与增量备份:理解mysqldump和xtrabackup等工具的使用,以及如何进行快速恢复。 2. 灾难恢复:规划和实施有效的灾难恢复策略,包括定期备份、异地备份和热备方案。 通过对《高性能MySQL》(第三版) 的...
对于Java开发者来说,掌握MySQL的使用和优化技巧是必备的技能之一。以下是一些关于MySQL的重要知识点,这些都是在面试中可能会被问到的内容。 1. **SQL基础**: - 数据库基本操作:创建(CREATE DATABASE)、删除...
- **物理备份**:直接复制文件系统上的文件,如使用`cp`命令或`xtrabackup`工具。 - **恢复策略**: - **完全恢复**:恢复到故障发生前的状态。 - **不完全恢复**:恢复到故障发生后的某一时刻。 #### 二、经典...
6. **数据库备份与恢复**:学会使用mysqldump进行数据备份,理解热备和冷备的区别,以及如何使用mysqlpump或XtraBackup进行大型数据库的备份。 7. **性能调优**:这包括查询优化、配置参数调整、服务器硬件优化等。...