abstract: 最近由于業(yè)務(wù)需求只有一臺(tái)服務(wù)器部署數(shù)據(jù)庫,不過為了確保數(shù)據(jù)有得到實(shí)時(shí)備份,以便于數(shù)據(jù)分析備份就使用了mysqld_multi來實(shí)現(xiàn)mysql的多實(shí)例以及同主機(jī)上的slave,這樣以后添加新的slave的時(shí)候就可以在不影響線上的服務(wù)時(shí)來進(jìn)行備份創(chuàng)建slave服務(wù)器,至于master與slave的同步設(shè)置以前有做過,在這里就不多做贅述了,需要可以參看:http://jim12
最近由于業(yè)務(wù)需求只有一臺(tái)服務(wù)器部署數(shù)據(jù)庫,不過為了確保數(shù)據(jù)有得到實(shí)時(shí)備份,以便于數(shù)據(jù)分析備份就使用了mysqld_multi來實(shí)現(xiàn)mysql的多實(shí)例以及同主機(jī)上的slave,這樣以后添加新的slave的時(shí)候就可以在不影響線上的服務(wù)時(shí)來進(jìn)行備份創(chuàng)建slave服務(wù)器,至于master與slave的同步設(shè)置以前有做過,在這里就不多做贅述了,需要可以參看:http://jim123.blog.51cto.com/4763600/1862808。
先說一下mysqld_multi,它可以通過監(jiān)聽不同的socket和tcp/ip的端口來連接mysqld進(jìn)程,這個(gè)在mysql的官網(wǎng)上可以找到詳細(xì)的文檔信息,在這里就簡單的說一下實(shí)現(xiàn)的過程以及一些注意點(diǎn)。因?yàn)閙ysql是共用my.cnf文件,所以使用mysqld_multi只要在my.cnf中添加相應(yīng)的配置就好。首先,先把mysld的配置復(fù)制下來,并且把mysqld的配置文件中的配置名字[mysqld]改成[mysqld1],然后再在下面添加[mysqld2]作為slave的配置文件,配置可以使用mysqld1的,但是有幾個(gè)地方要改一下,要修改地方如下:
[mysqld2] server-id = 2 #這個(gè)很重要,不能和master同一個(gè)ID port = 3307 socket = /tmp/mysql3307.sock log=slow-queries=/data/mysqldata3307/localhost-slow.log datadir = /data/mysqldata3307 #主要改的就是端口、ip、datadir的路徑和socket,其他的就是加上slave的相應(yīng)配置 [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin #添加上mysqld_safe和mysqladmin的路徑,這以便于在使用mysqld_multi的時(shí)候方便管理mysqld的相應(yīng)實(shí)例的啟動(dòng)和關(guān)閉
在修改好my.cnf配置文件后去basedir下的scripts目錄中對(duì)新實(shí)例執(zhí)行初始化
[root@localhost scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysqldata3307 --user=mysql --skip-name-resolve
然后再把mysqld的進(jìn)程停掉,使用mysqld_multi來對(duì)多實(shí)例mysqld進(jìn)行管理,用法很簡單:
mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...] or mysqld_multi [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...] 啟動(dòng): [root@localhost scripts]# mysqld_multi start 1-2 或 [root@localhost scripts]# mysqld_multi start 1 [root@localhost scripts]# mysqld_multi start 2
平時(shí)在登錄mysql的交互界面的時(shí)候使用指定socket文件登錄(http://jim123.blog.51cto.com/4763600/1855645),這樣mysqld多實(shí)例就部署完畢了,接下來就是mysqld多實(shí)例的slave的一些配置,要注意的是在同一臺(tái)主機(jī)上的ip是一樣主從的區(qū)別是他們的端口以及socket的不同所以在master上使用grant語句配置slave賬號(hào)時(shí)候給的host就要指定好,不然會(huì)出現(xiàn)ERROR 1133 (42000): Can't find any matching row in the user table的錯(cuò)誤,相應(yīng)的在slave上使用change master to語句的時(shí)候就要加上Master_Port = 3306用于區(qū)分,這樣同主機(jī)下的多實(shí)例的主從就部署完成了。