顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


主題 - rogertsao

頁: [1]
1
想請問各位學長!
在MySQL Replication的用法!
是備份資料庫!
那不知mysql的這個資料庫是否也可以備份!
1.不可以備份會有什麼問題?

2.可以備份但有什麼樣的條件?

不知道有沒有學長是有做過的,謝謝!

2
MySQL Replication(備份機制)

文件提到之內容
1.確認Master/Slave機器上所裝的MySQL版本能進行replication.Use Version 3.23.29 or 以上.
2.在Master MySQL上開放一個帳號給Slave


實作內容!
這個機制,我試了好久才試出來,其實原本就應該是成功的,但因為沒注意到一些小問題,才發生不能
Replication的情形!在這分享我的設定經驗給大家! :D

一.我要做什麼?
現在我有兩台電腦,分別為
A:192.168.0.1  (主電腦-master)
B:192.168.0.2 (備份電腦-slave)
我要將A的資料備份到B

二.我要怎麼做?
首先,我們要了解A要備份到B,A的mysql就要開個帳號和權限給B
這樣子B才可以去備份A的資料,至於mysql的設定大家要去買書了解一下喔!

1.那我們現在就來開個mysql的帳號給B!
代碼: [選擇]
mysql –u root –p
mysql>GRANT FILE ON *.* TO bslave@192.168.1.2 IDENTIFIED BY ‘slave123’;
mysql>\q

 
2.到my.cnf去做設定?
代碼: [選擇]
vi /etc/my.cnf

A的修改以下

代碼: [選擇]
##master
server-id=1
log-bin
sql-bin-update-same
##phpbb
binlog-do-db=phpbb


ps.如果有兩個以上資料庫要備份直接加入
代碼: [選擇]
##phpbb#1
binlog-do-db=phpbb1

##phpbb#2
binlog-do-db=phpbb2
.
.
.


A的修改以上

ps.如果你在 /etc 下找不到my.cnf , 請 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 再進行修改.


3.備份前的打包?
我們要把A主電腦(master),的資料庫打包起來並且複製到B備份電腦(slave)
打包前,為了可以完整的打包要先記得把mysql shutdown喔!
代碼: [選擇]
mysqladmin -u root -p shutdown

開始打包
代碼: [選擇]
tar -cvf /tmp/mysql-phpbb.tar /var/lib/mysql/phpbb
包好後可以去/tmp內找到mysql-phpbb.tar

4.啟動mysql
把mysql啟動起來吧!
代碼: [選擇]
/etc/rc.d/init.d/mysqld restart

ps.成功啟動後會在/var/lib/mysql/內看到.index and .001兩個檔案!


===================================

5.B備份電腦(slave)的設定?
在A打包好的mysql-phpbb.tar複製到B以後就可以解開來了?

代碼: [選擇]
cd /
tar xvf /tmp/mysql-phpbb.tar
cd /var/lib
chown -R mysql:mysql mysql


ps.成功的話會在/var/lib/mysql/內看到phpbb

6.到my.cnf去做設定?
在上面的步驟中,A有開個mysql的帳號給B,以下就是備份的設定?

B的修改以下
代碼: [選擇]
##slave
server-id=2
master-host=192.168.0.1
master-user=bslave
master-password=slave123
log-slave-updates
master-connect-retry=60

##phpbb
replicate-do-db=phpbb

B的修改以上

ps.如果有兩個以上資料庫要備份直接加入

代碼: [選擇]
##phpbb#1
replicate-do-db=phpbb1

##phpbb#2
replicate-do-db=phpbb2
.
.
.


7.停止和啟動mysql
先停止mysql
代碼: [選擇]
/etc/rc.d/init.d/mysqld stop

再啟動mysql
代碼: [選擇]
/etc/rc.d/init.d/mysqld restart

ps.成功後會在/var/lib/mysql/內看到master.info的檔案

=====================================
A的資料要備份到B做備份完成了(這就是單向備份了)
=====================================

三.兩台機器要備份一台機器的資料?
我有三台電腦A  B  C分別為
A主電腦
B備份1
c備份2

A設定如下
代碼: [選擇]
##master
server-id=1
log-bin
sql-bin-update-same
##phpbb
binlog-do-db=phpbb




B設定如下
代碼: [選擇]
##slave
server-id=2
master-host=192.168.0.1
master-user=bslave
master-password=slave123
log-slave-updates
master-connect-retry=60

##phpbb
replicate-do-db=phpbb



c設定如下
代碼: [選擇]
##slave
server-id=3
master-host=192.168.0.1
master-user=cslave
master-password=slave123
log-slave-updates
master-connect-retry=60

##phpbb
replicate-do-db=phpbb


ps.記得要多在A開個帳號給C喔!
======================================

四.雙向如何設定?
我有兩台電腦A B分別為
A主電腦和備份電腦
B主電腦和備份電腦

A的phpbb1要備份到B
B的phpbb2要備份到A


A設定如下
代碼: [選擇]
##master
server-id=1
log-bin
sql-bin-update-same
##phpbb
binlog-do-db=phpbb1

##slave
server-id=2
master-host=192.168.0.2
master-user=bslave
master-password=slave123
log-slave-updates
master-connect-retry=60

##phpbb
replicate-do-db=phpbb2
=============================

B設定如下
代碼: [選擇]
##master
server-id=1
log-bin
sql-bin-update-same
##phpbb
binlog-do-db=phpbb2

##slave
server-id=2
master-host=192.168.0.1
master-user=aslave
master-password=slave123
log-slave-updates
master-connect-retry=60

##phpbb
replicate-do-db=phpbb1


======================================
所有的檢查都很簡單,就是當主電腦(master)更動時,備份電腦(slave)是否有更動就可以
知道是否成功了,如果不成功大家只要依下面的方向去試應該都可以!
1.先把mysql先stop
2.把/var/lib/mysql/內的.index and .001 and master.info殺了!
3.把mysql restart吧!

在這感謝很多的在網路上供上自己的文件和經驗!
======================================
還有一種是由雙向replication延伸出replication chain/(circular),即A->B->C->…(->A)
觀念chain是單向replication的延伸, circular是chain的尾巴接回頭.

大家可以參考文件 http://www.study-area.org/tips/mysql_replication.htm

頁: [1]