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
[email protected] 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:\mysqlbak\MySQLlog 設置日志文件的目錄,
#其中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:\mysqllog\MySQLlog
binlog-do-db=backup
注意:當有錯誤產生時*.err日志文件。同步的線程退出,當糾正錯誤後要讓同步機制進行工作,運行slave start
重啟AB機器,則可以實現雙向的熱備。
測試:
向B批量插入大數據量表AA(1872000)條, A數據庫每秒鐘可以更新2500條數據。