windows下mysql 主從同步

半路出家到Java,剛開始據說到說程序支持讀寫分離感受特別高大上,也一直沒接觸mysql

偶然的機會接觸到了,就必定得記下來。sql

 

今天先講講數據庫的主從同步,兩個好處:數據庫

    一是讀寫分離能夠用上。好比 寫操做就寫到主數據庫,讀就從從數據庫讀取服務器

           二是純粹給數據庫備份,以防硬盤完全崩了網絡

 

主從數據庫操做準備:ide

兩臺電腦,都安裝好mysql 5.5及以上版本,最好兩臺電腦都安裝同一版本數據庫,且能單獨正常使用測試

記住兩臺電腦的ip地址:spa

以我家裏電腦爲例: 主數據庫:192.168.0.102   從數據庫:192.168.0.104命令行

 

【主數據庫下操做】線程

步驟一:

在主數據庫mysql安裝目錄下找到my.ini文件打開,在mysqld下添加主服務器配置

server-id=1    #服務器 id 
log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin    #二進制文件存放路徑
binlog-do-db=test1    #待同步的數據庫

保存並重啓mysql服務後你能夠在C:\Program Files\MySQL\MySQL Server 5.5 下看到mysql-bin.index 文件和mysql-bin.000001文件

 

輸入用戶名和密碼:mysql -u用戶名 -p密碼 (    mysql -uroot -proot   )

 

 

步驟二,

給要鏈接的從服務器設置權限:grant replication slave,reload,super on *.* to slave@192.168.0.104 identified by 'root';    

ps: 給主機192.168.0.104添加權限,用戶名:slave,密碼:root;(只需輸入一次就能夠了)

 

步驟三,

輸入命令 show master status;       # 找到File 和 Position 的值記錄下來;

 

【從數據庫上操做】

步驟四:

在mysql下找到my.ini文件,在其[mysqld] 下添加從服務器端配置:

server-id=2    #服務器 id ,不能和主服務器一致
replicate-do-db=test1    #待同步的數據庫

保存並重啓mysql服務

 

步驟五:

從服務器上測試:mysql -u slave -p root -h 192.168.0.102,查看可否鏈接主數據庫成功,

而後輸入exi退出mysql命令行或者關閉該cmd窗口新開一個cmd

 

步驟六:

修改對主數據庫的鏈接的參數:mysql>change master to master_host='192.168.0.104',master_user='slave',master_password='root', master_log_file='mysql-bin.000001',master_log_pos=107;(這裏輸入的mysql-bin.000001和107請替換爲步驟三中查詢出來的值 不然不會同步的)  

ps:可能會報一個錯誤,大概的意思是說slave線程正在運行,不能設置,這樣的話,執行mysql>stop slave; 中止slave線程,而後再設置鏈接的參數;

 

步驟七:

設置完以後,執行 mysql> start slave; 開啓slave線程;執行mysql> show slave status\G   (沒有分號),查看

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
這是詳細的步驟,若是不成功 請聯繫我幫你解決,按照這個步驟 只要兩個電腦網絡互通,應該不會有問題的

 

不過須要注意的是:

若是對從數據庫進行修改,是不會同步對主數據庫進行修改的,這樣就應該用主-主同步了,方法相似,

因此insert,delete update 都應該是對主數據庫的操做, 而select操做則對從表進行操做

 

具體程序中怎麼實現讀寫分離,後續我將以具體demo形式呈現出來

相關文章
相關標籤/搜索