2012-06-15 4 views
1

У меня есть вопрос, связанный с резервным копированием нескольких баз данных innodb MySQL, которые имеют перекрестные отношения базы данных друг с другом. Вызывает озабоченность реляционная целостность данных во время резервного копирования и восстановления баз данных.mysql - резервное копирование связанных баз данных innodb

Вариант использования для этой ситуации был бы ситуацией, когда одна «основная» база данных использовалась для хранения данных верхнего уровня, таких как информация пользователя для нескольких отдельных доменов, которые не могут быть объединены в одну базу данных. Настройка этого вопроса не является проблемой, поскольку MySQL допускает перекрестные отношения базы данных с внешними ключами innodb.

Однако, как правильно создать резервную копию основной и вторичной баз данных (при условии, что они находятся на одном сервере), не нарушая внешних ключей во время резервного копирования.

Ищу пути к какой-то, как захватить «моментальный снимок» во время этих баз данных в тот момент, или если это не представляется возможным, чтобы сохранить отношения во время резервного копирования ...

ответ

1

Я надеюсь, что правильно поняли вопрос.

Предположим, у вас есть две базы данных (db1 и db2), где ограничение внешнего ключа из одной или нескольких таблиц в db2 ссылается на что-то в db1.

Если вы хотите, чтобы во время резервного копирования все было согласовано по времени, вы можете позволить mysqldump сделать это за вас. Всякий раз, когда вы запускаете туздЫшпр, вы выдать --single-transaction вариант, как это:

mysqldump -u... -p... --single-transaction --databases db1 db2 > db1_db2.sql 

Внутренняя контрольная точка создается так, что DB1 и db2 согласуются с точки зрения ссылочной целостности и точка-в-время ДАЖЕ Если данные ВВЕДЕНИЕ В db1 И db2 ВО ВРЕМЯ РЕЗЕРВНОГО КОПИРОВАНИЯ.

Во время восстановления mysqldump внешние ключи отключены, чтобы обеспечить перезагрузку чистой и быстрой перезагрузки. Вы можете доверять внешним ключам, которые были отключены во время восстановления. ЕСЛИ И ТОЛЬКО ЕСЛИ mysqldump был сделан с использованием опции --single-transaction.

+0

Позвольте мне сказать спасибо за отличный ответ. Думаю, вы точно поняли мою проблему. Я искал MySQL Enterprise и следующее, что я нашел: Горячие резервные копии с MySQL Enterprise: http://dev.mysql.com/doc/mysql-enterprise-backup/3.5/en/meb-backup-overview .html Команда резервного копирования с MySQL ENterprise: http://dev.mysql.com/doc/mysql-enterprise-backup/3.6/en/intro.html –

+0

Они выглядят как довольно интересные альтернативы. Команда Backup с сервером MySQL выглядит наиболее удобной для пользователя, чем горячая резервная копия. Однако из того, что я понял с помощью hotbackup, заключается в том, что это выигрыш - это его скорость. –

+0

Другие люди предположили, что использование FLUSH TABLES WITH READ LOCK при выполнении дампа, однако, похоже, оказывает негативное влияние на длинные SQL-операторы, которые все еще заняты в момент резервного копирования: см .: http: //www.mysqlperformanceblog .com/2012/03/23/how-flush-tables-with-read-lock-works-with-innodb-tables/ –

Смежные вопросы