← 一覧に戻る

ローカルからクラウド:WordPressの移行フルチェーンソリューション、データバックアップ、データベースの復元など

itadol5j

I.背景とコア課題

1. 移行シーン

ローカル開発環境localhost:8081その他の組織 666.comこれは、コンテナ化の展開(Docker)とデータベースのクロス環境移行を含みます。

2. コアの問題

  • 最初のページジャンプ非日常: 訪問 666.com オートジャンプ localhost:8081データベースに古いドメイン名が含まれているため。
  • データ一貫性リスク: Docker コンテナデータはバックアップされず、マイグレーション プロセスは設定やプラグインのデータを失う可能性があります。

II. 問題の根本原因の解析

  1. データベース旧ドメイン名
    • wp_options テーブル siteurl そして、 home フィールドは更新されません。
    • 記事、メタデータおよびシーケンスされたデータ(例、メニュー、小さなツール)には、ハードコードされた古いアドレスが含まれています。
  2. Dockerデータ管理ミス
    • データのボリュームや mysqldump 完全なバックアップ、データの不可逆的な損失をもたらす直接処理容器。
  3. サーバー構成の干渉
    • 古い環境のリダイレクトルール(例) .htaccessクリアされていない。

3。 フルチェーンソリューション

フェーズ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;"  

フェーズII:ドメイン名の回復はジャンプします

1. セキュリティ交換データベース 古いドメイン名 工具選定・加工
  • BetterSearchReplaceプラグイン: : :
    1. 完全なライブラリの交換 localhost:8081 お問い合わせ 666.comお問い合わせ
    2. 最大ページのサイズ変更 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 無効なコンテナのイメージをクリアします。

運用リスクと回避策

リスク・シーンパフォーマンス拒否対策
データベースのパーミッションコンフリクトパッケージングスタートアップが失敗し、ログヒントが拒否されましたバックアップ前のデータのスクロールのユーザーグループを調和させる 999:999(MySQL デフォルト)
連続したデータ損傷ページのレイアウトは混乱やプラグイン機能が異常です使用条件 -g シリアル化されたデータを処理するためのパラメーター
バックアップファイル不完全輸入時計の構造は欠落していますMD5ハッシュを復元するための二重バックアップ(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. 包括的なデータ同期: : :
    • 使用条件 rsync 同期 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"  

ベトナム 最終的な価値

このマイグレーション練習を通して、 「Containerization WordPress 4ステップ」: : :

  1. 標準化されたバックアップ: SQL +データボリュームダブル保険。
  2. 工具リハビリテーション: プラグインとコマンドラインツールと組み合わせたセキュリティ交換データ。
  3. アトミック認証フェーズドチェックページ、API、メディアリソース。
  4. 自動監視ログ、健康チェック、定期的なロールバックテスト。

このオプションは、コンテナ化アプリケーションの輸送のための一般的なテンプレートを提供し、環境差に起因する技術的なしきい値を減らすことができます。