DB miqrasiyası WordPress, Laravel, custom tətbiq - hər şeyin əsasıdır. mysqldump klassik üsuldur, lakin böyük DB-lər üçün xüsusi yanaşmalar var.
Sadə mysqldump
Bir DB
mysqldump -u root -p database_name > backup.sqlBütün DB-lər
mysqldump -u root -p --all-databases > all-backup.sqlSıxılma
mysqldump -u root -p db | gzip > backup.sql.gzRestore
SQL faylı
mysql -u root -p database_name < backup.sqlSıxılmış
gunzip < backup.sql.gz | mysql -u root -p dbCədvəl strukturu yalnız
mysqldump --no-data db > schema.sqlData yalnız
mysqldump --no-create-info db > data.sqlMüəyyən cədvəllər
mysqldump db table1 table2 > tables.sqlphpMyAdmin ilə
Export
- Database seçin
- "Export" tab
- "Custom" - format SQL, compression gzip
- "Go" - fayl endirilir
Import
- Database seçin
- "Import" tab
- SQL faylı seçin
- "Go"
Limit
phpMyAdmin upload limit-i 50 MB - böyük DB üçün mysqldump istifadə edin.
Böyük DB miqrasiyası
SSH üzərindən birbaşa
mysqldump db | ssh user@new-server "mysql new_db"Heç bir intermediate fayl - DB birbaşa köçür.
Compression
mysqldump db | gzip | ssh user@new "gunzip | mysql new_db"InnoDB böyük cədvəllər
--single-transaction
Cədvəlləri kilidləməz - production-da sayt işləməyə davam edir.
mysqldump --single-transaction db > backup.sqlMaster-slave replication
0 downtime miqrasiya
Yeni serveri köhnəyə slave et - data sürətlə replicate olunur. DNS dəyişəndə yeni master olur.
WordPress DB miqrasiya
WP-CLI export
wp db export backup.sqlYeni serverdə import
wp db import backup.sqlURL dəyişikliyi
wp search-replace "http://old.com" "https://new.com"Charset problemləri
utf8 vs utf8mb4
Köhnə MySQL utf8 (3-byte) - emoji-ləri qəbul etmir. Yeni serverdə utf8mb4 (4-byte) istifadə edin.
Konversiya
ALTER DATABASE db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Foreign key constraints
Import zamanı pozulur
Constraint-ləri müvəqqəti söndürün:
SET FOREIGN_KEY_CHECKS = 0;
-- import
SET FOREIGN_KEY_CHECKS = 1;Backup test etmək
Yeni DB-yə restore
Backup-ı yeni adlı DB-yə restore edin, cədvəllər var, data düzgün - production-a tətbiq edin.
Şifrə backup
Plain text-də şifrələr
SQL faylda DB istifadəçi şifrələri açıq mətndədir - faylı təhlükəsiz saxlayın.
Automated daily backup
#!/bin/bash
DATE=$(date +%F)
mysqldump --all-databases | gzip > /backup/mysql-$DATE.sql.gz
find /backup -name "mysql-*.sql.gz" -mtime +7 -deleteCloud DB sync
rclone + B2
rclone sync /backup b2:db-backupsHostinq.az MySQL backup
Hostinq.az-da MySQL avtomatik gündəlik backup götürülür - 7 gün retention. JetBackup ilə bir kliklə restore.
Hostinq.az hosting - DB miqrasiya pulsuz xidmət.