「HOW-TO」
    好了廢話不多說,我們現在就直接進行實做好了...
    pre-condition : 為了減少麻煩,master & Slave 最好版本是一致的
   


    1. 建立Replication的帳號
            因為Slave 要跟Master 要資料所以他需要具有 Access master 的權限

        mysql>Grant replication slave on *.*
        mysql>to 'urID'@'oo.xx.yy.zz' IDENTIFIED BY 'urpasswd';


        註:
            urID:就是replication 要使用的帳號
            oo.xx.yy.zz :指的就是Slave  ip 建議採用IP
            ==>注意這裡,也是可以用 FQDN or Host name 但是 不要用好了因為速度會快一點點,
            而且減少錯誤機會               
            urpasswd : 這個我就不想說了,如果不知道.. 就表示你不會用MySQL 教了也沒有用唷

    2. 更改MySQL 的設定檔(因為版本眾多,反正就是 my.cnf 我的例子是在gentoo的Portage裝的所以他會是/etc/mysql/my.cnf。)
        分為兩個部份  Master( 目標的Server ) && Slave( 複製或說備份的Server )

        Master MySQL 上的設定 ,這個設定完請restart Master MySQL
        ***************       
        [mysqld]
        #Replication Setting
        log-bin
        server-id   = 1  #編號啦
        ***************       
        Master 上的設定比較簡單
        複雜的是Slave 上的設定就比較複雜
       
        slave MySQL 上的設定
        ***************       
        [mysqld]
        #Slave MySQL Setting
        server-id   = 2
        master-host= skypedb        #建議打IP 要不就是你需要在Hosts 上增加這一筆Entry
        master-user= urID        #見步驟一
        master-password=urpasswd    #見步驟一
        master-port=3306
        replicate-do-db=targetDB    #準備要複製或備份的DB
        replicate-ignore-db     = mysql #複製時要略過的DB,為什麼不複製Mylsq 這一個DB
                        #原因是,MySQL的管理資料都是存放在這一個地方
                        #如USER權限,可以從什麼地方Access..等,所以我們忽略不Replicat
       
        ***************       
   
    3. 開始作業(以下作法,有部份異於MySQL的官方作法,可以參考MySQL 的Reference)
        a. 鎖定資料庫, 因為這樣一來,Binary Log 就不會因為新增刪除修改而長大(因為只能讀,binary就不會增加)
          FLUSH TABLES WITH READ LOCK;
        b. 把datafile copy 和打包 搬到Salve 上去然後解包<不知道大陸是怎麼說解壓縮的咧..呵呵>(targetDB 為目標資料庫)
          tar -cjvf targetDB.bz2 /var/lib/mysql/targetDB
          然後搬到Slave 上去 ,隨便你用 scp 或是用 rsync 最好是你的Server 上還有開FTP啦
         (這是反諷法唷,不要真的開FTP,開了就暈了)
         解開放到 /var/lib/mysql 下面
         解開語法 tar -jxvf targetDB.bz2 
         註:請確定  /var/lib/mysql/targetDB  的owner 一定要是  mysql:mysql ,
         so 我的作法是 chown -R mysql:mysql /var/lib/mysql/targetDB 
        C. 這個時候請 Restart Slave
          MySQL -u root -e"start Salve"
          這個時候如果設定沒有錯誤的話
          這一組Replication 就會完成了
        d. 在Master & Slave上 分別在MySQL
          MySQL>SHOW MASTER STATUS
          MySQL>SHOW SLAVE STATUS
          如果都正常 的話
        e. 在master 上unlock tables
          MySQL>UNLOCK TABLES;
         Mysql Master 已經可以正程讀寫
創作者介紹
創作者 Online @ 一百零五號 的頭像
mail2michael

Online @ 一百零五號

mail2michael 發表在 痞客邦 留言(0) 人氣( 2941 )