Linux利用mysqld_multi單機啟動多個MySQL實例

一、背景說明

??????? 以往在使用mysql時用的多的是僅僅使用一個mysql schema,或者多個schema,但一般都是在同一個數據庫實例中的,也就是同一個端口的。
??????? mysql雙機雙向熱備份中,機器甲上的myql schema(暫稱為A)需要作為熱備份(mysql replication)中的master節點,備份的mysql schema(暫稱為B)則存在另一臺機器乙上。那么雙向熱備中B也需要配置為master,A則配置為slave,說白了就是配置了兩遍熱備份,好,到這里機器甲的熱備已經搞定了,再輪到乙。我們說到機器乙上也有一個mysql schema(C),也要配置為master,并且備份schema放在機器甲上,但問題來了:備份的mysql schema(B)剛才在配置熱備時已經將mysql端口號與master 的角色綁定了,此時若配置C為master會將此前 配置B為master的操作覆蓋掉;然后在機器甲上配置C的備份數據庫(D)為master時,又會將 配置A為master的操作覆蓋了。
??????? 那么在此過程中,配置schema A 和B的雙向熱備分別在兩臺機器上的默認端口3306上完成,而配置schema C和D的雙向熱備時,則需要分別在兩臺機器上不同的mysql實例中完成(端口號不同),下面對啟動多個mysql實例進行說明。

二、實現步驟

(1)默認mysql已經安裝完成,基本配置已經實現。

(2)配置my.cnf (僅寫出本文相關的配置)

[mysqld_multi]    mysqld?=?/opt/mysql/server-5.6/bin/mysqld_safe?#根據自己的mysql目錄配置  mysqladmin?=?/opt/mysql/server-5.6/bin/mysqladmin    [mysqld1]  port?=?3307  socket?=?/tmp/mysql.sock1  pid-file???=?/opt/mysql/server-5.6/data3307/cloud3.pid3  basedir=/opt/mysql/server-5.6  datadir=/opt/mysql/server-5.6/data3307  log-bin=mysql1-9003-bin  user=cloud1    [mysqld2]  port?=?3308  socket?=?/tmp/mysql.sock2  pid-file???=?/opt/mysql/server-5.6/data3308/cloud3.pid2  basedir=/opt/mysql/server-5.6  datadir=/opt/mysql/server-5.6/data3308  log-bin=mysql2-9003-bin  user=cloud1

(3)初始化數據庫目錄(根據配置中目錄指向)

cd?/opt/mysql/server-5.6/;./scripts/mysql_install_db?--datadir=/opt/mysql/server-5.6/data3307?--user=cloud1  cd?/opt/mysql/server-5.6/;./scripts/mysql_install_db?--datadir=/opt/mysql/server-5.6/data3308?--user=cloud1

初始話成功,會提示ok,否則查看數據庫目錄是否有權限。

(4)啟動實例

使用如下參數來啟動mysqld_multi: (注:該命令在mysql的bin目錄中 ) 。

?mysqld_multi?[options]?[GNR[,GNR]...]

start,stop和report是指你想到執行的操作。你可以在單獨的服務或是多服務上指定一個操作,區別于選項后面的GNR列表。如果沒有指定GNR列表,那么mysqld_multi將在所有的服務中根據選項文件進行操作。
每一個GNR的值是組的序列號或是一個組的序列號范圍。此項的值必須是組名字最后的數字,比如說如果組名為mysqld17,那么此項的值則為 17。如果指定一個范圍,使用”-“(破折號)來連接二個數字。如GNR的值為10-13,則指組mysqld10到組mysqld13。

mysqld_multi?--defaults-file=/opt/mysql/server-5.6/my.cnf?start?1-2  或者  mysqld_multi?--defaults-file=/opt/mysql/server-5.6/my.cnf?start?1  mysqld_multi?--defaults-file=/opt/mysql/server-5.6/my.cnf?start?2

(5)修改密碼,登陸

mysqladmin?-u?root?-p?-P?3307?-S?/tmp/mysql.sock1?password??//剛開始默認沒有密碼,如果要輸入密碼,直接回車  mysql?-u?root?-p?-P?3307?-S?/tmp/mysql.sock1

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享