← Вернуться к списку

Локальное облако: решения для полной цепочки миграции WordPress, резервное копирование данных, восстановление базы данных и т. Д.

itadol5j

I. Справочная информация и основные проблемы

1.Миграционная сцена

Местная среда развитияlocalhost:8081Другие организаторы 666.comЭто включает развертывание контейнеризации (Docker) и межэкологическую миграцию баз данных.

2. Основные вопросы

  • Первая страница прыжка необычная: Посещения 666.com Автопрыжок localhost:8081База данных содержит старые доменные имена.
  • Риск согласованности данныхДанные контейнера Docker не резервируются, и процесс миграции может потерять конфигурацию или данные плагина.

II. Анализ коренных причин проблемы

  1. База данных старого доменного имени
    • wp_options Столик siteurl и home Поле не обновляется.
    • Статьи, метаданные и секвенированные данные (например, меню, небольшие инструменты) содержат жестко закодированные старые адреса.
  2. Docker Data Management отсутствует
    • Неспособность принять объем данных или mysqldump Полное резервное копирование, прямая обработка контейнеров приводит к необратимой потере данных.
  3. Интерференция конфигурации сервера
    • Перенаправление правил старой среды (например, .htaccessНе расчищено.

III. Полноцепочечные решения

Фаза 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 Замена базы данных старыми доменными именами Выбор и эксплуатация инструмента
  • BetterSearch заменит плагин:
    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. Force Update WordPress Configuration
// 在 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 Параметры для обработки серийных данных
Резервный файл неполныйСтруктура импортных часов отсутствуетДвойное резервное копирование (SQL + объем данных) для восстановления MD5 Hash

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"  

VI. Окончательная стоимость

Благодаря этой практике миграции Контейнеризация WordPress 4-ступенчатый метод.:

  1. Стандартное резервное копированиеSQL + объем данных двойное страхование.
  2. Инструмент реабилитацииЗамена данных безопасности в сочетании с плагинами и инструментами командной строки.
  3. Атомная аутентификацияПоэтапная проверка страниц, API, медиаресурсов.
  4. Автоматический мониторингЖурналы, проверки здоровья, регулярные откаты.

Этот вариант мог бы обеспечить общий шаблон для применения при транспортировке контейнеров и снизить технические пороговые значения, обусловленные экологическими различиями.