Включает ли mysqldump -all-databases
все объекты?
Я должен перенести все базы данных на новый сервер.
Нет 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 для большой базы данных?
--events
которые необходимы в дополнение к--routines
и ,--triggers
и вы также опущено ,--single-transaction
чтобы избежать блокировки таблиц без необходимости.--single-transaction
не будет создаваться непротиворечивая резервная копия, если во время выполнения резервного копирования будут записаны таблицы MyISAM. Тем не менее, добавление--single-transaction
является хорошей идеей, если вы используете все InnoDB и хотите избежать блокировки во время выполненияmysqldump
.