备份innodb和myisam表的混合MySQL DB

我有一个大型的数据库(几乎1GB),它有一个innodb和myisam表的混合物。 有没有人有任何一般的技巧备份或更具体的我应该发送到mysqldump的命令。 我看到我应该lockingmyisam表,并为innodb单个交易,但如果我有两个。 另外,当我locking生产数据库上的整个(非常大的)表时,实际发生了什么。

有趣的是MySQL客户端工具不能同时处理两个存储引擎。 但是,不要绝望。

真的有一个成功的方法来通过mysqldump快照数据:

步骤1)mysql -h … -u … -p … -A -e“带读锁的刷新表;select睡眠(86400)”&

在这个MySQL会话中,这将locking所有的表,MyISAM,InnoDB等等。 整个数据库处于只读状态

步骤2)大约20-30秒后,捕获执行SLEEP命令的进程ID,如下所示:

SLEEPID =`mysql -h … -u … -p … -A -e“SHOW PROCESSLIST”| grep“SLEEP(86400)”| awk'{print $ 1}'`

步骤3)执行mysqldump

mysqldump -h … -u … -p … -single-transaction – 例程–triggers –all-databases> MySQLData.sql

步骤4)杀死进程执行SLEEP命令:

mysql -h … -u … -p … -A -e“KILL $ {SLEEPID}”

相信我,每次都有完美的快照。

试一试 !!!

PS公平地说,还有其他的工具,你可能想看看

工具1)CDP R1Soft(使用MySQL模块)

工具2)来自Percona的XtraBackup

你可以用innobackupex使用Percona的XtraBackup,它会为你做的工作。