2015-09-24 2 views
1

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

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу сделать mysqldump всех баз данных, процедур, триггеров и т. Д., Кроме баз данных mysql и performance_schema?

+1

http://stackoverflow.com/questions/9497869/export-and-import-all-mysql-databases-at-one-time – Grzegorz

ответ

3

Да, вы можете сбросить несколько схем одновременно:

mysqldump --user=[USER] --password=[PASS] --host=[HOST] --databases mydb1 mydb2 mydb3 [...] --routines > dumpfile.sql 

ИЛИ

mysqldump --user=[USER] --password=[p --host=[HOST] --all-databases --routines > dumpfile.sql 

относительно последней команды, если вы не хотите сбросить performance_schema (EDIT: как уже упоминалось by @Barranka, по умолчанию mysqldump не сбрасывает его), mysql, phpMyAdmin schema и т. д. вам просто нужно убедиться, что [USER] не может получить к ним доступ.

+0

Мне нравится, когда ответы разных пользователей обогащают друг друга – Barranka

+0

точно! это то, что делает stackoverflow для :-) – Basile

2

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

# DATABASES=$(mysql -N -B -e "SHOW DATABASES" | grep -Ev '(mysql|performance_schema)') 
# mysqldump -B $DATABASES 
+0

Вам необходимо добавить флаг '-R', чтобы включить хранимые процедуры в дамп (я узнал, что трудно: S) – Barranka

+0

@Barranka Вы можете добавить намного больше, но OP, похоже, просит пропустить некоторые базы данных. –

2

As stated in the reference manual:

mysqldump не дамп базы данных INFORMATION_SCHEMA или performance_schema по по умолчанию. Чтобы сбрасывать один из них, назовите его явно в командной строке, а также используйте опцию --skip-lock-tables. Вы также можете назвать их опцией --databases.

Так что забота о вашей заботе о сбросе этих баз данных.

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

mysqldump -h Host -u User -pPassword -A -R > very_big_dump.sql 

Чтобы проверить это без сброса всех данных, вы можете добавить -d флаг сваливать только базы данных, таблицы (и обычные) определения без данных.

Как уже упоминалось Базиле в его ответе, самый простой способ опускать базу данных mysql - это вызвать mysqldump с пользователем, у которого нет доступа к нему. Таким образом, строка перфорации: используйте или создайте пользователя, который имеет доступ только к базам данных, которые вы хотите сбросить.

+0

, как вы упомянули, INFORMATION_SCHEMA или performance_schema по умолчанию не будут сброшены, но будет 'mysql'. – Basile

Смежные вопросы