Робота з бекапами SQL, MySQL,MariaDB, mysqldump

Робота з бекапами SQL, MySQL,MariaDB, mysqldump

Створюємо бекап (резервну копію, dump)

Бекап однієї бази DATABASE
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql
або створюємо резервну копію всіх баз даних.
mysqldump -u root -p password --opt >/tmp/alldatabases.sql

Створюємо резервну копію структури бази даніх, без самих даних.
mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/file/schema.sql

Якщо потрібно зробити дамп лише однієї чи кількох таблиць.
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql

Створюємо бекап і одразу його архівуємо.
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Створення бекапа із зазначенням дати створення.
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz` 
 

Відновлення бази даних (або таблиці) із резервної копії

mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql

Заливаємо архів бекапу до бази.
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
або так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
або так
7z x -so /path/to/outputfile.7z | mysql -u USER -pPASSWORD DATABASE

 

Створюємо нову базу даних
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Зручно використовувати бекап з додатковими опціями -Q -c -e, тобто.
mysqldump -Q -c -e -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql, де:

  • -Q - Обертає імена зворотними лапками
  • -c - Робить повну вставку, включаючи імена колонок
  • -e - Робить розширену вставку. Підсумковий файл виходить меншим і робиться він трохи швидше

Для перегляду списку баз даних можна використовувати команду:
mysqlshow -u USER -pPASSWORD

Також можна переглянути список таблиць бази:
mysqlshow -u USER -pPASSWORD DATABASE

Для таблиць InnoDB треба додавати single-transaction, це гарантує цілісність даних бекапа.
Для таблиць MyISAM це актуально, оскільки де вони підтримують транзакционность.