首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

WordPress MySQL 備份恢復實戰:大數據量分表導出與亂碼終極解決

     編輯:MySQL 資料庫相關知識

WordPress 站點長期運行,數據庫備份恢復面臨「phpMyAdmin 上傳 2MB 限制」與「字符集亂碼」雙重挑戰。本文提供分表導出突破上傳限制、全鏈路 UTF-8 配置消除亂碼的實戰方案。

大數據量備份突破方案

痛點分析

  • phpMyAdmin 導入受限於 PHP upload_max_filesize=2M、post_max_size=8M
  • 單表 wp_posts 易超限(含正文、修訂版、附件元數據)
  • 修改 PHP 配置需重啟服務,虛擬主機通常無權限

分表導出策略

  1. phpMyAdmin → 選擇數據庫 → 「導出」 → 「自定義」
  2. 勾選「按表分割輸出」或手動逐表導出
  3. 壓縮格式選 gzipped 或 zipped
  4. 導入時逐表上傳,單文件體積可控

極大表應急方案

  • 導出純 SQL 文本(不壓縮),本地編輯器分割為多段
  • phpMyAdmin SQL 標籤頁分批粘貼執行(每批 500-1000 行)
  • 或使用 BigDump.php 等分批導入腳本

MySQL 亂碼根因與終極解決

MySQL 端配置

# my.ini / my.cnf
[mysqld]
# 刪除或註釋 default-character-set=latin1
# 不要顯式設 default-character-set=utf8(僅影響服務端默認)
# 關鍵在連接層與表定義

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

phpMyAdmin 端配置

  • 語言:Chinese (zh-UTF-8)
  • MySQL 字符集:UTF-8 Unicode (utf8mb4)
  • MySQL 連接校對:utf8mb4_unicode_ci
  • 關鍵:建庫/建表時「整理」選 utf8mb4_unicode_ci

WordPress 核心代碼修改(wp-includes/wp-db.php)

// 在 $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword); 之後插入
$this->query("SET NAMES 'utf8mb4'");

等效於執行:

SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;

現代 WordPress (4.2+) 原生支持

  • wp-config.php 定義:define('DB_CHARSET', 'utf8mb4');
  • define('DB_COLLATE', 'utf8mb4_unicode_ci');
  • 安裝時自動建表為 utf8mb4,無需修改核心代碼

驗證清單

層級檢查命令/位置預期值
服務端SHOW VARIABLES LIKE 'character_set%';utf8mb4 相關
數據庫SHOW CREATE DATABASE wp_db;DEFAULT CHARACTER SET utf8mb4
表SHOW CREATE TABLE wp_posts;DEFAULT CHARSET=utf8mb4
列SHOW FULL COLUMNS FROM wp_posts;utf8mb4_unicode_ci
連接應用日志/抓包SET NAMES utf8mb4

遷移檢查點

  1. 導出時 --default-character-set=utf8mb4
  2. 導入前目標庫 CREATE DATABASE ... CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  3. 導入命令 mysql --default-character-set=utf8mb4 ...
  4. 遷移後 CHECK TABLE + 業務功能測試

分表導出破解上傳限制,全鏈路 utf8mb4 徹底根治亂碼,讓 WordPress 數據安全無憂。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved