1)在Slave 服務器上執行sart slave命令開啓主從複製開關,開始進行主從複製。mysql
2)此時,Slave服務器的IO線程會經過在master上已經受權的複製用戶權限請求鏈接master服務器,並請求從執行binlog日誌文件的指定位置(日誌文件名和位置就是在配置主從複製服務時執行change master命令指定的)以後開始發送binlog日誌內容。git
3)Master服務器接收到來自Slave服務器的IO線程的請求後,其上負責複製的IO線程會根據Slave服務器的IO線程請求的信息分批讀取指定binlog日誌文件指定位置以後的binlog日誌信息,而後返回給Slave端的IO線程。返回的信息中除了binlog日誌內容外,還有在Master服務器端記錄的IO線程。返回的信息中除了binlog中的下一個指定更新位置。github
4)當Slave服務器的IO線程獲取到Master服務器上IO線程發送的日誌內容、日誌文件及位置點後,會將binlog日誌內容依次寫到Slave端自身的Relay Log(即中繼日誌)文件(Mysql-relay-bin.xxx)的最末端,並將新的binlog文件名和位置記錄到master-info文件中,以便下一次讀取master端新binlog日誌時能告訴Master服務器重新binlog日誌的指定文件及位置開始讀取新的binlog日誌內容。sql
5)Slave服務器端的SQL線程會實時檢測本地Relay Log 中IO線程新增的日誌內容,而後及時把Relay LOG 文件中的內容解析成sql語句,並在自身Slave服務器上按解析SQL語句的位置順序執行應用這樣sql語句,並在relay-log.info中記錄當前應用中繼日誌的文件名和位置點。docker
解決:克隆代碼,修改配置文件服務器
如何確保每一個mysql服務的server_id不一樣,k8s在建立容器時,會爲每一個容器建立建立一個主機名( 如:gr78648d-0),建立多個容器後面的數字會依次遞增,因此能夠利用這一特性生成不一樣的server_id(主機名數字部分 + 環境變量數字),而後在maser和slave使用不一樣的環境變量數字數字便可。app
配置--》環境變量
ui