1. 程式人生 > >Linux中的Mariadb資料庫的主備

Linux中的Mariadb資料庫的主備

對於一個mysql伺服器, 一般有兩個執行緒來負責複製和被複制。當開啟複製之後。 MySQL 複製的基本過程如下:   1. Slave 上面的IO執行緒連線上 Master,並請求從指定日誌檔案的指定位置(或者從最開始的日誌)之後的日誌內容;        2. Master 接收到來自 Slave 的 IO 執行緒的請求後,通過負責複製的 IO 執行緒根據請求資訊讀取指定日誌指定位置之後的日誌資訊,返回給 Slave 端的 IO 執行緒。返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊在 Master 端的 Binary Log 檔案的名稱以及在 Binary Log 中的位置;   3. Slave 的 IO 執行緒接收到資訊後,將接收到的日誌內容依次寫入到 Slave 端的Relay Log檔案(mysql-relay-bin.xxxxxx)的最末端,並將讀取到的Master端的bin-log的檔名和位置記錄到master- info檔案中,以便在下一次讀取的時候能夠清楚的告訴Master“我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我”    4. Slave 的 SQL 執行緒檢測到 Relay Log 中新增加了內容後,會馬上解析該 Log 檔案中的內容成為在 Master 端真實執行時候的那些可執行的 Query 語句,並在自身執行這些 Query。這樣,實際上就是在 Master 端和 Slave 端執行了同樣的 Query,所以兩端的資料是完全一樣的。     配置 主庫:     vi /etc/my.conf   1、配置檔案裡面加入以下兩行     server-id=1     log-bin=MySQL-bin     ##開啟二進位制日誌檔案   2、建立賬戶     grant replication client,replication slave on *.* to [email protected]'從庫ip' identified by 'root';       3、檢視主庫狀態              show master status\G   從庫:   1、配置檔案加上以下幾行     server-id=2     relay-log=relay-bin        ##中繼日誌     read-only =1                ##只讀模式              ##replicate-do-db = 123            指定那些庫需要複製     replicate-ignore-db = mysql                      不復制的庫     replicate-ignore-db = performance_schema                        不復制的庫     replicate-ignore-db = information_schema  不復制的庫     replicate-wild-do-table = 資料庫名字.表名字 // 所要同步的資料庫的單個表,可以加多行就是多個     2、從庫關聯主庫     change master to master_host='主庫ip',master_user='rep',master_password='root';     3、檢查     show slave status\G; 做完以後,重啟所有節點的資料庫  systemctl restart mariadb.service   在備節點上檢視資料庫的執行狀態 show slave status\G   在備伺服器上 啟動同步 start slave;   關閉同步 stop slave;   重啟同步 reset slave;