ΠΠΌΠΏΠΎΡΡ ΠΈ ΡΠΊΡΠΏΠΎΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ MySQL Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈ ΡΠΊΡΠΏΠΎΡΡΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ MySQL ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ β ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π½Π°Π²ΡΠΊ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ backend-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°. Π£ΡΠΈΠ»ΠΈΡΠ° `mysqldump` ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΉ ΡΠ°ΠΉΠ» `.sql`, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ DDL ΠΈ DML ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ ΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° `mysql` Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ MySQL.
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ: ΡΠΊΡΠΏΠΎΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Π΄Π°ΠΌΠΏΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΆΠ°ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° β Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΡΠ°ΠΉΠ½ΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠΊΡΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΌΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄Π°Ρ .
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ:
- MySQL Server (5.7, 8.0 ΠΈΠ»ΠΈ 8.4) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ `mysqld` Π·Π°ΠΏΡΡΠ΅Π½
- ΠΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ `mysqldump` ΠΈ `mysql` Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ `PATH` (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ `which mysqldump`)
- Π£ Π²Π°Ρ Π΅ΡΡΡ ΡΡΡΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ MySQL ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ `SELECT`, `LOCK TABLES`, `SHOW VIEW` ΠΈ `TRIGGER` Π΄Π»Ρ ΡΠΊΡΠΏΠΎΡΡΠ°; `CREATE`, `INSERT`, `ALTER` ΠΈ `DROP` Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ°
- ΠΠ° ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅ β ΡΠΆΠ°ΡΡΠΉ Π΄Π°ΠΌΠΏ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡΡ Π² 5β10 ΡΠ°Π· ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅
- Π£ Π²Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», SSH ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΡΠ΅Π΄Π° VPS Π₯ΠΎΡΡΠΈΠ½Π³Π°)
ΠΠΊΡΠΏΠΎΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mysqldump
`mysqldump` β ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ MySQL. ΠΠ½ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΡΠΈΡΠ°Π΅ΠΌΡΠΉ SQL-ΡΠΊΡΠΈΠΏΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Percona XtraBackup, `mysqldump` Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄Π²ΠΈΠΆΠΊΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ MySQL ΠΈ Π΄Π°ΠΆΠ΅ Π² ΡΠΎΡΠΊΠ°Ρ MariaDB.
1. ΠΠΊΡΠΏΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
β`bash
mysqldump -u [username] -p [database_name] > [filename].sql
β`
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
- `-u [username]` β ΡΡΡΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ MySQL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
- `-p` β Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π²ΠΎΠ΄ ΠΏΠ°ΡΠΎΠ»Ρ (Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΡΡΡΠΎΠΊΠ΅ ΠΊΠ°ΠΊ `-p[password]` Π½Π° ΠΎΠ±ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ; ΠΎΠ½ Π²ΠΈΠ΄Π΅Π½ Π² Π²ΡΠ²ΠΎΠ΄Π΅ `ps aux`)
- `[database_name]` β ΡΠ΅Π»Π΅Π²Π°Ρ ΡΡ Π΅ΠΌΠ° Π΄Π»Ρ ΡΠΊΡΠΏΠΎΡΡΠ°
- `> [filename].sql` β ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ stdout Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»
ΠΡΠΈΠΌΠ΅Ρ:
β`bash
mysqldump -u root -p mydatabase > mydatabase_backup.sql
β`
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ `CREATE TABLE`, `INSERT` ΠΈ `ALTER TABLE`, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ Π΄Π»Ρ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½ΠΈΡ `mydatabase` Ρ Π½ΡΠ»Ρ.
ΠΠ°ΠΆΠ½ΡΠΉ ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ: ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `mysqldump` ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅Π½ΠΈΡ (`FLUSH TABLES WITH READ LOCK`) Π² Π½Π°ΡΠ°Π»Π΅ Π΄Π°ΠΌΠΏΠ°. ΠΠ° Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ InnoDB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ `βsingle-transaction` Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΌΠΊΠ° Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ:
β`bash
mysqldump -u root -p βsingle-transaction mydatabase > mydatabase_backup.sql
β`
`βsingle-transaction` Π½Π°Π΄ΡΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ InnoDB. ΠΡΠ»ΠΈ Π²Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ MyISAM, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Π°.
2. ΠΠΊΡΠΏΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ
β`bash
mysqldump -u [username] -p βdatabases db1 db2 > multiple_databases_backup.sql
β`
Π€Π»Π°Π³ `βdatabases` ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ `mysqldump` Π²ΠΊΠ»ΡΡΠΈΡΡ Π² Π²ΡΠ²ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ `CREATE DATABASE` ΠΈ `USE`, Π΄Π΅Π»Π°Ρ Π΄Π°ΠΌΠΏ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ. ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ ΡΠ»Π°Π³Π° Π΄Π°Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, ΠΈ Π΄Π°ΠΌΠΏ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅Π»Π΅Π²Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΠΆΠ΅ Π²ΡΠ±ΡΠ°Π½Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
β`bash
mysqldump -u root -p βdatabases db1 db2 > multiple_databases_backup.sql
β`
3. ΠΠΊΡΠΏΠΎΡΡ Π²ΡΠ΅Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ
β`bash
mysqldump -u root -p βall-databases > all_databases_backup.sql
β`
ΠΡΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΡ Π΅ΠΌΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ `mysql`, `information_schema` ΠΈ `performance_schema`. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ MySQL β ΡΡ Π΅ΠΌΠ° ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ MySQL 5.7 ΠΈ 8.0, ΠΈ ΠΈΠΌΠΏΠΎΡΡ ΡΡΠ°ΡΠΎΠΉ ΡΡ Π΅ΠΌΡ `mysql` Π² Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ 8.0 ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡ Π΅ΠΌΡ:
β`bash
mysqldump -u root -p βall-databases
βignore-table=mysql.user
βignore-table=mysql.db
> all_user_databases_backup.sql
β`
4. ΠΠΊΡΠΏΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡ (Π±Π΅Π· Π΄Π°Π½Π½ΡΡ )
β`bash
mysqldump -u root -p βno-data mydatabase > structure_only.sql
β`
ΠΡΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΡΡ Π΅ΠΌΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΡΡΠΎΠΉ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Ρ. ΠΡΠ²ΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ DDL-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ `CREATE TABLE`, `CREATE VIEW`, `CREATE PROCEDURE` ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ β Π±Π΅Π· ΡΡΡΠΎΠΊ `INSERT`.
5. ΠΠΊΡΠΏΠΎΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ
β`bash
mysqldump -u root -p mydatabase table1 table2 > tables_backup.sql
β`
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ `mysqldump` Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ `CREATE DATABASE` ΠΈΠ»ΠΈ `USE`. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ΅Π»Π΅Π²Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ.
6. ΠΠΊΡΠΏΠΎΡΡ Ρ Ρ ΡΠ°Π½ΠΈΠΌΡΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ, ΡΡΠΈΠ³Π³Π΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `mysqldump` Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠΈΠ³Π³Π΅ΡΡ, Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
β`bash
mysqldump -u root -p
βroutines
βtriggers
βevents
βsingle-transaction
mydatabase > full_backup.sql
β`
ΠΠ°Π±ΡΡΡ `βroutines` β ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: ΡΡ Π΅ΠΌΠ° ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ, Π½ΠΎ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
7. Π‘ΠΆΠ°ΡΡΠΉ ΡΠΊΡΠΏΠΎΡΡ
ΠΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π²ΡΠ²ΠΎΠ΄ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· `gzip` Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° Π½Π° 60β80%:
β`bash
mysqldump -u root -p mydatabase | gzip > mydatabase_backup.sql.gz
β`
ΠΠ»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΆΠ°ΡΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ (Π·Π° ΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ CPU):
β`bash
mysqldump -u root -p mydatabase | gzip -9 > mydatabase_backup.sql.gz
β`
ΠΠΌΠΏΠΎΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° mysql
ΠΠ»ΠΈΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ `mysql` ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ SQL-ΡΠ°ΠΉΠ» ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ stdin ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅.
1. ΠΠΌΠΏΠΎΡΡ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
β`bash
mysql -u [username] -p [database_name] < [filename].sql
β`
ΠΡΠΈΠΌΠ΅Ρ:
β`bash
mysql -u root -p mydatabase < mydatabase_backup.sql
β`
ΠΠ°ΠΆΠ½ΠΎ: ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» `.sql` Π±ΡΠ» ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ Ρ `βdatabases` ΠΈΠ»ΠΈ `βall-databases`, ΠΎΠ½ ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ `CREATE DATABASE` ΠΈ `USE`. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΈΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ β ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ:
β`bash
mysql -u root -p < all_databases_backup.sql
β`
2. ΠΠΌΠΏΠΎΡΡ Π² Π½ΠΎΠ²ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π¦Π΅Π»Π΅Π²Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² Π½Π΅Ρ ΠΈΠΌΠΏΠΎΡΡ. MySQL Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ· ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° ΡΠ°Π±Π»ΠΈΡ.
Π¨Π°Π³ 1 β Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
β`bash
mysql -u root -p -e "CREATE DATABASE newdatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
β`
Π¨Π°Π³ 2 β ΠΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π΄Π°ΠΌΠΏ:
β`bash
mysql -u root -p newdatabase < mydatabase_backup.sql
β`
ΠΡΠ΅Π³Π΄Π° ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β ΡΠ°ΡΡΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ `character_set_server`.
3. ΠΠΌΠΏΠΎΡΡ ΡΠΆΠ°ΡΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ°
β`bash
gunzip < mydatabase_backup.sql.gz | mysql -u root -p mydatabase
β`
ΠΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ `zcat` (ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Linux):
β`bash
zcat mydatabase_backup.sql.gz | mysql -u root -p mydatabase
β`
4. ΠΠΌΠΏΠΎΡΡ Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°ΠΌΠΏΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ `mysql` Π½Π΅ Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `pv` (pipe viewer) Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ:
β`bash
pv mydatabase_backup.sql | mysql -u root -p mydatabase
β`
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ `pv` Ρ ΠΏΠΎΠΌΠΎΡΡΡ `apt install pv` ΠΈΠ»ΠΈ `yum install pv`. ΠΠ° ΠΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π‘Π΅ΡΠ²Π΅ΡΠ΅, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΈΠ³Π°Π±Π°ΠΉΡΠ½ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΡΠ° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Π° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ.
mysqldump Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
| Π€ΡΠ½ΠΊΡΠΈΡ | mysqldump | mysqlpump | MySQL Shell (util.dumpInstance) | Percona XtraBackup |
|---|---|---|---|---|
| Π’ΠΈΠΏ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ (SQL) | ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ (SQL) | ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ (JSON/SQL) | Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ (Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ΅) |
| ΠΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ | ΠΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ | ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ | ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ | ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ |
| ΠΠΎΡΡΡΠ΅Π΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ InnoDB | Π‘ `βsingle-transaction` | Π‘ `βsingle-transaction` | ΠΠ° | ΠΠ° |
| Π€ΠΎΡΠΌΠ°Ρ Π²ΡΠ²ΠΎΠ΄Π° | ΠΠ±ΡΡΠ½ΡΠΉ SQL | ΠΠ±ΡΡΠ½ΡΠΉ SQL | Π€ΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ | ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ InnoDB |
| Π‘ΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ | ΠΠ΅Π΄Π»Π΅Π½Π½Π°Ρ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ SQL) | Π£ΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ | ΠΡΡΡΡΠ°Ρ | ΠΡΠ΅Π½Ρ Π±ΡΡΡΡΠ°Ρ |
| ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ | ΠΡΠ»ΠΈΡΠ½Π°Ρ | Π₯ΠΎΡΠΎΡΠ°Ρ | Π₯ΠΎΡΠΎΡΠ°Ρ | Π’ΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ |
| ΠΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² MySQL | ΠΠ° | ΠΠ° (5.7.8+) | ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° | Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ |
| ΠΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ | ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ, ΠΌΠ°Π»ΡΠ΅ ΠΈ ΡΡΠ΅Π΄Π½ΠΈΠ΅ ΠΠ | ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π΄Π°ΠΌΠΏΡ | ΠΠ±Π»Π°ΡΠ½ΡΠ΅/ΠΊΡΡΠΏΠ½ΡΠ΅ ΡΡ Π΅ΠΌΡ | ΠΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΠ |
ΠΠ»Ρ ΡΡΠ΅Π΄, Π³Π΄Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌ VPS Ρ cPanel, `mysqldump` ΠΎΡΡΠ°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ΅.
Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ
ΠΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ
ΠΠ΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π½Π΅ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄ΠΎΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄ΡΠ½Π½ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ². ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅:
β`bash
mysqldump -u root -p
βdefault-character-set=utf8mb4
mydatabase > mydatabase_backup.sql
β`
β`bash
mysql -u root -p
βdefault-character-set=utf8mb4
mydatabase < mydatabase_backup.sql
β`
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: `utf8` Π² MySQL β ΡΡΠΎ 3-Π±Π°ΠΉΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ 4-Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Unicode (ΡΠΌΠΎΠ΄Π·ΠΈ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΅ΡΠΎΠ³Π»ΠΈΡΡ CJK). ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `utf8mb4` Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΡΠΏΠ½ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ²
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ MySQL Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° `INSERT` Π² Π΄Π°ΠΌΠΏΠ΅. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΡΠΎ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² Π½Π°ΡΠ°Π»ΠΎ Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°:
β`bash
mysql -u root -p mydatabase <<EOF
SET foreign_key_checks = 0;
SET unique_checks = 0;
SET autocommit = 0;
SOURCE /path/to/mydatabase_backup.sql;
COMMIT;
SET foreign_key_checks = 1;
SET unique_checks = 1;
EOF
β`
ΠΠΈΠ±ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Ρ `βextended-insert` (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΈ `βdisable-keys` Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Cron
ΠΠ°ΠΏΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π² `/etc/cron.d/mysql-backup`:
β`bash
0 2 * * * root mysqldump -u backup_user -p'StrongPass'
βsingle-transaction βroutines βtriggers βevents
mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz
β`
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ MySQL Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ `root`. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
β`sql
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'StrongPass';
GRANT SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, EVENT ON *.* TO 'backup_user'@'localhost';
FLUSH PRIVILEGES;
β`
ΠΠ°ΡΠΈΡΠ° ΡΡΡΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ .my.cnf
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΈΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². Π₯ΡΠ°Π½ΠΈΡΠ΅ ΡΡΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² `~/.my.cnf`:
β`ini
[client]
user=root
password=YourSecurePassword
β`
ΠΠ΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°:
β`bash
chmod 600 ~/.my.cnf
β`
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `mysqldump` ΠΈ `mysql` Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· ΡΠ»Π°Π³ΠΎΠ² `-u` ΠΈ `-p`.
ΠΠΊΡΠΏΠΎΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π°ΠΌΠΏΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° MySQL:
β`bash
mysqldump -h remote.server.com -P 3306 -u remoteuser -p remotedatabase > remote_backup.sql
β`
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ MySQL ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Ρ Π²Π°ΡΠ΅Π³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΡΡΠΎ ΠΏΠΎΡΡ 3306 ΠΎΡΠΊΡΡΡ Π² Π±ΡΠ°Π½Π΄ΠΌΠ°ΡΡΡΠ΅. ΠΠ»Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½Π½Π΅Π»Ρ ΡΠ΅ΡΠ΅Π· SSH:
β`bash
ssh -L 3307:127.0.0.1:3306 user@remote.server.com -N &
mysqldump -h 127.0.0.1 -P 3307 -u remoteuser -p remotedatabase > remote_backup.sql
β`
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ
| Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° | |||
|---|---|---|---|---|
| ΠΠΎΠ»Π½ΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎΠ»ΡΠΊΠΎ InnoDB, Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΡ | `mysqldump βsingle-transaction βroutines βtriggers βevents` | |||
| ΠΠΈΠ³ΡΠ°ΡΠΈΡ ΡΡ Π΅ΠΌΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ | `mysqldump βno-data` + ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΠ + ΠΈΠΌΠΏΠΎΡΡ | |||
| ΠΠ΅ΡΠ΅Π½ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ | `mysqldump db | gzip | ssh user@dest "gunzip | mysql db"` |
| Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΊΠ»ΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡ Π΅ΠΌΡ | `βall-databases` + `βignore-table` Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ | |||
| ΠΡΡΡΡΠΎΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° | ΠΡΠΊΠ»ΡΡΠΈΡΡ `foreign_key_checks`, `unique_checks`, `autocommit` | |||
| ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π½ΠΎΡΠ½ΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ | Cron + Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ + ΡΡΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ `.my.cnf` | |||
| ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ | ΠΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΡΡΠΎΠ²ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ `SHOW TABLE STATUS` |
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ
- ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `βsingle-transaction` Π΄Π»Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ InnoDB, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΊΡΠΏΠΎΡΡΠ°
- ΠΡΠ΅Π³Π΄Π° ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ `utf8mb4` β Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
- ΠΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ `βroutines`, `βtriggers` ΠΈ `βevents` Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ½Π°ΡΠ΅ Π²Ρ ΡΠΈΡΠΊΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ
- ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΡ Π΅ΠΌ (`mysql.*`) ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ MySQL
- Π₯ΡΠ°Π½ΠΈΡΠ΅ ΡΡΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² `~/.my.cnf` Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ `chmod 600` β Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
- ΠΠ»Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠΌΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ 10 ΠΠ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ `mysqlpump` ΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° MySQL Shell, ΡΠ°ΠΊ ΠΊΠ°ΠΊ `mysqldump` ΡΡΠ°Π½Π΅Ρ ΡΠ·ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ
- ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π½Π΅Ρ Π΄Π»Ρ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
- ΠΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ»ΠΈΡΡΠΉΡΠ΅ ΡΡΠ΅Π΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΠ°Π½Π΅Π»Π΅ΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ VPS, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΌΠ΅ΠΆΠ°ΡΠ΅Π½Π΄Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
- ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌ SSL-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ Π½Π° Π»ΡΠ±ΠΎΠΌ Π²Π΅Π±-ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΌΡΡ ΠΊ MySQL, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΡΡΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅
Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
Π ΡΡΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ mysqldump ΠΈ mysqlpump?
`mysqldump` ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½ SQL-ΡΠ°ΠΉΠ» β Π½Π°Π΄ΡΠΆΠ½ΡΠΉ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ. `mysqlpump`, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² MySQL 5.7.8, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠΊΡΠΏΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π±Π»ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Ρ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π°ΠΌΠΏΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ `mysqlpump` ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΡΠΎ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΌΠΈ Π΄Π²ΠΈΠΆΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΠΌΠΏ MySQL 5.7 Π² MySQL 8.0?
ΠΠ°, Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠ°ΠΌΠΈ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΡ Π΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ `mysql` Π½Π°ΠΏΡΡΠΌΡΡ β ΠΏΠ»Π°Π³ΠΈΠ½ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ Ρ `mysql_native_password` Π½Π° `caching_sha2_password` Π² Π²Π΅ΡΡΠΈΠΈ 8.0, ΠΈ ΠΈΠΌΠΏΠΎΡΡ ΡΡΠ°ΡΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π½Π°ΡΡΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠΎΡΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²ΡΡΡΠ½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² `CREATE USER` ΠΈ `GRANT`.
ΠΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Β«ERROR 1005: Canβt create tableΒ» ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ?
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π½Π°ΡΡΡΠ°ΡΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ `SET foreign_key_checks = 0;` Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅ΡΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈ `SET foreign_key_checks = 1;` ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. ΠΠΈΠ±ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Ρ `βsingle-transaction`, ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π΄Π°ΠΌΠΏΠ°.
ΠΠ°ΠΊ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² CREATE TABLE?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π°Π³ `βno-create-info`: `mysqldump -u root -p βno-create-info mydatabase > data_only.sql`. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ°ΠΊΠΎΠ² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°ΠΌΠΏΠ° MySQL ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ?
ΠΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄Π°ΠΌΠΏ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· SSH Π±Π΅Π· Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π° Π΄ΠΈΡΠΊ: `mysqldump -u root -p sourcedb | ssh user@destination.server "mysql -u root -p targetdb"`. ΠΡΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° `.sql`, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΡΠ΅Π΄Π΅ ΠΠ±ΡΠ΅Π³ΠΎ ΠΠ΅Π±-Ρ ΠΎΡΡΠΈΠ½Π³Π°, Π³Π΄Π΅ ΠΊΠ²ΠΎΡΡ Π½Π° Π΄ΠΈΡΠΊ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ.
Π½Π° Π²ΡΠ΅Ρ
Ρ
ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΡΡ
ΡΡΠ»ΡΠ³Π°Ρ