понедельник, 28 октября 2013 г.

Массовое удаление таблиц из Amazon RDS mysql

Чем дальше, тем больше мне нравятся сервисы Amazon-а.

И хотя, я чаще их для целей разработки использую, чем для production, тем не менее.

Ну вот например типовая задача, есть в наличии слабенький ноут, у которого хочется поберечь батарейку, и набор небольших баз mysql меньше гига, на которых хочется погонять кучу запросов.

Конечно amazon rds тут просто отличное решение.

Но вот с какой мелочью я столкнулся.

Иногда, мне нужно "сменить" базу на другую.

Так как в rds вы не можете сделать drop/create database, то это либо пересоздание rds instance - что не особенно мне нравится, либо drop tables * , который к сожалению или счастью не работает с globs.

Поэтому я использую вот такой смешной скриптик:
mysql  -BNe "show tables" mydb | tr '\n' ',' | sed -e 's/,$//' | awk '{print "SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS " $1 ";SET FOREIGN_KEY_CHECKS = 1;"}' | mysql mydb

Конечно, реквизиты доступа прописаны у меня в .my.cnf



[client]
database       = mydb
host     = mydb.cr......rds.amazonaws.com
user     = master
password = asdkfas21131