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

CentOS 6.3 編譯安裝多實例 MySQL 5.0/5.1 完整實戰

     編輯:MySQL 綜合教學

生產環境常需在單機運行多個隔離的 MySQL 實例(不同版本、不同端口、不同數據目錄)。本文記錄在 CentOS 6.3 64位上,編譯部署 MySQL 5.0.56 (3306) 與 5.1.72 (3307) 雙實例的全流程。

環境規劃

項目實例一實例二
版本mysql-5.0.56mysql-5.1.72
端口33063307
安裝目錄/usr/local/mysql3306/usr/local/mysql3307
Socket/tmp/mysql3306.sock/tmp/mysql3307.sock

關鍵步驟摘要

1. 系統依賴與安全配置

yum -y install wget gcc-c++ ncurses-devel cmake make perl bison openssl-devel libxml2-devel curl-devel libjpeg* libpng* freetype*
service iptables stop
setenforce 0
# 永久關閉 SELinux:編輯 /etc/sysconfig/selinux 設 SELINUX=disabled

2. 用戶、目錄與權限

useradd mysql
mkdir -p /usr/local/mysql{3306,3307}/{data,log,etc}
mkdir -p /var/run/mysqld{3306,3307} /var/lib/mysqld{3306,3307}
chown -R mysql:mysql /usr/local/mysql{3306,3307} /var/run/mysqld{3306,3307} /var/lib/mysqld{3306,3307}
chmod 750 /usr/local/mysql{3306,3307}/{data,log}

3. 源碼編譯安裝(關鍵 configure 參數)

# 實例一 5.0.56
./configure --prefix=/usr/local/mysql3306 \
  --with-mysqld-user=mysql --sysconfdir=/usr/local/mysql3306/etc \
  --localstatedir=/usr/local/mysql3306/data --with-tcp-port=3306 \
  --with-unix-socket-path=/tmp/mysql3306.sock \
  --with-charset=utf8 --with-extra-charsets=all \
  --with-plugins=csv,innobase,myisam,heap
make && make install

# 實例二 5.1.72(類似,修改路徑與端口為 3307)

4. 獨立配置文件 my.cnf

每實例一份,核心差異點:datadir、socket、port、pid-file、日誌路徑。關鍵參數示例:

[mysqld]
datadir=/usr/local/mysql3306/data
socket=/tmp/mysql3306.sock
port=3306
pid-file=/var/lib/mysqld3306/mysql.pid
max_connections=16384
wait_timeout=7200
log-error=/usr/local/mysql3306/log/error.log
log-bin=/usr/local/mysql3306/log/bin.log

5. 初始化、服務註冊與啟動

# 初始化系統表
cd /usr/local/mysql3306 && scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql3306/data
cd /usr/local/mysql3307 && scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql3307/data

# 複製並修改啟動腳本
cp /usr/local/mysql3306/support-files/mysql.server /etc/init.d/mysqld3306
cp /usr/local/mysql3307/support-files/mysql.server /etc/init.d/mysqld3307
# 編輯腳本,設定 basedir、datadir、conf=.../my.cnf,並在 mysqld_safe 後添加 --defaults-file=$conf

# 註冊開機自啟
chkconfig --add mysqld3306 && chkconfig --level 35 mysqld3306 on
chkconfig --add mysqld3307 && chkconfig --level 35 mysqld3307 on

# 啟動
service mysqld3306 start
service mysqld3307 start

6. 環境變量與驗證

echo "PATH=\$PATH:/usr/local/mysql3306/bin" >> /etc/profile && source /etc/profile
# 設密碼、連接測試
/usr/local/mysql3306/bin/mysqladmin -u root password '123456'
/usr/local/mysql3306/bin/mysql -P3306 -S/tmp/mysql3306.sock -uroot -p123456
lsof -i:3306 && lsof -i:3307

避坑指南

  • 確保兩實例的 socket、port、pid-file、datadir 完全隔離
  • 啟動腳本務必指定 --defaults-file 指向各自的 my.cnf
  • 庫文件只需將一個實例的 lib 加入 ld.so.conf.d 即可

按此流程操作,可實現多版本 MySQL 共存、互不干擾,滿足兼容性測試或多業務隔離需求。

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