Хорошая идея использовать SQS для перемещения тысяч баз данных?

0

Мы хотим перейти от использования MySQL к экземпляру EC2 к RDS и настроить репликацию. Кажется, это не проблема, не так ли? Ну, у меня есть 30 000 баз данных для перемещения (не спрашивайте). Хотя настройка тиражирования, похоже, хорошо работает, процесс получения 30 000 баз данных в RDS является королевской болью; это берет навсегда, и что-то почти всегда происходит.

Ночная резервная копия занимает около двух часов. Я получаю файл дампа с несколькими GB файлами. Когда я пытаюсь его восстановить, что-то почти всегда идет не так: экземпляр RDS не был достаточно большим по размеру памяти и разбился, у локального хоста закончилось место подкачки, сетевое соединение стало неустойчивым. Без разницы! Я восстановил его однажды; IIRC потребовалось 23 часа (30 тысяч MySQL DB - это тонна файла IO).

Поэтому сегодня я решил использовать mydumper. Он сгенерировал 30 000 файлов схемы для базы данных примерно через два часа, а затем, внезапно, исходный MySQL перешел в режим бесперебойного сна в соответствии с вершиной, я потерял свои клиентские соединения, strace показал, что он все еще пытается читать файлы, и процесс mydumper разбился. Я перезапустил весь процесс и только что проверил статус; По какой-то причине mysqld перезапустил 2,5 часа.

Итак, вот что я думаю, и я бы хотел, чтобы ваш вход: я пишу два сценария python: firstScript.py запустит mydumper в одной базе данных, обновит таблицу состояния, упакует SQL, поместит ее в очередь AWS SQS, повторяя, пока не будет найдено больше баз данных; secondScript.py читает из очереди, запускает SQL и обновляет таблицу состояния, повторяя, пока не будет найдено больше сообщений.

Я думаю, это может сработать. Вы? Главное, что я не уверен в этом: могу ли я просто запустить несколько secondScript.py с помощью Ctrl-Z-их в фоновом режиме?

Или у кого-то есть лучший способ перемещения 30 000 баз данных?

Теги:
amazon-web-services
amazon-sqs

1 ответ

1

Я бы не использовал mysqldump или mydumper для создания логического дампа. Загрузка результирующего дампа формата SQL занимает слишком много времени.

Вместо этого используйте Percona XtraBackup для создания физической резервной копии вашего экземпляра EC2 и загрузки резервной копии на S3. Затем восстановите экземпляр RDS с S3, настройте репликацию на экземпляре RDS на экземпляр EC2 и дайте ему догнать.

Функция восстановления физической резервной копии MySQL для RDS была объявлена в ноябре 2017 года.

Смотрите также:

Вы должны попробовать его с меньшим экземпляром, чем ваши 30k-базы данных, чтобы вы могли практиковать эти шаги. См. Шаги в блоге Percona, с которым я связан выше.

  • 0
    Я посмотрел на XtraBackup Перконы. (Мне нравится их инструментарий!) Я обнаружил следующие недостатки: 1) он создает список баз данных для резервного копирования, прежде чем что-либо делать, и какая программа может обрабатывать список аргументов длиной 30 КБ? и 2) мы все еще (все еще!) на MySQL 5.5. :-( (Одна из моих работ в этой компании - перетаскивать их, пиная и крича, по крайней мере, в технологии 2010 года.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню