Репликация AWS — MySQL / MariaDB в процессе обслуживания

#mysql #laravel #amazon-web-services #mariadb #sysadmin

#mysql #laravel #amazon-веб-сервисы #mariadb #системный администратор

Вопрос:

У меня есть база данных MariaDB на RDS (AWS). Нам нужно выполнить некоторое обслуживание, когда необходимо обновить несколько миллионов записей в нескольких таблицах — никаких обновлений структуры, только содержимое.

Мне интересно, какой наилучший способ добиться этого? Мои мысли:

1) Я не хочу прерывать работу пользователя. Таким образом, кажется, что выполнение всей этой обработки на производственных серверах / базах данных является большой проблемой.

2) Из-за вышесказанного имеет смысл сделать снимок рабочей базы данных, а затем запустить этот процесс на отдельном сервере. После завершения я могу экспортировать это как снимок или просто указать производственные серверы на этот экземпляр RDS

3) Наконец, # 2 выше касается меня, потому что, если я сделаю снимок рабочей среды для запуска этих скриптов, мы потеряем всю производительность, которая происходит между моментальным снимком и перенаправлением серверов на обновленную базу данных

Итак, моей последней мыслью было реплицировать производственную базу данных и выполнить производственную запись в обе… Затем запустите сценарии на реплике и укажите производство на реплику, как только процесс завершится.

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

Комментарии:

1. Ты возишься с огнем. Какова природа изменения, которое не может быть выполнено в производственной базе данных из-за проблем с сбоями? Происходят ли эти изменения с таблицами, в которые записывается или только считывается рабочая среда?

2. Он обновляет несколько миллионов записей в 3-5 таблицах на основе данных, извлекаемых из стороннего API. Это происходит с таблицами, в которые выполняется запись и чтение

3. сторонний API, можете ли вы даже запросить этот API достаточно быстро, чтобы это стало проблемой производительности вашей БД?

4. Кажется, я предполагаю, что такая работа нарушит производство. Вы правы, что он может извлекать данные из API только с определенной скоростью. Я просто подумал, что мы вообще не должны замедлять производство. Но если это обычная практика, потенциально запускать это на производстве напрямую (после тестового запуска на этапе подготовки), то это может сработать.

5. После настройки репликации вам нужно записывать только в Мастер.