Lokalt till moln: WordPress Migration Full Chain Solutions, Data Backup, Database Restoration, etc.
I. Bakgrund och kärnutmaningar
Migrationsscen
Lokal utvecklingsmiljölocalhost:8081Övrig organisatör 666.comDet handlar om containeriseringsutplacering (Docker) och tvärmiljömigration av databaser.
2. kärnfrågor
- Första sidan hoppar ovanligtBesök
666.comAutojump förlocalhost:8081eftersom databasen innehåller gamla domännamn. - Data konsekvent riskDocker container data backas inte upp och migrationsprocessen kan förlora konfiguration eller plugin data.
II. Analys av grundorsakerna till problemet
- Databas gamla domännamn
wp_optionsBordsiteurlochhomeFältet uppdateras inte.- Artiklar, metadata och sekvenserade data (t.ex. menyer, små verktyg) innehåller kodade gamla adresser.
- Docker Data Management Saknas
- Underlåtenhet att anta en datavolym eller
mysqldumpFullständig säkerhetskopia, direkthanteringsbehållare som resulterar i en oåterkallelig förlust av data.
- Underlåtenhet att anta en datavolym eller
- Server Configuration Interference
- Omdirigeringsregler för den gamla miljön (t.ex.
.htaccessInte cleared.
- Omdirigeringsregler för den gamla miljön (t.ex.
III. Full-chain lösningar
Fas 1: Docker Data Backup och migration
Backup MySQL Database Metod 1: Adoptionmysqldump Exportera SQL-fil
# 导出数据库(容器内操作)
docker exec dockerwordpress-db-1 mysqldump -uroot -p123456 --hex-blob --default-character-set=utf8mb4 wordpress > /tmp/backup.sql
# 复制到宿主机
docker cp dockerwordpress-db-1:/tmp/backup.sql /host/backup.sql
Metod 2: Backup MySQL Data Volym
# 备份数据卷(宿主机操作)
docker run --rm -v mysql_data:/source -v /host/backup:/backup alpine tar czf /backup/mysql_data.tar.gz -C /source .
Importera MySQL-databaser i produktionsmiljön
# 导入 SQL 文件(生产环境容器)
docker cp /host/backup.sql prod-mysql-container:/tmp/backup.sql
docker exec -i prod-mysql-container mysql -uroot -p123456 wordpress < /tmp/backup.sql
# 或从数据卷恢复
docker run --rm -v prod_mysql_data:/target -v /host/backup:/backup alpine tar xzf /backup/mysql_data.tar.gz -C /target
3. Validering av dataintegritet
# 检查关键表数据
docker exec prod-mysql-container mysql -uroot -p123456 -e "USE wordpress; SELECT COUNT(*) FROM wp_posts;"
Fas II: Återställning av domännamnshopp
1. Säkerhetsbytesdatabas gamla domännamn Verktygsval och drift- BetterSearchReplace PluginFrån:
- Fullständig biblioteksersättning
localhost:8081Ja ja ja ja ja666.comJag vet inte. - Storlek Maximal Page för att
500batch bearbetning av stora tabeller.
- Fullständig biblioteksersättning
- Search-Replace-DB kommandorad verktygFrån:
php srdb.cli.php -h localhost -u root -p 123456 -n wordpress -s "localhost:8081" -r "666.com" -g
// 在 wp-config.php 中定义绝对域名
define('WP_HOME', 'https://666.com');
define('WP_SITEURL', 'https://666.com');
3. Rengöring av serverkonfigurationsrester
- Ta bort gammal orienteringsregelFrån:
# .htaccess 中删除旧规则
RewriteRule ^(.*)$ https://localhost:8081/$1 [R=301,L] # 删除此行
Fas III: Certifiering och optimering
- Funktionsautentisering
- Hemsidan Access:
curl -I https://666.comKontrollera statuskod200Inte inte301/302Jag vet inte. - Kontrollerar slumpmässigt om artiklar, sidor, mediefiler URLs pekar på nya domännamn.
- Hemsidan Access:
- Prestanda optimering
- Konfigurera Redis eller Memcached cache databas fråga.
- Användning
docker system pruneKlarar bilden av den ogiltiga behållaren.
Operativa risker och kringgående
| Risk scen | Prestanda | Refusala åtgärder |
|---|---|---|
| Database Permission Conflict | Förpackningsstart misslyckades, log hint nekas | Harmonisera gruppen av användare av datarullarna före backup 999:999(MySQL standard) |
| Sekvenserad dataskada | Sidlayout är förvirrad eller pluginfunktioner är onormala | Användning -g Parametrar för att bearbeta serialiserade data |
| Backup-fil ofullständig | Den importerade klockans struktur saknas | Dubbelbackup (SQL + Datavolym) för att återställa MD5 Hash |
V. Lärdomar och standardiseringsprocesser
Standardiserad migrationsprocess
- Lokal miljöbackupFrån:
# 备份数据库 + 数据卷
docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql
docker volume inspect mysql_data > volume_backup.json - Förkonfiguration av produktionsmiljönFrån:
- Skapar samma version av MySQL-behållaren i förväg, monterar datavolymen.
- Incremental Data SyncFrån:
- Användning
rsyncSyncwp-content/uploads.
- Användning
Exempel på automatiserade skript
#!/bin/bash
# 备份脚本
docker exec mysql-container mysqldump -uroot -p123456 wordpress > /backups/wordpress_$(date +%Y%m%d).sql
tar -czf /backups/mysql_data_$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/mysql_data
# 恢复脚本
docker cp /backups/wordpress_20231001.sql prod-mysql-container:/tmp/
docker exec -i prod-mysql-container mysql -uroot -p123456 wordpress < /tmp/wordpress_20231001.sql
Långvariga övervakningsmekanismer
- Log MonitorFrån:
docker logs -f prod-mysql-container | grep -E "ERROR|WARNING" - HälsokontrollFrån:
curl -s https://666.com/health-check | grep "OK"
VI. Slutvärde
genom denna migrationspraxis, Containerization WordPress 4-stegsmetod.Från:
- Standardiserad backupSQL + Datavolym dubbelförsäkring.
- VerktygsrehabiliteringSäkerhetsersättningsdata i kombination med plugins och kommandoradsverktyg.
- Atom autentiseringFasade checksidor, API, medieresurser.
- Automatiserad övervakningLoggar, hälsokontroller, regelbundna återgångstest.
Detta alternativ kan ge en generisk mall för transport av containeriseringsapplikationer och minska tekniska tröskelvärden till följd av miljöskillnader.