Привет сообщество!
Сегодня бы хотелось рассказать и показать создание копии RDS инстанса только для чтения. Для многих не секрет, что при работе с высоконагруженными проектами создаются решения, когда пишется информация только в одно место, ну а читать её можно из многих источников.
AWS RDS MySQL предлагает такое решение, так сказать, «из коробки». В консоли или через CLI (API) вам предлагается создать реплику. Что же происходит «под капотом»?
- Создаётся образ существующего сервера. Эта операция может повлиять на I/O, как вы понимаете. Не стоит делать образ в загруженные часы.
- Из образа стартует новый инстанс, который конфигурится и становится репликой в режиме «только чтение» — RO.
Разрешено создавать до 5 реплик с одного сервера. Реплики, так же как и главный инстанс, могут быть созданы при помощи MultiAZ деплоймента для увеличения отказоустойчивости. В таком случае, при отказе реплики, RDS Endpoint автоматически переключается на клон инстанса в другой зоне.
Выходит, что мы можем хранить до 12 копий данных в пределах одного региона, но использовать 1 сервер для операций чтения/записи и до 5 только для чтения. Почему я отметил, что данные могут храниться в пределах региона? Потому что реплики нельзя создавать в других регионах.
Реплики могут быть разных типов с главным сервером. Стоит отметить, что сторадж для БД стоит держать одного размера, чтоб не было проблем с переполнением диска. Если увеличили диск на главном, стоит проделать те же действия на репликах.
Итак, как же мы можем создать реплику из CLI? Всё очень просто:
$ aws rds create-db-instance-read-replica --availability-zone us-east-1d --source-db-instance-identifier main --db-instance-identifier second
Здесь мы создаём новую реплику в зоне US-EAST-1D с сервера main. Имя реплики будет second.
В веб консоли всё выглядит тоже просто:
Жмём Create Read Replica и видим:
В последствии у нас будет 3 сервера в разных зонах доступности:
Дополнительные материалы про Read Replica:
aws.amazon.com/rds/
docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html
www.mysqlperformanceblog.com/2012/12/20/how-to-stop-slave-on-amazon-rds-read-replica/
Автор: korjik