Чи 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щоб уникнути блокування таблиць без необхідності.