生產環境數據庫升級風險極高,本文解析一款支援 MySQL、MariaDB、Percona Server 同大版本小版本升級的自動化 Shell 腳本,適用於 5.6.25 → 5.6.26、10.0.20 → 10.0.21 等場景,嚴禁跨大版本或跨分支使用。
mysqldump --all-databases 導出 SQL,文件名含日期戳5.6.xx),自動構建下載 URLlinux 或 linux-glibc_214 包mysqld_safeWITH_READLINE、WITH_EMBEDDED_SERVER 差異)make -j $(nproc)WITH_EMBEDDED_SERVER=1cdn.mysql.comOld_DB_version=`$db_install_dir/bin/mysql -V | awk '{print $5}' | awk -F, '{print $1}'`
# 輸出示例:5.6.25 或 10.0.20-MariaDB
# 強制同大版本
if [ `echo $DB_version | awk -F. '{print $1"."$2}'` == `echo $Old_DB_version | awk -F. '{print $1"."$2}'` ]; then
# 構建下載鏈接...
fi
while :; do
$db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "quit" >/dev/null 2>&1
[ $? -eq 0 ] && break
read -p "密碼錯誤,重新輸入: " NEW_dbrootpwd
# 驗證並持久化到 options.conf
done
mysqldump -uroot -p${dbrootpwd} --opt --all-databases > DB_all_backup_$(date +%Y%m%d).sql
$db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
$db_install_dir/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
[ $? -eq 0 ] && echo "升級成功: $Old_DB_version → $DB_version"
mysql < backup.sql 試導入)mysql_upgrade 系統表檢查(腳本未包含,需手動補充)自動化腳本能標準化升級流程、減少人為錯誤,但數據庫升級無小事,嚴謹的測試驗證與回滾預案才是核心保障。