首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CentOS 6.x 多實例 MySQL 5.0/5.1 編譯安裝與配置全紀錄

     編輯:MySQL 資料庫相關知識

記錄在 CentOS 6.3 64 位上編譯安裝兩個 MySQL 實例(5.0.56 @ 3306、5.1.72 @ 3307)的完整步驟,供同類場景參考。

規劃概覽

項目實例 1實例 2
版本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 ncurses-devel cmake make perl bison openssl openssl-devel gcc* libxml2 libxml2-devel curl-devel libjpeg* libpng* freetype*

# 關閉防火牆與 SELinux
service iptables stop
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

2. 建立用戶與目錄結構

useradd mysql
mkdir -p /usr/local/mysql{3306,3307}/{data,log,etc}
mkdir -p /var/run/mysqld{3306,3307}
mkdir -p /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. 下載、編譯、安裝

cd ~/src
wget https://down1.chinaunix.net/distfiles/mysql-5.0.56.tar.gz
wget https://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz

# 實例 1
tar -zxvf mysql-5.0.56.tar.gz
cd mysql-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 \
  --enable-assembler \
  --with-mysqld-ldflags=-all-static \
  --with-charset=utf8 \
  --with-extra-charsets=gbk,all \
  --with-plugins=csv,innobase,myisam,heap \
  --with-unix-socket-path=/tmp/mysql3306.sock
make && make install

# 實例 2(類似,端口 3307、socket mysql3307.sock、目錄 mysql3307)
cd ~/src
tar -zxvf mysql-5.1.73.tar.gz
cd mysql-5.1.73
./configure --prefix=/usr/local/mysql3307 ...(參數同理修改)
make && make install

4. 獨立 my.cnf 配置

各實例 /usr/local/mysql3306/etc/my.cnf、/usr/local/mysql3307/etc/my.cnf 關鍵差異:

  • datadir、socket、port、pid-file 指向各自目錄。
  • log-error、slow-query-log、log-bin 分離。
  • 緩存參數(key_buffer、query_cache_size 等)按機器記憶體調整,示例均為 256M/128M。

5. 庫文件與頭文件鏈接

# 庫文件(僅需一個實例)
ln -s /usr/local/mysql3306/lib/mysql /usr/lib/mysql
# 或
echo "/usr/local/mysql3306/lib" > /etc/ld.so.conf.d/mysql.conf && ldconfig

# 頭文件
ln -s /usr/local/mysql3306/include/mysql /usr/include/mysql

6. 初始化數據目錄

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

7. 啟動腳本註冊為服務

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、defaults-file
# mysqld3306
basedir=/usr/local/mysql3306
datadir=/usr/local/mysql3306/data
conf=/usr/local/mysql3306/etc/my.cnf
$bindir/mysqld_safe --defaults-file=$conf --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &

# mysqld3307 同理修改路徑

chkconfig --add mysqld3306 && chkconfig --level 35 mysqld3306 on
chkconfig --add mysqld3307 && chkconfig --level 35 mysqld3307 on

8. 啟動、設密碼、驗證

service mysqld3306 start
service mysqld3307 start

/usr/local/mysql3306/bin/mysqladmin -u root password '123456'
/usr/local/mysql3306/bin/mysql -P3306 -S/tmp/mysql3306.sock -uroot -p123456

/usr/local/mysql3307/bin/mysqladmin -u root password '123456'
/usr/local/mysql3307/bin/mysql -P3307 -S/tmp/mysql3307.sock -uroot -p123456

# 端口驗證
lsof -i:3306
lsof -i:3307

9. 環境變量(可選)

echo "PATH=\$PATH:/usr/local/mysql3306/bin;export PATH" >> /etc/profile
source /etc/profile

多實例核心原則:端口、Socket、PID、數據目錄、配置文件、啟動腳本、服務名 全部隔離。編譯參數 --with-unix-socket-path 必須顯式指定,否則預設同一 Socket 衝突。

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