有一个数据库,大小为500GB。数据库A中的表包含MyISAM和INNODB表。MyISAM表是主表,而Innodb表是主事务表。
使用mysql dump备份和还原需要花费很长时间或几天。
- max_allowed_packet = 1G
- foreign_key_checks = 0
- auto_commit =关闭
有一个数据库,大小为500GB。数据库A中的表包含MyISAM和INNODB表。MyISAM表是主表,而Innodb表是主事务表。
使用mysql dump备份和还原需要花费很长时间或几天。
Answers:
但是该链接还建议使用Percona的XtraBackup,它速度更快,不会对已在使用的表进行锁定,也不会浪费时间进行恢复。对于500GB的数据,我希望Percona XtraBackup快速高效,除非您希望将其转换为innodb_file_per_table模型(如果它不是来自现有数据库服务器的话)。以下链接说明了如何进行。
http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html
看看mydumper。它比mysqldump快很多:新的mydumper 0.6.1版本提供了性能和可用性功能
您可以从这里下载:https : //github.com/maxbube/mydumper
什么是mydumper?为什么?
- 并行性(因此,速度)和性能(避免了昂贵的字符集转换例程,整体上高效的代码)
- 易于管理输出(用于表的单独文件,转储元数据等,易于查看/解析数据)
- 一致性-维护所有线程的快照,提供准确的主日志和从日志位置等
- 可管理性-支持PCRE用于指定数据库和表的包含和排除
我认为问题是关于如何从mysqldump终止的转储文件中更快地恢复,而不是其他备份解决方案。
一种方法是,通过在架构中创建表组,并为每个组创建一个单独的数据库用户,并使用MySQL权限不允许仅使用一个数据库用户即可插入表。
这是一种经过验证的,快速的,几乎是并行的技术,但不能100%确定从500G恢复所需的时间。但是恕我直言,您需要并行处理。有关示例,请参见下面的链接。