前面說了主從複製的原理,現在我們搭建主從結構
1. 提前準備
我準備了兩臺主機,主節點是遠程的centos7,從節點是本機windows
主從複製的原理在上一篇已經說了:主節點中mysql創建一個用戶,專門提供給從節點去複製主節點的binlog文件,然後從節點的io線程將獲取到的文件內容複製到自己的中繼日誌中,最後從節點的SQL線程讀取中繼日誌,同步數據;
2. 配置linux主節點
(1)登錄mysql,新建一個mysql賬號:GRANT REPLICATION SLAVE ON *.* to 'java'@'%' identified by '123456'; //這個賬號名是java,密碼是123456,所有遠程都可以通過這個賬號和密碼去讀主節點mysql中的binlog
(2)修改my.cnf配置文件
linux使用yum安裝的話,可以使用vim /etc/my.cnf 打開mysql的配置文件:
# id唯一 server-id=1 # 開啓binlog,同時日誌文件名爲my_bin_log log-bin=my_bin_log # 主從複製需要同步到從節點的數據庫 binlog-do-db=mydb binlog_format=STATEMENT
binlog_format有三種:
statement表示每一條增刪改的sql都會記錄到bin_log中,如果sql包含函數now(),那麼同步到從節點執行該sql會導致數據不一致;
row表示記錄最終每一行數據的變化,同步到從節點中的數據肯定一致;
mixed表示混合模式,sql中有函數就使用row模式,沒有函數就使用statement
(3)查詢主節點的binlog文件名和position;
爲什麼要知道這個position呢?因爲從節點就是從主節點的position這個位置開始同步的,主節點前面的其他操作都不會被同步,主從複製都搭建好了之後再創建數據庫!!!
(4)重啓主節點mysql服務: systemctl restart mysqld
3 配置windows從節點
(1)修改從節點的配置文件my.ini
# 從節點配置 server-id=2 # 從節點需要同步的庫,需要和主節點對應 replicate-do-db=mydb # 開啓從節點中繼日誌 relay-log=mysql-relay
(2)重啓從節點mysql服務:任務管理器->服務->mysql,右鍵,重新啓動
(3)登錄mysql,配置從節點連接主節點,使用我們在主節點配置的用戶,還有binlog文件名以及數據庫
# 配置主節點的ip,用戶名,密碼,binlog文件名,position change master to master_host='106.77.104.190',master_user='java',master_password='123456',master_log_file='my_bin_log.000001',master_log_pos=154;
(4)開啓從節點主從複製功能:start slave;
(5)查看從節點mysql服務狀態:show slave status\G;
4.測試
(1)主節點創建其他名字的數據庫,從節點不會同步
(2)主節點創建mydb數據庫,從節點會自動同步
(3)主節點在mydb庫中創建表,從節點會同步
(4)主節點向mydb庫中插入數據,從節點會同步
修改和刪除表中的數據,從節點也是會同步的,就不截圖了,有興趣的自己去試試;