Назад | Перейти на главную страницу

Зеркалирование сервера MySQL с другой конфигурацией

Мне нужно перенести сервер MySQL в другой центр обработки данных, поэтому я хотел бы создать еще один подчиненный сервер MySQL в новом DC, а затем продвигать его к мастеру позже. Ранее для этой цели я использовал снимки LVM и Percona XtraBackup. Однако на этот раз я оптимизировал файл конфигурации MySQL, что не позволяет мне использовать эти методы.

Old server (backup):

innodb_log_file_size = 256M
innodb_log_files_in_group = 3

New server (restore):

innodb_log_file_size = 512M
innodb_log_files_in_group = 2

Сценарий XtraBackup и моментальные снимки LVM копируют всю структуру каталогов, поэтому сервер MySQL не запускается из-за другого размера журналов InnoDB.

Есть ли способ избежать простоя в этом случае? Я не могу использовать mysqldumps, потому что существует около 8000 баз данных. В таком случае мне пришлось бы отключить сервер на пару часов.

Я также думал использовать старые настройки с XtraBackup, а затем изменить их, как только новый сервер будет повышен до главного - меньше простоев, но я не уверен, сработает ли это?

Спасибо

С уважением

«около 8000 баз данных, поэтому мне пришлось бы отключить сервер на пару часов».

Есть ли уже другой подчиненный сервер, который вы можете снять с производства и использовать в качестве временного главного?

Проблема с mysqldump - это снижение производительности или блокировка (в последнем случае --single-transaction --master-data может быть жизнеспособным. Кстати, никогда не полагайтесь на --triggers или --routines по умолчанию!)

Я бы начал со снимка LVM и исходных настроек. Поднимите новый сервер. Закрой это. Убедитесь, что он вышел чисто. Переместите файл журнала в сторону, внесите изменения в конфигурацию и перезапустите. Mysql должен создать новые, и все готово.

Более подробное объяснение Вот.

Вы также можете прочитать Как рассчитать правильный размер файла журнала Innodb /

Я думаю, что последнее предложение звучит как лучший, о каком общем размере вы говорите?

Казалось бы, довольно просто сделать полный дамп innobackupex и передать его в новый центр обработки данных, а затем запустить новый сервер с помощью дампа xtrabackup, но со старыми настройками innodb.

После того, как он будет запущен в режиме только для чтения, вы можете использовать mysqldump, чтобы предоставить файл SQL, который вы можете импортировать куда угодно.

Затем вы можете перезагрузить файл дампа в новый экземпляр mysql с новыми настройками innodb.