隨著部落格文章增長,單一 SQL 檔案可能超過 phpMyAdmin 上傳限制 (預設 2MB)。分階段策略:
mysqldump -u user -p db_name wp_posts wp_postmeta wp_comments wp_options > partial.sql,核心大表單獨導出。mysqldump ... | gzip > backup_$(date +%F).sql.gz,大幅縮小體積。split -b 1M backup.sql.gz backup_part_,分批上傳後伺服器端 cat backup_part_* > backup.sql.gz。gunzip < backup.sql.gz | mysql -u user -p db_name 或 SOURCE /path/backup.sql (需檔案在伺服器且可讀)。cron + rsync/rclone 推送至異地 (S3、Google Drive、NAS),保留 30 天版本。瀏覽器 → PHP → MySQL 連線 → 儲存引擎 → 檔案系統,任一環節字元集不一致即產生亂碼。
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
skip-character-set-client-handshake # 強制忽略客戶端字元集宣告
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
重啟後驗證:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
全部應顯示 utf8mb4 / utf8mb4_unicode_ci。
utf8mb4_unicode_ci。修改 wp-includes/wp-db.php (或 wp-config.php 早期掛鉤):
// 在 $this->dbh = @mysql_connect(...) 之後立即加入
$this->query("SET NAMES 'utf8mb4'");
// 或 mysqli 版本
mysqli_set_charset($this->dbh, 'utf8mb4');
※ WordPress 4.2+ 已預設支援 utf8mb4,新安裝無需手動修改;舊站升級請執行 wp cli db charset utf8mb4 或外掛 WP Migrate DB 轉換。
# 產生 ALTER 陳述式
SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_wp_db';
執行輸出的 SQL,再執行資料庫層級轉換:
ALTER DATABASE your_wp_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
wp-config.php 定義 define('DB_CHARSET', 'utf8mb4'); define('DB_COLLATE', 'utf8mb4_unicode_ci');Content-Type: text/html; charset=utf-8。mbstring.internal_encoding = UTF-8、default_charset = "UTF-8"。