| 版本 | 核心新特性 | 不兼容風險點 |
|---|---|---|
| 4.0 | 查詢緩存、UNION、多表 DELETE/UPDATE、SSL | 舊密碼插件、系統表結構變更 |
| 4.1 | 子查詢、衍生表、字符集支持 (每列級)、預處理語句、GIS、新密碼哈希 (41 字節) | 密碼哈希算法變更、字符集配置重構、SQL_MODE 默認變化 |
| 5.0 | 存儲過程/函數、觸發器、視圖、信息架構、XA 事務 | 保留字增加、嚴格模式默認開啟 |
| 5.1 | 分區表、事件調度器、插件式存儲引擎、行級復制 | 插件接口變更、系統表再次調整 |
mysqldump 導出 SQL,新版本導入重建。useUnicode=true&characterEncoding=utf8)、SQL 語法兼容性檢查。# 停止舊服務 /www/mysql/bin/mysqladmin -u root -p shutdown # 物理備份 (回滾用) cp -R /www/mysql /www/mysql_backup_323 # 邏輯備份 (升級用) /www/mysql/bin/mysqldump -u root -p --all-databases --routines --triggers --single-transaction --master-data=2 > /backup/full_323.sql # 重要庫單獨導出 (加速導入) /www/mysql/bin/mysqldump -u root -p business_db > /backup/business.sql
# 創建用戶組 groupadd -g 201 mysql useradd -u 1001 -g mysql -d /www/mysql -m -s /bin/bash -c "MySQL Admin" mysql passwd mysql # 設置密碼 # 解壓安裝 tar zxvf mysql-standard-4.1.xx-linux-x86_64.tar.gz mv mysql-standard-4.1.xx /usr/local/mysql chown -R mysql:mysql /usr/local/mysql # 初始化數據目錄 (4.1 仍用 mysql_install_db) su - mysql /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/data/mysql exit # 配置 my.cnf (關鍵參數參考生產模板) # 啟動測試 /usr/local/mysql/bin/mysqld_safe --user=mysql &
MySQL 4.1 user 表新增列:max_questions、max_updates、max_connections、max_user_connections、ssl_cipher、x509_issuer、x509_subject 等。
# 登錄新版本 /usr/local/mysql/bin/mysql -u root -p -- 1. 根用戶本地/遠程全權限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'StrongRootPass#2024' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.98.2' IDENTIFIED BY 'StrongRootPass#2024' WITH GRANT OPTION; -- 2. 備份專用用戶 (高配額) GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'backup_user'@'localhost' IDENTIFIED BY 'BackupPass#2024'; UPDATE mysql.user SET max_questions=3000000, max_updates=3000000 WHERE User='backup_user'; -- 3. 應用只讀用戶 GRANT SELECT ON business_db.* TO 'app_read'@'%' IDENTIFIED BY 'AppReadPass#2024'; FLUSH PRIVILEGES;
# 創建業務庫 mysql -u root -p -e "CREATE DATABASE business_db DEFAULT CHARSET utf8mb4;" # 導入數據 (使用備份用戶) /usr/local/mysql/bin/mysql -u backup_user -p business_db < /backup/business.sql # 驗證 mysql -u root -p -e "USE business_db; SHOW TABLES; SELECT COUNT(*) FROM core_table;" # 運行應用集成測試 # 重點檢查:字符集、日期時間、JOIN 語法、子查詢、預處理語句
# 停止新服務 /usr/local/mysql/bin/mysqladmin -u root -p shutdown # 恢復舊安裝 rm -rf /usr/local/mysql /data/mysql mv /www/mysql_backup_323 /www/mysql service mysql start # 應用切回舊配置