一、背景說明
??????? 以往在使用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