MySQL 5.5數據庫的主從復制
今天參照網上的資料進行mysql數據庫的主從復制研究,本來網上的資料已經很詳細,但是我在實踐中還是遇到了很多問題,下面就根據網上的資料以及我遇到的問題進行一個總結。
系統環境:Ubuntu12.04
軟件版本:mysql-server-5.5
主機IP:192.168.0.200
從機IP:192.168.0.201
操作:
1、主機操作:
1)、編輯mysql配置文件my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
注:網上還有一些其他的配置,但是為了偷懶只配置了這兩個重要的,當然這兩個也是必須的。
2)、用root登陸mysql執行下面的代碼
//建立一個用戶dean密碼123456,並賦予replication slave權限:
mysql>grant replication slave on *.* to 'dean'@'192.189.0.201' identified by '123456'; www.2cto.com
//讓權限立即生效
mysql>flush privileges;
//查詢二進制文件的文件名和狀態(後面要用)
mysql>show master status \G
File:mysql-bin.000006
Position:107
Binlog_Do_DB:
Binlog_Ignore_DB:
2、從機操作:
1)、編輯myslq配置文件my.cnf:
[mysqld]
server-id=2 //只要和主機不同即可
2)、登陸mysql,輸入以下命令:
a)、 mysql>change master to master_host='192.168.0.200',master_user='dean', \
master_password='123456',master_log_file='mysql-bin.000006',
master_log_pos=107;
b)、mysql>start slave;
c)、 mysql>show slave status \G
如果出現:Slave_IO_Running:Yes
Slave_SQL_Running:Yes
那麼說明沒有問題了,就可以在主機上面建庫建表寫測試數據,然後在從機上查詢看有沒有數據。一般是沒有問題了。
但是如果是出現:
Slave_IO_Running:Connecting
Slave_SQL_Running:Yes
那麼就表示主從服務有問題了,我也就是遇到這個問題下面是我的解決方案:
1)、在從機上直接遠程登陸主機mysql服務器:
#mysql -udean -h 192.168.0.200 -p123456
如果被拒絕那麼就需要檢查主機的用戶dean的權限、防火牆等設置是否正確。(我的被拒絕了)
2)、檢查權限。
用root登入mysql 並選擇mysql庫
mysql>use mysql;
查詢用戶的訪問 www.2cto.com
mysql>select host,user from user;
從查詢數據看沒有問題,有dean用戶 接受192.168.0.201的訪問
3)、防火牆設置
將端口為3306 的訪問設為允許
#sudo ufw allow 3306
將ip為192.168.0 .201的訪問設為允許
#sudo ufw allow 192.168.0.201
查看狀態
# sudo ufw status
設置完後還是從機還是不能直接遠程訪問主機
4)、查看端口監聽
#netstat -anpy|grep 3306
發現當前的端口3306只在127.0.0.1監聽,找到問題所在。修改mysql配置文件my.cnf將裡面的bind-address=127.0.0.1注釋調,重新察看端口監聽發現監聽是0.0.0.0:3306,好了測試一下果真可以進行遠程訪問。
重新進行主機從機的操作,但是發現在從機中不能進行第2步a操作,執行下面命令
mysql>stop slave;//關閉slave
mysql>reset slave;//重置slave
繼續執行a操作並往下繼續操作。
最終完成了Mysql 數據庫的主從復制。
另:根據網上資料顯示,如果主機在搭建主從復制前已經有數據需要先在主機上加鎖:
mysql>flush tables with read lock;
然後打包數據目錄並拷貝到從機上,然後解鎖。
作者 DeanJoson