半路出家到Java,剛開始聽說到說程式支援讀寫分離感覺特別高大上,也一直沒接觸
偶然的機會接觸到了,就一定得記下來。
今天先講講資料庫的主從同步,兩個好處:
- 是讀寫分離可以用上。比如 寫操作就寫到主要資料庫,讀就從從資料庫讀取
- 是純粹給Database Backup,以防硬碟徹底崩了
主從資料庫操作準備:
兩台電腦,都安裝好mysql 5.5及以上版本,最好兩台電腦都安裝同一版本資料庫,且能單獨正常使用
記住兩台電腦的ip地址:
以我家裡電腦為例: 主要資料庫: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形式呈現出來
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的協助,同時也希望多多支援雲棲社區!