首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

CentOS 6.3 將 MySQL 5.1.61 升級至 5.6.19 實戰記錄:RPM 衝突解決、Socket 目錄缺失、編碼遷移、共享庫兼容全過程

     編輯:MySQL 綜合教學

生產環境因業務需分區表功能(MySQL 5.5+ 支援),需將 CentOS 6.3 上的 MySQL 5.1.61 升級至 5.6.19。本文記錄從 RPM 下載、依賴衝突解決、服務啟動異常排查、密碼重置、數據導入編碼處理、PHP 連接庫兼容的完整遷移路徑。

一、背景與目標

  • 現狀:CentOS 6.3 (i686)、MySQL 5.1.61 (yum 安裝)。
  • 目標:升級至 MySQL 5.6.19,啟用分區表。
  • 策略:官網下載 Red Hat Enterprise Linux 版 RPM 套裝,原地升級。

二、RPM 包下載與安裝衝突

# 1. 下載全套 RPM(Server、Client、Shared、Devel、Embedded)
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.19-1.el6.i686.rpm-bundle.tar
tar xf MySQL-5.6.19-1.el6.i686.rpm-bundle.tar

# 2. 嘗試安裝 Server
rpm -ivh MySQL-server-5.6.19-1.el6.i686.rpm
# 報錯:file /usr/share/mysql/charsets/README from install of MySQL-server conflicts with file from package mysql-libs-5.1.61-4.el6.i686

解決:先移除舊共享庫(業務停機窗口操作):

rpm -e --nodeps mysql-libs-5.1.61-4.el6.i686
# 再裝 Server
rpm -ivh MySQL-server-5.6.19-1.el6.i686.rpm   # 成功

三、服務啟動異常:Socket 目錄缺失

service mysqld start
# 錯誤:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
# 日誌顯示 /var/run/mysql/ 目錄不存在
mkdir -p /var/run/mysql
chown mysql:mysql /var/run/mysql
service mysqld start   # 成功

四、Root 密碼重置與安全初始化

# 5.6 首次啟動會生成隨機密碼寫入 ~/.mysql_secret
cat ~/.mysql_secret
# 登錄修改密碼
mysql -uroot -p'random_pass' -e "SET PASSWORD = PASSWORD('123456'); FLUSH PRIVILEGES;"

五、數據導入編碼問題

# 導出舊數據(指定編碼)
mysqldump -uroot -p'oldpass' --default-character-set=latin1 --skip-set-charset db_name > /tmp/db.sql
# 導入新庫(指定編碼)
mysql -uroot -p'123456' --default-character-set=utf8 db_name < /tmp/db.sql

關鍵:舊庫實際存 latin1 但標註 utf8,導出時用 --default-character-set=latin1 防止雙重轉碼,導入時顯式指定 utf8。

六、PHP 連接庫兼容:mysql-libs 衝突再現

yum install php-mysql
# 又要求 mysql-libs,與 5.6 Server 衝突
# 解決:安裝官方提供的兼容包
rpm -ivh MySQL-shared-compat-5.6.19-1.el6.i686.rpm
yum install php-mysql   # 成功

MySQL-shared-compat 提供 libmysqlclient.so.16/18 符號鏈接,滿足 PHP/Perl/Python 老模組依賴,不覆蓋 5.6 的核心庫。

七、升級後驗證清單

  1. SHOW VARIABLES LIKE 'version'; 確認 5.6.19。
  2. CREATE TABLE t (id INT) PARTITION BY HASH(id) PARTITIONS 4; 驗證分區功能正常。
  3. 業務核心 SQL EXPLAIN 執行計劃無退化。
  4. 主從復制(如有)SHOW SLAVE STATUS 正常。
  5. 備份腳本、監控腳本適配新版參數(如 innodb_log_file_size 單位變化)。

八、教訓總結

  1. RPM 升級必先備份:mysqldump --all-databases + /var/lib/mysql 物理備份。
  2. 記錄每條報錯原文:事後復盤依賴完整日誌,切勿只記「解決了」。
  3. 共享庫兼容包是關鍵:MySQL-shared-compat 解決 90% 外部依賴衝突。
  4. 編碼遷移三步走:導出 latin1 → 文件存 utf8 → 導入 utf8,驗證中文正常。

此次升級耗時約 2 小時(含業務停機),核心風險點集中在「共享庫衝突」與「編碼遷移」,提前在測試環境全流程演練可將生產停機壓縮至 30 分鐘內。

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