論壇資料庫 phpbb2_users 表損壞,嘗試 myisamchk -o 修復多次才恢復。為避免資料遺失,著手建立備份機制,並為未來遷移做準備。
myisamchk 檢查修復,確保資料完整。mysqladmin flush-tables 避免衝突。tar cvfz phpbb2_YYYYMMDD.tgz phpbb目錄
/etc/rc.d/init.d/mysqld stop
tar cvfz phpbb2_db_YYYYMMDD.tgz /var/lib/mysql/phpbb2
/etc/rc.d/init.d/mysqld start
優點:極快、保留精確時間點檔案狀態。缺點:需停機、跨版本/引擎遷移風險高(需同為 MyISAM 且 MySQL 3.23+)。
/etc/rc.d/init.d/mysqld stop
mv phpbb2 phpbb2_error
tar xvfz phpbb2_db_YYYYMMDD.tgz
/etc/rc.d/init.d/mysqld start
為解決跨版本遷移與不停機需求,改用 mysqldump 產生可移植 SQL。
mysqldump --opt 資料庫 > 備份.sqlmysqldump --opt 資料庫 | gzip > 備份.sql.gzmysqldump 資料庫 表名 > 表.sqlmysqldump --opt 資料庫 | mysql --compress -h 目標主機 目標資料庫#!/bin/sh
DATE=$(date +%Y%m%d)
mysqldump --opt phpbb2 | gzip > /backup/phpbb2_$DATE.sql.gz
# 保留 7 天
find /backup -name 'phpbb2_*.sql.gz' -mtime +7 -delete