Lokalne do chmury: WordPress Migration Full Chain Solutions, Backup danych, Przywracanie bazy danych, itp.
I. Kontekst i główne wyzwania
1. Scena migracji
Środowisko rozwoju lokalnegolocalhost:8081Inny organizator 666.comObejmuje to wdrożenie kontenerowania (Docker) oraz migrację międzyśrodowiskową baz danych.
2. Podstawowe kwestie
- Pierwsza strona skoki nietypowe: wizyty
666.comAutoskop dolocalhost:8081ponieważ baza danych zawiera stare nazwy domen. - Ryzyko spójności danych: Docker dane kontenera nie są kopii zapasowej, a proces migracji może stracić konfigurację lub dane wtyczki.
II. Analiza przyczyn problemu
- Database Old Domain name
wp_optionsTabelasiteurlorazhomepole nie jest aktualizowane.- Artykuły, metadane i dane sekwencjonowane (np. menu, małe narzędzia) zawierają zakodowane na stałe stare adresy.
- Brak zarządzania danymi dokerów
- Nieprzyjęcie wolumenu danych lub
mysqldumpKompletna kopia zapasowa, pojemniki do bezpośredniego przerobu skutkujące nieodwracalną utratą danych.
- Nieprzyjęcie wolumenu danych lub
- Interferencja konfiguracji serwera
- Przepisy dotyczące zmiany dyrektywy w starym środowisku (np.
.htaccessNie oczyszczone.
- Przepisy dotyczące zmiany dyrektywy w starym środowisku (np.
III. Kompletne rozwiązania łańcuchowe
Etap 1: Backup danych dokerów i migracja
1. Backup bazy danych MySQL Metoda 1: Przyjęciemysqldump Eksportuj plik SQL
# 导出数据库(容器内操作)
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
Metoda 2: Backup MySQL Data Volume
# 备份数据卷(宿主机操作)
docker run --rm -v mysql_data:/source -v /host/backup:/backup alpine tar czf /backup/mysql_data.tar.gz -C /source .
2. Importuj bazy danych MySQL do środowiska produkcyjnego
# 导入 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. Walidacja integralności danych
# 检查关键表数据
docker exec prod-mysql-container mysql -uroot -p123456 -e "USE wordpress; SELECT COUNT(*) FROM wp_posts;"
Faza II: odtworzenie skoków nazw domen
1. Baza danych wymiany zabezpieczeń starych nazw domen Wybór i działanie narzędzia- Wtyczka BetterSearchReplace:
- Pełna wymiana biblioteki
localhost:8081Tak.666.comNie wiem. - Zmień maksymalną stronę na
500, przetwarzanie partii dużych stołów.
- Pełna wymiana biblioteki
- Narzędzie linii poleceń Search- Replace- DB:
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. Oczyszczanie pozostałości konfiguracji serwera
- Usuń starą zasadę orientacji:
# .htaccess 中删除旧规则
RewriteRule ^(.*)$ https://localhost:8081/$1 [R=301,L] # 删除此行
Etap III: Certyfikacja i optymalizacja
- Funkcja Uwierzytelnianie
- Dostęp na stronie głównej:
curl -I https://666.comSprawdź kod statusu200Nie301/302Nie wiem. - Sprawdza losowo, czy artykuły, strony, pliki multimedialne URL wskazują na nowe nazwy domen.
- Dostęp na stronie głównej:
- Optymalizacja wydajności
- Konfiguracja zapytania bazy danych Redis lub Memcached cache.
- Stosowanie
docker system pruneOczyszcza obraz nieprawidłowego pojemnika.
Ryzyko operacyjne i obchodzenie środków
| Scena ryzyka | Wydajność | Środki odmowy |
|---|---|---|
| Konflikt praw dostępu do bazy danych | Pakowanie nie powiodło się, podpowiedź logu odrzucona | Harmonizacja grupy użytkowników zwojów danych przed backup 999:999(Domyślny MySQL) |
| Uszkodzenie oddzielonych danych | Układ strony jest mylony lub funkcje wtyczki są nieprawidłowe | Stosowanie -g Parametry przetwarzania danych seryjnych |
| Plik kopii zapasowej niekompletny | Brakuje struktury importowanego zegarka | Podwójne kopia zapasowa (SQL + Data Volume) do przywrócenia MD5 Hash |
V. Wnioski i procesy standaryzacji
1. Znormalizowany proces migracji
- Lokalne wsparcie środowiska:
# 备份数据库 + 数据卷
docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql
docker volume inspect mysql_data > volume_backup.json - Konfiguracja wstępna środowiska produkcyjnego:
- Tworzy tę samą wersję kontenera MySQL z wyprzedzeniem, montuje wolumin danych.
- Synchronizacja danych przyrostowych:
- Stosowanie
rsyncSyncwp-content/uploads.
- Stosowanie
2. Przykład automatycznych skryptów
#!/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
Długotrwałe mechanizmy monitorowania
- Monitor dziennika:
docker logs -f prod-mysql-container | grep -E "ERROR|WARNING" - Kontrola zdrowia:
curl -s https://666.com/health-check | grep "OK"
VI. Wartość końcowa
Dzięki tej praktyce migracyjnej, "Containerization WordPress 4- step method".:
- Standardowe kopie zapasowe: SQL + Podwójne ubezpieczenie woluminu danych.
- Rehabilitacja narzędzi: Dane zastępcze bezpieczeństwa w połączeniu z wtyczkami i narzędziami linii poleceń.
- Autoryzacja atomowaStopniowe sprawdzanie stron, API, media.
- Automatyczne monitorowanieLogi, kontrole zdrowia, regularne testy zwrotne.
Wariant ten mógłby stanowić ogólny wzór dla transportu zastosowań kontenerowych i zmniejszyć progi techniczne wynikające z różnic środowiskowych.