Включает ли mysqldump -all-database все объекты

16

Включает ли mysqldump -all-databasesвсе объекты?

Я должен перенести все базы данных на новый сервер.

Маниш Ишвар
источник

Ответы:

21

Нет mysqldump -all-database не включает все объекты

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

Так что mysqldump с --all-database только сбрасывает все базы данных.

Чтобы перенести все базы данных на новый сервер, вы должны сделать полную резервную копию:

mysqldump весь экземпляр mysql

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

Недостатком является то, что созданные таким образом резервные копии могут быть перезагружены только в ту же основную версию mysql, с которой был создан mysqldump. Другими словами, базы данных mysqldump --all -all из базы данных MySQL 5.0 не могут быть загружены в 5.1 или 5.5. Причина ? Схема mysql полностью отличается между основными выпусками.

Вот общий способ выгрузки SQL-грантов для пользователей, который удобочитаем и более переносим

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql

Посмотрите ответ RolandoMySQLDBA на Как я могу оптимизировать mysqldump для большой базы данных?

Абдул Манаф
источник
1
Вы забыли , --events которые необходимы в дополнение к --routinesи , --triggersи вы также опущено , --single-transactionчтобы избежать блокировки таблиц без необходимости.
Майкл - sqlbot
1
Просто чтобы быть уверенным, что это понятно, --single-transactionне будет создаваться непротиворечивая резервная копия, если во время выполнения резервного копирования будут записаны таблицы MyISAM. Тем не менее, добавление --single-transactionявляется хорошей идеей, если вы используете все InnoDB и хотите избежать блокировки во время выполнения mysqldump.
Джеймс Л