MySQL從
版本以後提供數據庫復制功能
利用該功能可以實現兩個數據庫同步
主從模式
互相備份模式的功能
實現數據同步備份
數據庫同步復制功能的設置都在mysql的設置文件中體現
mysql的配置文件(一般是f) 在Linux環境下在/etc/f 或者在mysql用戶的home目錄下面的f
設置方法 操作系統
RedHat Linux
mysql
mysql
standard
pc
linux
i
tar
gz
A Server:
主服務器master
B Server:
副服務器slave
A上已安裝好MySQL且已有數據庫
在B上安裝mysql
standard
安裝步驟可解壓後按INSTALL
BINARY上方法安裝mysql
我將其然後啟動 mysql
A服務器設置 #mysql –u root –p Master開放一個賬號dbbackup密碼
給IP:
有檔案處理的權限
mysql>GRANT ALL ON *
* TO dbbackup@
IDENTIFIED BY
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/f
[mysqld]
log
bin (生成
index文件
#設置需要記錄log 可以設置log
bin=c:\mysqlbak\mysqllog 設置日志文件的目錄
#其中mysqllog是日志文件的名稱
mysql將建立不同擴展名
文 件名為mysqllog的幾個日志文件
)
server
id=
sql
bin
update
same
binlog
do
db=forimage (#指定需要日志的數據庫為forimage)
啟動A服務器mysql
Bin/mysqld
safe –user=mysql server
id=
& (要指定server
id)
此時由於加入log
bin參數
因此開始生成index文件
在/usr/local/src/mysql/data目錄下有
index文件
檔案紀錄數據庫的異動log
#mysql –u root –p 用show master status 命令看日志情況
B服務器設置 設定/etc/f
[mysqld]
master
host=
master
user=dbbackup (#同步用戶帳號)
master
password=
master
port=
server
id=
master
connect
retry=
(預設重試間隔為
秒 )
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=
& (要指定server
id
與f對應)
show slave status看同步配置情況
#bin/mysql –u root
則在/usr/local/src/mysq/data/目錄會出現
此文件紀錄了Master MySQL server的信息
如有要修改相關slave的配置要先刪除該文件
否則修改的配置不能生效
狀況測試 A跟B網絡及服務都正常情況下
由A端變化數據後
到B端浏覽數據
檢查是否有數據變化
模擬B當機
或是B不一定需要一直跟A有連接
將由A端變化數據後
到B端浏覽數據
B點應該是沒有數據變化的
雙機互備模式 如果在A加入slave設置
在B加入master設置
則可以做B
>A的同步
在A的配置文件中 mysqld 配置項加入以下設置
master
host=
master
user=backup
master
password=
replicate
do
db=backup
master
connect
retry=
在B的配置文件中 mysqld 配置項加入以下設置
log
bin=c:\mysqllog\mysqllog
binlog
do
db=backup
注意
當有錯誤產生時*
err日志文件
同步的線程退出
當糾正錯誤後要讓同步機制進行工作
運行slave start
重啟AB機器
則可以實現雙向的熱備
測試 向B批量插入大數據量表AA(
)條
A數據庫每秒鐘可以更新
條數據
From:http://tw.wingwit.com/Article/program/MySQL/201311/29445.html