← 목록으로

클라우드 현지 : WordPress 마이그레이션 전체 체인 솔루션, 데이터 백업, 데이터베이스 복원 등

itadol5j

I. 배경과 핵심 과제

1. 마이그레이션 장면

지역 개발 환경localhost:8081다른 Organiser 666.com이것은 컨테이너화 배포 (Docker) 및 데이터베이스의 교차 환경 마이그레이션을 포함한다.

2. 핵심 문제

  • 첫 페이지 점프 Unusual: 방문 666.com Autojump로 localhost:8081데이터베이스가 오래된 도메인 이름을 포함했기 때문에.
  • 데이터 일관성 위험: Docker 컨테이너 데이터가 백업되지 않으며 마이그레이션 프로세스는 구성 또는 플러그인 데이터를 잃을 수 있습니다.

II. 문제의 뿌리 원인 분석

  1. Database 오래된 도메인 이름
    • wp_options · siteurl 이름 * home 필드는 업데이트되지 않습니다.
    • Articles, metadata 및 sequenced data (e.g., menu, small tools)는 하드 코딩 된 오래된 주소를 포함합니다.
  2. Docker 데이터 관리 Missing
    • 데이터 볼륨 또는 채택 실패 mysqldump 완전한 백업, 직접 처리 컨테이너는 데이터의 반복적 인 손실 결과로.
  3. 서버 구성 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 플러그인::
    1. Full library 교체 localhost:8081 이름 * 666.com나는 모른다.
    2. Resize 최대 페이지 500큰 테이블의 일괄 처리.
  • Search-Replace-DB 명령줄 도구::php srdb.cli.php -h localhost -u root -p 123456 -n wordpress -s "localhost:8081" -r "666.com" -g  
2. 힘 갱신 WordPress 윤곽
// 在 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: 인증 및 최적화

  1. 기능 인증
    • 홈 페이지 액세스:curl -I https://666.com 상태 확인 200 이름 * 301/302나는 모른다.
    • ꀰ사, 페이지, 미디어 파일 URL이 새로운 도메인 이름에 해당합니다.
  2. 성능 최적화
    • Redis 또는 Memcached 캐시 데이터베이스 쿼리 구성.
    • 제품 정보 docker system prune 잘못된 컨테이너의 이미지를 정리합니다.

운영 위험 및 상황

위험 장면- 연혁Refusal 측정
데이터베이스 권한포장 시작 실패, 로그 hint denied백업하기 전에 데이터 스크롤의 사용자 그룹을 Harmonize 999:999(MySQL 기본)
데이터 손상페이지 레이아웃은 혼란 또는 플러그인 기능 이상제품 정보 -g serialized 자료를 가공하는 모수
백업 파일 incomplete수입한 시계의 구조는 누락됩니다MD5 Hash를 복원하는 더블 백업 (SQL + 데이터 볼륨)

V. 교훈과 표준화 과정

1. 표준화된 이동 과정

  1. 현지 환경 백업::# 备份数据库 + 数据卷  
    docker exec mysql-container mysqldump -uroot -p123456 wordpress > backup.sql  
    docker volume inspect mysql_data > volume_backup.json  
  2. 생산 환경의 사전 구성::
    • MySQL 컨테이너의 동일한 버전을 미리 만들고, 데이터 볼륨을 마운트합니다.
  3. Incremental 데이터 동기화::
    • 제품 정보 rsync Sync의 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 단계 방법."::

  1. 표준 백업: SQL + 데이터 볼륨 더블 보험.
  2. 공구 재활: 플러그인 및 명령줄 도구와 결합된 보안 교체 데이터.
  3. Atomic 인증단계별 체크 페이지, API, 미디어 리소스.
  4. 자동화된 감시로그, 건강 검사, 일반 롤백 테스트.

이 옵션은 컨테이너화 애플리케이션의 운송에 대한 일반적인 템플릿을 제공 할 수 있으며 환경 차이로 인한 기술적 임계 값을 줄일 수 있습니다.