|  
  1.安裝MySQL(http://www.linuxidc.com/Linux/2009-03/18988.htm) 
2.啟動(dòng)多個(gè)MySQL服務(wù)器 
    要實(shí)現(xiàn)在單機(jī)上啟動(dòng)多個(gè)MySQL服務(wù)器,有兩種方法,一種是直接使用mysqld_safe來運(yùn)行多個(gè)服務(wù)器- 
  
當(dāng)然這樣分別編輯配置文件,而且關(guān)閉服務(wù)器的時(shí)候也要讀取配置文件,所以比較麻煩,另一種方法是使用 
MySQL提供到工具mysqld_multi腳本來管理多個(gè)服務(wù)器,下面使用的方法是mysqld_safe來實(shí)現(xiàn)。 
3.前置條件 
    假設(shè)MySQL安裝到目錄為/usr/local/mysql/,設(shè)為MYSQL_DIR通常它是一個(gè)鏈接文件。 
    數(shù)據(jù)文件目錄為$MYSQL_DIR/data。 
現(xiàn)在要添加另一個(gè)服務(wù)器的數(shù)據(jù)目錄,因?yàn)闉榱四M分布式服務(wù)器到同步,不可能讓多個(gè)服務(wù)器共享一個(gè)數(shù)據(jù)目錄。 
$cd $MYSQL_DIR 
$sudo cp -r -p data var2 
    上面的指令將data保留原來到權(quán)限復(fù)制一份到var2,var2也就是另一個(gè)服務(wù)器的數(shù)據(jù)目錄,這樣,在原始 
狀態(tài)下,兩個(gè)數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)是一致的。 
4.假設(shè)有MySQL的合法用戶root:root。 
5.啟動(dòng)安裝好以后的那個(gè)服務(wù)器 
    $cd $MYSQL_DIR/bin 
    $sudo ./mysqld_safe --user=mysql --binlog-do-db=test & 
    上面的命令表示啟動(dòng)服務(wù)器并且使用二進(jìn)制日志記錄數(shù)據(jù)庫test的更新動(dòng)作。 
6.測試是否啟動(dòng)成功 
    $mysql -u root -p -S/tmp/mysql.sock  
    輸入密碼后,如果能夠成功登錄的話表示成功,這里最容易出現(xiàn)2002錯(cuò)誤,表示socket文件錯(cuò)誤,你可以 
使用命令 
    $ps aux|grep mysql 
來查看當(dāng)前服務(wù)器使用的socket文件,然后在登錄的時(shí)候使用相應(yīng)的socket文件。 
7.編輯配置文件 
    $sudo vi /etc/my.cnf 
最初的時(shí)候,這個(gè)配置文件是針對前面啟動(dòng)的服務(wù)器的,現(xiàn)在我們把它修改一下,然后就可以啟動(dòng)另一個(gè)服務(wù)器 
找到[mysqld]段落,然后修改如下: 
[mysqld] 
server-id=2    #原來是1 
socket=/tmp/mysql.sock2    #原來是/tmp/mysql.sock 
port=3307                #原來是3306 
#下面3行是添加的 
pid-file=$MYSQL_DIR/var2/localhost.pid2 
datadir=$MYSQL_DIR/var2 
log=$MYSQL_DIR/var2/db2.log 
    注意使用最前面的MySQL安裝目錄來代替上面的$MYSQL_DIR。 
8.啟動(dòng)第二個(gè)服務(wù)器 
    $cd $MYSQL_DIR/bin 
    $sudo ./mysqld_safe --user=mysql  & 
9.測試第二個(gè)服務(wù)器 
    $mysql -u root -p -P 3307 -S /tmp/mysql.sock2 
    輸入密碼后,應(yīng)該能夠正確連接到mysql服務(wù)器。 
現(xiàn)在,兩個(gè)服務(wù)器能夠正常的運(yùn)行在同一臺(tái)機(jī)器上了,剩下的就是配置主從服務(wù)器,然后讓主服務(wù)器更新,從服務(wù)器 
連接主服務(wù)器并且保持同步。 
10.同步服務(wù)器 
    注意到我們啟動(dòng)第一個(gè)服務(wù)器的時(shí)候使用了一個(gè)參數(shù)--binlog-do-db=test表示,我們希望把數(shù)據(jù)庫test的更新 
操作都記錄到二進(jìn)制日志文件中。 
    1)登錄到主服務(wù)器 
        $mysql -u root -p -P 3306 -S /tmp/mysql.sock 
    2)查看主服務(wù)器的狀態(tài)     
        mysql>show processlist\G 
            上面這條命令執(zhí)行后應(yīng)該看到至少兩個(gè)線程,第一個(gè)就是登錄的線程,第二個(gè)就是發(fā)送二進(jìn)制日志 
            的線程。 
        mysql>flush tables with read lock; 
        mysql>show master status; 
        mysql>unlock tables; 
    記住show master status\G命令輸出的結(jié)果,這里的File是二進(jìn)制日志文件,Position是偏移量,Binlog_Do_DB 
表示對哪些數(shù)據(jù)庫記錄更新操作,Binlog_Ignore_DB表示忽略哪些數(shù)據(jù)庫更新。待會(huì)兒配置從服務(wù)器時(shí)要使用File和 
Position。 
    3)登錄到從服務(wù)器 
        $mysql -u root -p -P 3307 -S /tmp/mysql.sock2 
    4)配置從服務(wù)器 
        首先要確保停止從服務(wù)器同步線程 
        mysql>stop slave; 
        然后設(shè)置主服務(wù)器參數(shù) 
        mysql>change master to 
            ->master_host='127.0.0.1', 
            ->master_user='root', 
            ->master_password='root', 
            ->master_log_file='mysql-bin.000016', 
            ->master_log_pos=102; 
        最后啟動(dòng)從服務(wù)器同步線程 
        mysql>start slave; 
        檢查從服務(wù)器同步線程是否啟動(dòng)成功 
        mysql>show slave status\G 
            如果從上面的輸出中看到了IO線程和LOG線程都是YES的話,那么表示啟動(dòng)成功,最后一行輸出表示從服務(wù)器 
            比主服務(wù)器滯后多少。 
        查看線程 
        mysql>show processlist; 
            當(dāng)從服務(wù)器同步成功啟動(dòng)以后,上面這條命令應(yīng)該輸出至少3個(gè)線程,第一個(gè)是登錄線程,第二個(gè)是IO線程,第 
            三個(gè)是日志線程。 
11.測試同步 
    在主服務(wù)器中的數(shù)據(jù)庫test中任意執(zhí)行一些更新操作,然后在從服務(wù)器中查看,應(yīng)該馬上就能夠看到更新結(jié)果 
   本文出自:億恩科技【www.cmtents.com】 
      
      
		服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] 
       |