本文詳細說明如何在一台 CentOS 6.8 伺服器上,透過原始碼編譯方式安裝兩個不同版本的 MySQL(5.5.32 與 5.6.31),並配置獨立的資料目錄、通訊埠與 Socket 檔案,實現多實例並行運行。
| 項目 | MySQL 5.5.32 (實例 1) | MySQL 5.6.31 (實例 2) |
|---|---|---|
| 安裝程式目錄 | /mysqlsoft/mysql1 | /mysqlsoft/mysql2 |
| Socket 檔案 | /mysqlsoft/mysql1/mysql.sock | /mysqlsoft/mysql2/mysql.sock |
| 資料目錄 | /data/mysql1 | /data/mysql2 |
| 監聽埠號 | 3301 | 3302 |
# 建立 mysql 群組與使用者 groupadd mysql useradd mysql -g mysql # 建立軟體與資料目錄 mkdir -p /mysqlsoft/mysql1 /mysqlsoft/mysql2 mkdir -p /data/mysql1 /data/mysql2 # 設定目錄擁有者 chown -R mysql:mysql /mysqlsoft/mysql1 /mysqlsoft/mysql2 chown -R mysql:mysql /data/mysql1 /data/mysql2
yum install cmake make gcc perl -y
cd /mysqlsoft/mysql1 tar -zxvf mysql-5.5.32.tar.gz mkdir bootstrap && cd bootstrap cmake .. \ -DCMAKE_INSTALL_PREFIX=/mysqlsoft/mysql1 \ -DMYSQL_DATADIR=/data/mysql1 \ -DSYSCONFDIR=/mysqlsoft/mysql1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_TCP_PORT=3301 \ -DMYSQL_UNIX_ADDR=/mysqlsoft/mysql1/mysql.sock make && make install
cd /mysqlsoft/mysql1 cp ./support-files/my-default.cnf my.cnf # 編輯 my.cnf 加入必要配置項 chown -R mysql:mysql . scripts/mysql_install_db --user=mysql # 確認 /data/mysql1 權限正確
cd /mysqlsoft/mysql2 tar -zxvf mysql-5.6.31.tar.gz mkdir bootstrap && cd bootstrap cmake .. \ -DCMAKE_INSTALL_PREFIX=/mysqlsoft/mysql2 \ -DMYSQL_DATADIR=/data/mysql2 \ -DSYSCONFDIR=/mysqlsoft/mysql2 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_TCP_PORT=3302 \ -DMYSQL_UNIX_ADDR=/mysqlsoft/mysql2/mysql.sock make && make install
cd /mysqlsoft/mysql2 cp ./support-files/my-default.cnf my.cnf # 編輯 my.cnf 加入必要配置項 chown -R mysql:mysql . scripts/mysql_install_db --user=mysql # 確認 /data/mysql2 權限正確
# 啟動實例 1 (5.5.32) cd /mysqlsoft/mysql1 bin/mysqld_safe --user=mysql & # 啟動實例 2 (5.6.31) cd /mysqlsoft/mysql2 bin/mysqld_safe --user=mysql &
ps -ef | grep mysql
預期輸出應顯示兩組 mysqld 進程,分別監聽 3301 與 3302 埠,使用不同的 basedir、datadir 與 socket 路徑。
DELETE FROM mysql.db WHERE Db LIKE 'test%';透過上述步驟,即可在單一伺服器上穩定運行多個版本不同的 MySQL 實例,滿足開發、測試或舊系統並行需求。