mysql黄色版_Linux机上运行多个版本的MySQL
在同一臺服務器上部署多個MySQL服務,可以有效提高機器利用率。而且,將不同內容分屬不同服務上,也相對更安全些。
MySQL提供了mysqld_multi,但實際應用中沒有人用它。弊端:
1,暫停、重啟,會導致所有服務都停下來。
2,配置文件冗長,拆分、遷移時麻煩。
業內比較常用的方法是,將數據庫數據文件和配置文件,以及開啟關閉腳本,共同放在一個目錄下。啟動服務時,作為一個單獨的服務;關閉時對其他服務沒有影響。搬遷時,只要將這個目錄遷移到目標機器上就OK了。
一個典型的例子:
10.10.82.83 [server2]$ cat start.sh
#!/bin/sh
rundir="/opt/server2";
echo $rundir;
/usr/local/mysql/bin/mysqld_safe --defaults-file="$rundir"/my.cnf --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var --socket="$rundir"/mysql.sock --log-error="$rundir"/err.log --log-slow-queries="$rundir"/slow_query.log&
上例中使用的MySQL是按照官方建議安裝在/usr/local/mysql下的。
有時候需要在同一臺服務器上使用多個不同版本,比如,測試新版本等。按照以上邏輯,將新MySQLD安裝在 /usr/local/mysql-new下,修改 start.sh 為 /usr/local/mysql-new/bin/mysqld_safe。數據庫可以正常啟動,但是,觀察發現并不是新版本。原因何在?
官方的解釋是:需要下載源代碼版本,編譯時指定運行目錄。其實并非必須如此。
研究mysqld_safe文件,發現其邏輯為:
A,從命令行取配置參數
B,從配置文件取配置參數
C,對于mysqld的目錄(basedir)和數據文件目錄(datadir),如果以上都沒有在配置中指定,則先檢查當前目錄是否可用,否則設置/usr/local/mysql為默認。
所以,雖然使用的是mysql-new下的mysqld_safe,但運行的還是/usr/local/mysql/bin/mysqld,也就是舊版本。需要相應修改啟動腳本,或者是配置文件:
#!/bin/sh
rundir="/opt/server0";
echo $rundir;
/usr/local/mysql-new/bin/mysqld_safe --defaults-file="$rundir"/my.cnf --ledir=/usr/local/mysql-new/bin --basedir=/usr/local/mysql-new --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var --socket="$rundir"/mysql.sock --log-error="$rundir"/err.log --log-slow-queries="$rundir"/slow_query.log&
這樣就可以在同一臺機器上同時運行多個版本的Mysql了。
##--------------------------下面部份是我偶實驗出來滴...
上面部分和我自己的做法有點不同,但原理都是一樣,我在服務器上直接就用這樣一句 /usr/local/mysql5/bin/mysqld_safe --defaults-file=/etc/my5.cnf & 里面的那些參數全都設置到 my5.cnf文件里了,所以看起來短一些,其實最重要的是--defaults-file,這個參數了,開始不知道有這東東,害偶走了很多彎路.faint.
至于安裝mysql的時候我是帶的如下參數
./configure --prefix=/usr/local/mysql5 --localstatedir=/var/data/mysql5 --with-unix-socket-path=/tmp/mysql5.sock
這樣來區分開不同的數據庫的安裝路徑
如果還想可以使用 /etc/mysqld5 stop 之類的命令,就需要改 /etc/mysqld5 中的stop段,像下面這段代碼一樣(注意 pid_file='/var/data/mysql5/lookyellowpage.com.pid' #Jack added 這行是加進去了,里面的路徑你可以自己指定,目的是為了運行stop時它不去取 /etc/my.cnf 變量里的內容,因為取出來的東西有可能是其它數據庫服務的,有可能會出錯).
'stop')
# Stop daemon. We use a signal here to avoid having to know the
# root password.
# The RedHat / SuSE lock directory to remove
lock_dir=/var/lock/subsys/mysqlmanager
# If the manager pid_file doesn't exist, try the server's
if test ! -s "$pid_file"
then
pid_file=$server_pid_file
lock_dir=/var/lock/subsys/mysql
fi
pid_file='/var/data/mysql5/lookyellowpage.com.pid' #Jack added
echo $pid_file
if test -s "$pid_file"
then
mysqlmanager_pid=`cat $pid_file`
echo $mysqlmanager_pid
echo $echo_n "Shutting down MySQL"
kill $mysqlmanager_pid
# mysqlmanager should remove the pid_file when it exits, so wait for it.
wait_for_pid removed
# delete lock for RedHat / SuSE
if test -f $lock_dir
then
rm -f $lock_dir
fi
else
log_failure_msg "MySQL manager or server PID file could not be found!"
fi
;;
總結
以上是生活随笔為你收集整理的mysql黄色版_Linux机上运行多个版本的MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue参数传递
- 下一篇: mysql connection是什么_