在單台伺服器運行多個 MySQL 實例,需隔離安裝路徑、數據目錄、端口、Socket、配置文件與啟動腳本。本文以 MySQL 5.1.33 為例,演示雙實例(3306/3307)部署全過程。
# 用戶與解壓 groupadd mysql; useradd -g mysql mysql -s /bin/nologin -d /usr/local/mysql tar -zxvf mysql-5.1.33.tar.gz && cd mysql-5.1.33 # 編譯參數 ./configure --prefix=/usr/local/mysql \ --enable-assembler --with-extra-charsets=complex \ --enable-thread-safe-client --with-big-tables \ --with-readline --with-ssl --with-embedded-server \ --enable-local-infile --with-plugins=innobase make && make install # 權限與配置 chown -R mysql:mysql /usr/local/mysql cp support-files/my-medium.cnf /usr/local/mysql/my.cnf # 初始化與啟動 /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf & echo "/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &" >> /etc/rc.local # 設密碼與遠程帳號 ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql mysqladmin -u root password '1234' grant all on *.* to 'mysql3306'@'%' identified by 'mysql3306';
useradd -g mysql mysql3307 -s /bin/nologin -d /usr/local/mysql3307 tar -zxvf mysql-5.1.33.tar.gz && cd mysql-5.1.33 ./configure --prefix=/usr/local/mysql3307 \ --enable-assembler --with-extra-charsets=complex \ --enable-thread-safe-client --with-big-tables \ --with-readline --with-ssl --with-embedded-server \ --enable-local-infile --with-plugins=innobase make && make install chown -R mysql3307:mysql /usr/local/mysql3307 chmod -R 755 /usr/local/mysql3307 cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql3307/my.cnf
[mysqld] port = 3307 socket = /tmp/mysql3307.sock datadir = /usr/local/mysql3307/data pid-file = /usr/local/mysql3307/mysqld.pid
/usr/local/mysql3307/bin/mysql_install_db --basedir=/usr/local/mysql3307 --datadir=/usr/local/mysql3307/data --user=mysql3307 /bin/sh /usr/local/mysql3307/bin/mysqld_safe --defaults-file=/usr/local/mysql3307/my.cnf & echo "/bin/sh /usr/local/mysql3307/bin/mysqld_safe --defaults-file=/usr/local/mysql3307/my.cnf &" >> /etc/rc.local # 修正配置文件權限警告 chmod 644 /usr/local/mysql3307/my.cnf # 設密碼與連接測試 mysqladmin -P 3307 -S /tmp/mysql3307.sock -u root password '1q2w3e' grant all on *.* to 'mysql3307'@'%' identified by 'mysql3307';
/usr/local/mysql vs /usr/local/mysql3307datadir 分離/tmp/mysql.sock / /tmp/mysql3307.sockmy.cnf 獨立遵循「一實例一用戶、一目錄、一端口、一配置」原則,即可在單機穩定運行多個 MySQL 版本或實例。