Восстановление базы данных в новый кластер
Мы используем сервер Percona 5.7.16-10. Я хотел бы расширить текущее решение с кластером XtraDB. Тем временем я создал другие машины и запустил кластер (работает на версии Percona XtraDB Cluster 5.7.17-11-57) и провел там некоторое тестирование (кажется, все работает нормально). Теперь я хотел бы сбросить текущую базу данных с работающего сервера и вставить ее в кластер. Нет проблем остановить кластер (так как он для тестирования). Но когда я создаю mysqldump, как я привык, я не могу вставить его в кластер из-за pcx_strict_mode (информация здесь) - с принудительным Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK with pxc_strict_mode = ENFORCING
потому что mysqldump создает скрипт, который содержит блокировку таблицы, что запрещено. Итак, я протестировал еще несколько опций, таких как MASTER, которые не должны проверять это правило, но это не помогло, потому что запрос вставки из дампа застрял и ничего не происходит.
Есть ли какая-либо опция mysqldump, чтобы избежать запросов на блокировку таблиц, или мне нужно как-то восстановить ее через XtraBackup и использовать XtraBackup для текущего работающего сервера?
Я прочитал несколько тем здесь, но не нашел никого с той же проблемой. Каждый решает, как восстановить кластер с какого-то сбоя, а не с нуля.
Я буду рад любому предложению для mysqldump или как правильно "вставить" старую базу данных в кластер.
1 ответ
Если вы можете снять свою текущую машину, и если вы строите кластер с нуля, то я думаю, что это (на mysqldump
) будет избегать режима strict_mode и, возможно, некоторых других ошибок:
--skip_add_locks --skip-lock-tables
И не использовать
--single-transaction --lock-all-tables
Также может быть целесообразно загрузить первый узел в кластере с данными, а затем добавить другие узлы, позволяя им использовать SST для загрузки самих себя.
Если вам нужно сохранить текущий сервер живым, то нам нужно обсудить вопрос о том, как сделать его ведущим, а один узел нового кластера - ведомым. Плюс XtraBackup, вероятно, будет лучше. Но теперь блокировки и одиночные транзакции были бы необходимы. Итак, установив для параметра strict_mode значение DISABLED
кажется правильным, так как кластер строится, а еще не живет.
(Предостережение: у меня нет опыта в выполнении вашей задачи; если кто-то другой дает более убедительный ответ, идите с ними.)