Дамп/восстановление/просмотр хода выполнения AWS RDS

Бьюсь об заклад, у вас была ситуация, когда вам нужно было сбросить производственную базу данных для какого-то исследования, тестирования или даже разработки.


Не по теме:
Я не буду упоминать здесь о конфиденциальных данных и запутывании данных, поскольку это выходит за рамки этого поста, но просто хотел напомнить вам, что вы имеете дело с данными реальных людей и должны помнить о некоторых правилах, таких как GDPR, или быть осторожным. не отправлять электронные письма реальным пользователям, если вы тестируете свои приложения с использованием рабочей БД.
В любом случае полезно заменить конфиденциальные данные реальных пользователей некоторыми фиктивными значениями.


Обычно производственная база данных защищена в AWS VPC (виртуальное частное облако), и никто не сможет подключиться напрямую без VPN. Часто бывает так, что БД доступна только с сервера внутри VPC, который служит сервером-бастионом, так что вы можете получить доступ к другим серверам внутри VPC с этого сервера, но не с общедоступного.

Ниже приведены несколько советов, которые могут оказаться полезными в таких обстоятельствах:

  • Скопируйте файл MySQL из базы данных RDS прямо на свой локальный хост.
    Это означает, что вам не нужно создавать дамп файла на «бастионном» сервере, а затем копировать его на свой локальный сервер, потому что вы можете создать дамп прямо на своем локальном сервере.
ssh -i ssh_key.pem ec2-user@bastion.host  \
mysqldump -P 3306 -h rds.host -u dbuser --password=dbpassword dbname > dumpfile

Эта команда отправит ssh на сервер бастиона и выполнит mysqldump команда там, но результат перенаправляется в ваш файл localhost dumpfile.

  • Если у вас недостаточно смелости, чтобы выгружать БД из командной строки, и вы предпочитаете использовать некоторые графические инструменты, такие как Продолжение Про вы все еще можете сделать это, используя обратный ssh-туннель.
    Это означает, что вы сопоставите удаленный порт вашего хоста RDS с портом локального хоста, и сервер-бастион будет использоваться для туннелирования трафика.
ssh -i ssh_key.pem -N -L LOCAL_PORT:rds.host:RDS_PORT ec2-user@bastion.host

Когда он запустится, вы сможете подключиться к своему любимому клиенту, например:

Пример конфигурации подключения из Sequel Pro

  • Если вы сбрасываете или восстанавливаете большие БД, может быть сложно увидеть прогресс. Обычно команда выглядит как зависание, например, для восстановления:
mysql -P DB_PORT -u dbuser --password=dbpassword  dbname < dumpfile

В системах *nix есть хороший, но не очень известный инструмент, который называется Просмотр каналов с помощью которого вы можете отслеживать прогресс.

— для дампа:

mysqldump -P 3306 -h rds.host -u dbuser --password=dbpassword dbname | pv -W > dumpfile

— для восстановления:

pv dumpfile | mysql -P DB_PORT -h db.host -u dbuser --password=dbpassword  dbname

Затем вы видите хороший индикатор выполнения от Pipe Viewer:

Pipe Viewer в действии


Спасибо за чтение!

Вы можете связаться со мной по Твиттер или подпишитесь на мою рассылку. Я буду время от времени информировать вас о своих последних работах.

Подписывайся

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *