Чи включає mysqldump -all-бази даних усі об'єкти


Відповіді:


21

Жодна mysqldump -all-база даних не включає всі об'єкти

mysqldump --help

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

Отже, mysqldump з --all-базами даних скидає лише всі бази даних.

Щоб перенести всі бази даних на новий сервер, вам слід зробити повну резервну копію:

mysqldump цілий екземпляр mysql

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

Недолік полягає в тому, що створені таким чином резервні копії можуть бути перезавантажені лише в ту саму основну версію випуску mysql, з якою створювався mysqldump. Іншими словами, mysqldump - всі бази даних з бази даних MySQL 5.0 не можуть бути завантажені в 5.1 або 5.5. Причина ? Схема mysql відрізняється між основними версіями.

Ось загальний спосіб скидання SQL Grants для користувачів, який читається та є більш портативним

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запуску.
Джеймс Л
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.