MariaDB 主從復制


MySQL Replication:NySQL復制,MySQL的復制默認為異步工作模式
   mysql的復制功能是mysql內置的,裝上它之后就具備了這個功能,而mysql復制是mysql實現大規模高性能應用的一個基本工具,是 mysql完成水平擴展的基本架構,為了能夠應付更多的訪問請求,通常情況下我們需要對服務器進行擴展,而擴展通常有兩種方式:向上擴展和向外擴展;
向上擴展:scale on,也稱為垂直擴展,一般是擴充服務器的內存或CPU顆數的這種就是向上擴展。
向外擴展:scale out,也稱為水平擴展,比較一台服務器不夠,再加一台服務器,再不夠再加,這種情況就是向外擴展。
其實MySQL的的復制功能就是使用MySQL向外擴展的能力,也就是水平擴展的功能。

   所謂同步的復制:首 先主服務器每更新一條數據先寫到磁盤文件中,同時還要寫一個到二進制日志文件中,從服務器就會到主服務器請求二進制信息保存在中繼日志中,保存好后由本地 的SQL thread從中繼日志應用到從服務器的本地有磁盤文件中,當這個過程完成之后再由從服務器返回確認結果給主服務器,主服務器才返回結果給客戶端的。
所謂異步復制:當主服務器要寫數據時,先寫到本地的磁盤,同時寫到二進制文件日志中,寫好二進制日志文件后就把結果返回給客戶端,至於從服務有沒有來主服務器同步二進制日志他不關心。
注意:在做復制時雙方的的MySQL要一致,如果不一致,主的要低於從的。
   MySQL主從服務的工作原理圖:

wKioL1NJSEbx9Dz0AAOohJbAW-w420.jpg

   這里還要注意,如果從服務器不斷的到主服務器來請求數據,發現這些數據已經是最新的數據了,那從服務器的I/O thread將會轉為睡眠狀態,因為主服務器會通知,而I/O線程不會做輪循,從服務器的二進制日志文件通常是被關閉狀態的,從服務器是不允許執行寫操作 的。

下面來完成主從復制的基本操作步驟:
   1、這里我們要有兩台主機、我這里使用克隆主服務器的主機當做從服務器、首先要把虛擬主機關機才可以克隆的:

wKiom1NJSNfwhN9ZAAJ_Vy_-uh0925.jpg

wKioL1NJSM3BkkBdAAEhlLpuEVw165.jpg

wKiom1NJSRGB-e8nAAD6IOmtor0934.jpg

 

   克隆完之后我們就開機登錄、確保主從服務器都正常運行了即可:
wKioL1NJSUrRFE7fAAF5yBfM-pU195.jpg

wKiom1NJSY3jwbtaAAFK_P1knII792.jpg

wKioL1NJSZriZVDuAADbv5yisnU563.jpg

wKioL1NJSbTinPbEAADegnAVVC0676.jpg

 

   2、做主從復制最重要的一點就是雙方的server-id不能相同;然而在主服務器上只需要三步
   1)就是改server-id
   2)啟用二進制日志
   3)創建有復制權限的帳號
   # vim /etc/my.cnf

wKioL1NJSenhMWMOAAEgWhtbavw995.jpg


   改好之后保存退出即可,再重啟服務器,創建二進制目錄:

   # mkdir /data/binlogs
   # chown -R mysql.mysql /data/binlogs
   重啟主服務器的mysql服務;
   # service mysqld restart 


   而后連接到主服務器上授權一個有復制權限的帳號:

  # mysql -uroot -hlocalhost -p    
MariaDB [hellodb]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'172.16.251.156' IDENTIFIED BY 'replpass';
MariaDB [hellodb]> FLUSH PRIVILEGES;

   3、在從服務器上有以下幾步
   1)改server-id
   2)啟用中繼日志
   3)連接主服務器
   4)啟動復制線程
   配置從服務器的相關配置信息:
   # vim /etc/my.cnf

wKioL1NJSkbBRXGvAAE5NomCrFo978.jpg

  # mkdir /data/relaylogs/
   # chown -R mysql.mysql /data/relaylogs
   重啟mysql服務:
   # service mysqld restart
   再連到從服務器的mysql服務器上:
   # mysql -uroot -hlocalhost -p
   查看一下從服務器的中繼日志是否在啟動狀態:
   MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE '%relay%';

 

wKioL1NJSw2w5rPgAAGcFF1JJ_k231.jpg

   按照上面的步驟再連接主服務器:    

# MASTER_HOST='172.16.251.244' --主服務器的IP地址
# MASTER_USER='repluser' --主服務器上授權復制的用戶名
# MASTER_PASSWORD='replpass' --主服務器上授權用名的密碼
# MASTER_LOG_FILE='mysql-bin.000006' --主服務器上的日志文件
# MASTER_LOG_POS=245 --主服務器上日志文件的位置
MariaDB [hellodb]> CHANGE MASTER TO MASTER_HOST='172.16.251.244',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000006',MASTER_LOG_POS=245; #指定日志從哪個位置開始復制

   但是此時的從服務器還沒有工作起來,要使從服務器工作起來還要手動啟動復制線程,我們上面的步驟寫得很明白:
   MariaDB [(none)]> START SLAVE;
   wKioL1NJTOqRskaJAAHjV-swIII836.jpg
   wKiom1NJTTPRBlyQAAE2gdqxSs4231.jpg

   wKioL1NJTSXS_-QWAAD1fdFHbcA279.jpg

   wKiom1NJTYaABWNsAAD15iPHxl4387.jpg

   OK、到這里主服務器算是配置完成了,倉促整理了一下,有什么不對的地方還望多多提點,在此先謝謝你的關注了!    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM