Чи mysqldump -all-databases
включають усі об'єкти?
Я повинен перенести всі бази даних на новий сервер.
Чи mysqldump -all-databases
включають усі об'єкти?
Я повинен перенести всі бази даних на новий сервер.
Відповіді:
Жодна 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 великої бази даних?
--single-transaction
не створюватиметься послідовного резервного копіювання, якщо під час запуску резервної копії записуються таблиці MyISAM. Однак додавання --single-transaction
- це гарна ідея, якщо ви використовуєте всі InnoDB і хочете уникнути блокування під час mysqldump
запуску.
--events
які необхідні на додаток до--routines
і ,--triggers
і ви також опущено ,--single-transaction
щоб уникнути блокування таблиць без необхідності.