今天參照網上的資料進行mysql數據庫的主從複製研究,原本網上的資料已經很詳細,可是我在實踐中仍是遇到了不少問題,下面就根據網上的資料以及我遇到的問題進行一個總結。mysql
系統環境:Ubuntu12.04sql
軟件版本:mysql-server-5.5數據庫
主機IP:192.168.0.200服務器
從機IP:192.168.0.201ide
操做:測試
一、主機操做:server
1)、編輯mysql配置文件my.cnfip
[mysqld]it
server-id=1io
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';
//讓權限當即生效
mysql>flush privileges;
//查詢二進制文件的文件名和狀態(後面要用)
mysql>show master status \G
File:mysql-bin.000006
Position:107
Binlog_Do_DB:
Binlog_Ignore_DB:
二、從機操做:
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;
查詢用戶的訪問
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;
而後打包數據目錄並拷貝到從機上,而後解鎖。