RedHatLinux下實現MySQL資料庫映象(轉)

BSDLite發表於2007-08-11
RedHatLinux下實現MySQL資料庫映象(轉)[@more@]  MySQL從3.23.15版本以後提供資料庫複製功能,利用該功能可以實現兩個資料庫同步,主從模式,互相備份模式的功能。實現資料同步備份。
  資料庫同步複製功能的設定都在mysql的設定檔案中體現。mysql的配置檔案(一般是my.cnf) 在Linux環境下在/etc/my.cnf 或者在mysql使用者的home目錄下面的my.cnf.
  
  設定方法:
  作業系統: RedHat Linux 9 mysql:mysql-standard-4.0.18-pc-linux-i686.tar.gz
  A Server: 192.168.0.1 主伺服器master
  B Server: 192.168.0.10 副伺服器slave
  A上已安裝好MySQL且已有資料庫,在B上安裝mysql-standard-4.0.18, 安裝步驟可解壓後按INSTALL-BINARY上方法安裝mysql,我將其然後啟動 mysql.
  
  A伺服器設定
  #mysql –u root –p Master開放一個賬號dbbackup密碼123456給IP:192.168.0.10有檔案處理的許可權. mysql>GRANT ALL ON *.* TO dbbackup@192.168.0.10 IDENTIFIED BY‘123456’ mysql>exit
  #mysqladmin –u root –p shutdown
  備份Master所有資料庫..通常都用tar指令. (注意:tar的時候,MySQL是要在stop情況下)
  #tar zcvf /tmp/mysql.tar.gz /usr/local/src/mysql/data
  在A機器上修改/etc/my.cnf
  [mysqld]
  log-bin (生成.index檔案。#設定需要記錄log 可以設定log-bin=c:mysqlbakmysqllog 設定日誌檔案的目錄,
  #其中mysqllog是日誌檔案的名稱,mysql將建立不同副檔名,文 件名為mysqllog的幾個日誌檔案。)
  server-id=1
  sql-bin-update-same
  binlog-do-db=forimage (#指定需要日誌的資料庫為forimage)
  啟動A伺服器mysql: Bin/mysqld-safe –user=mysql server-id=1 & (要指定server-id)
  此時由於加入log-bin引數,因此開始生成index檔案,在/usr/local/src/mysql/data目錄下有.index檔案。檔案紀錄資料庫的異動log. #mysql –u root –p 用show master status 命令看日誌情況。
  
  B伺服器設定
  設定/etc/my.cnf
  [mysqld]
  master-host=192.168.0.1
  master-user=dbbackup (#同步使用者帳號)
  master-password=123456
  master-port=3306
  server-id=2
  master-connect-retry=60 (預設重試間隔為60秒 )
  replicate-do-db=forimage (只對資料庫forimage更新 )
  log-slave-updates
  
  copy A上的/tmp/mysql.tar.gz 到B上的MySQL安裝目錄的data/下,並解壓縮覆蓋data/
  #chown –R mysql /usr/local/src/mysql/data/
  #cd /usr/local/src/mysql/
  #chown –R root:mysql .
  重啟B伺服器的mysql: #bin/mysqladmin –u root shutdown #bin/mysql-safe –user=mysql server-id=2 & (要指定server-id,與my.cnf對應)
  
  show slave status看同步配置情況。
  #bin/mysql –u root
  則在/usr/local/src/mysq/data/目錄會出現master.info,此檔案紀錄了Master MySQL server的資訊. 如有要修改相關slave的配置要先刪除該檔案. 否則修改的配置不能生效。
  
  狀況測試:
  1.A跟B網路及服務都正常情況下,由A端變化資料後,到B端瀏覽資料,檢查是否有資料變化。
  2.模擬B當機,或是B不一定需要一直跟A有連線.將由A端變化資料後,到B端瀏覽資料,B點應該是沒有資料變化的。
  
  雙機互備模式
  如果在A加入slave設定,在B加入master設定,則可以做B->A的同步。
  在A的配置檔案中 mysqld 配置項加入以下設定:
  master-host=10.10.10.53
  master-user=backup
  master-password=1234
  replicate-do-db=backup
  master-connect-retry=10
  在B的配置檔案中 mysqld 配置項加入以下設定:
  log-bin=c:mysqllogmysqllog
  binlog-do-db=backup
  
  注意:當有錯誤產生時*.err日誌檔案。同步的執行緒退出,當糾正錯誤後要讓同步機制進行工作,執行slave start
  重啟AB機器,則可以實現雙向的熱備。
  
  測試:
  向B批次插入大資料量表AA(1872000)條, A資料庫每秒鐘可以更新2500條資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-945872/,如需轉載,請註明出處,否則將追究法律責任。

相關文章