클라우드 현지 : WordPress 마이그레이션 전체 체인 솔루션, 데이터 백업, 데이터베이스 복원 등
I. 배경과 핵심 과제
1. 마이그레이션 장면
지역 개발 환경localhost:8081다른 Organiser 666.com이것은 컨테이너화 배포 (Docker) 및 데이터베이스의 교차 환경 마이그레이션을 포함한다.
2. 핵심 문제
- 첫 페이지 점프 Unusual: 방문
666.comAutojump로localhost:8081데이터베이스가 오래된 도메인 이름을 포함했기 때문에. - 데이터 일관성 위험: Docker 컨테이너 데이터가 백업되지 않으며 마이그레이션 프로세스는 구성 또는 플러그인 데이터를 잃을 수 있습니다.
II. 문제의 뿌리 원인 분석
- Database 오래된 도메인 이름
wp_options·siteurl이름 *home필드는 업데이트되지 않습니다.- Articles, metadata 및 sequenced data (e.g., menu, small tools)는 하드 코딩 된 오래된 주소를 포함합니다.
- Docker 데이터 관리 Missing
- 데이터 볼륨 또는 채택 실패
mysqldump완전한 백업, 직접 처리 컨테이너는 데이터의 반복적 인 손실 결과로.
- 데이터 볼륨 또는 채택 실패
- 서버 구성 Interference
- 오래된 환경의 간접적 규칙 (예 :
.htaccess하지 말아.
- 오래된 환경의 간접적 규칙 (예 :
III. Full-chain 솔루션
1단계: Docker 데이터 백업 및 마이그레이션
1. 백업 MySQL 데이터베이스 방법 1: 옵션mysqldump 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
방법 2: 지원 MySQL 자료 양
# 备份数据卷(宿主机操作)
docker run --rm -v mysql_data:/source -v /host/backup:/backup alpine tar czf /backup/mysql_data.tar.gz -C /source .
2. MySQL 데이터베이스를 생산 환경에 가져 오기
# 导入 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. 데이터 무결성 검증
# 检查关键表数据
docker exec prod-mysql-container mysql -uroot -p123456 -e "USE wordpress; SELECT COUNT(*) FROM wp_posts;"
Phase II: 도메인 이름의 복원 점프
1. 보안 교체 데이터베이스 오래된 도메인 이름 공구 선택과 가동- BetterSearchReplace 플러그인::
- Full library 교체
localhost:8081이름 *666.com나는 모른다. - Resize 최대 페이지
500큰 테이블의 일괄 처리.
- Full library 교체
- 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. 서버 구성 잔류물의 정리
- 오래된 오리엔테이션 규칙 제거::
# .htaccess 中删除旧规则
RewriteRule ^(.*)$ https://localhost:8081/$1 [R=301,L] # 删除此行
단계 III: 인증 및 최적화
- 기능 인증
- 홈 페이지 액세스:
curl -I https://666.com상태 확인200이름 *301/302나는 모른다. - ꀰ사, 페이지, 미디어 파일 URL이 새로운 도메인 이름에 해당합니다.
- 홈 페이지 액세스:
- 성능 최적화
- Redis 또는 Memcached 캐시 데이터베이스 쿼리 구성.
- 제품 정보
docker system prune잘못된 컨테이너의 이미지를 정리합니다.
운영 위험 및 상황
| 위험 장면 | - 연혁 | Refusal 측정 |
|---|---|---|
| 데이터베이스 권한 | 포장 시작 실패, 로그 hint denied | 백업하기 전에 데이터 스크롤의 사용자 그룹을 Harmonize 999:999(MySQL 기본) |
| 데이터 손상 | 페이지 레이아웃은 혼란 또는 플러그인 기능 이상 | 제품 정보 -g serialized 자료를 가공하는 모수 |
| 백업 파일 incomplete | 수입한 시계의 구조는 누락됩니다 | MD5 Hash를 복원하는 더블 백업 (SQL + 데이터 볼륨) |
V. 교훈과 표준화 과정
1. 표준화된 이동 과정
- 현지 환경 백업::
# 备份数据库 + 数据卷
docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql
docker volume inspect mysql_data > volume_backup.json - 생산 환경의 사전 구성::
- MySQL 컨테이너의 동일한 버전을 미리 만들고, 데이터 볼륨을 마운트합니다.
- Incremental 데이터 동기화::
- 제품 정보
rsyncSync의wp-content/uploads·
- 제품 정보
2. 자동화된 스크립트의 예
#!/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
긴 수명 모니터링 메커니즘
- 로그 모니터::
docker logs -f prod-mysql-container | grep -E "ERROR|WARNING" - 건강 심사::
curl -s https://666.com/health-check | grep "OK"
비. 최종값
이 마이그레이션 연습을 통해 "콘테이터화 WordPress 4 단계 방법."::
- 표준 백업: SQL + 데이터 볼륨 더블 보험.
- 공구 재활: 플러그인 및 명령줄 도구와 결합된 보안 교체 데이터.
- Atomic 인증단계별 체크 페이지, API, 미디어 리소스.
- 자동화된 감시로그, 건강 검사, 일반 롤백 테스트.
이 옵션은 컨테이너화 애플리케이션의 운송에 대한 일반적인 템플릿을 제공 할 수 있으며 환경 차이로 인한 기술적 임계 값을 줄일 수 있습니다.