這個需求是這樣子產生的:某一個客戶需要客製化my.cnf檔。但是my.cnf檔的設定又會一次套用到所有的客戶上。
我查詢的關鍵字是 running multiple mysql instances on one server
參考資料 ( 這個參考資料只能當參考,我實測之後,有許多細節不同。)
修改的步驟:
(1) mkdir /var/lib/mysql2
chown mysql.mysql /var/lib/mysql2
(2) cp /etc/my.cnf /etc/my2.cnf
修改/etc/my2.cnf 的內容:
datadir=/var/lib/mysql2
port=3307
(3) cp /etc/init.d/mysql /etc/init.d/mysql2
修改/etc/init.d/mysql2 的內容:
- 有mysqld_safe的這一行必須特別修改: $bindir/mysqld_safe –datadir=”$datadir” –socket=”/var/lib/mysql2/mysql.sock” –pid-file=”$mysqld_pid_file_path” –port=”3307″ $other_args >/dev/null 2>&1 &
- 修改所有的my.cnf 這個字串成為 my2.cnf
- 修改 datadir=/var/lib/mysql 為 datadir=/var/lib/mysql2
- 修改 lock_file_path=”$lockdir/mysql” 為 lock_file_path=”$lockdir/mysql2″
(4) chkconfig –add mysql2
(5) 理論上,要用mysql_install_db的指令來安裝新的default mysql database
mysql_install_db –datadir=/var/lib/mysql2 –defaults-file=/etc/my2.cnf –user=mysql
但是,實際上,我這樣子做之後,還是有問題,所以我後來沒使用這個指令。我把/var/lib/mysql2 這個資料夾清空之後,
cp -a /var/lib/mysql/performance_schema /var/lib/mysql2
cp -a /var/lib/mysql/mysql /var/lib/mysql2
(6) service mysql2 start
(7) mysql -h127.0.0.1 -P3307
如果可以順利登入的話,
mysql> show databases;
理論上,如果是只出現
mysql
information_schema
performance_schema
三個資料庫的話,這樣子就代表設置成功了!