成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL主從復制:使用場景、原理和實踐

數據庫 MySQL
MySQL數據庫的主從復制方案,和使用scp/rsync等命令進行的文件級別復制類似,都是數據的遠程傳輸,只不過MySQL的主從復制是其自帶的功能,無需借助第三方工具,而且,MySQL的主從復制并不是數據庫磁盤上的文件直接拷貝,而是通過邏輯的binlog日志復制到要同步的服務器本地,然后由本地的線程讀取日志里面的SQL語句重新應用到MySQL數據庫中。

MySQL數據庫的主從復制方案,和使用scp/rsync等命令進行的文件級別復制類似,都是數據的遠程傳輸,只不過MySQL的主從復制是其自帶的功能,無需借助第三方工具,而且,MySQL的主從復制并不是數據庫磁盤上的文件直接拷貝,而是通過邏輯的binlog日志復制到要同步的服務器本地,然后由本地的線程讀取日志里面的SQL語句重新應用到MySQL數據庫中。

1.1.1 MySQL主從復制介紹

MySQL數據庫支持單向、雙向、鏈式級聯、環狀等不同業務場景的復制。在復制過程中,一臺服務器充當主服務器(Master),接收來自用戶的內容更新,而一個或多個其他的服務器充當從服務器(Slave),接收來自主服務器binlog文件的日志內容,解析出SQL重新更新到從服務器,使得主從服務器數據達到一致。

如果設置了鏈式級聯復制,那么,從(slave)服務器本身除了充當從服務器外,也會同時充當其下面從服務器的主服務器。鏈式級復制類似A→B→C的復制形式。

MySQL主從復制介紹:使用場景、原理和實踐

1.1.2 MySQL主從復制的企業應用場景

MySQL主從復制集群功能使得MySQL數據庫支持大規模高并發讀寫稱為可能,同時有效地保護了物理服務器宕機場景的數據備份。

應用場景1:從服務器作為主服務器的實時數據備份

主從服務器架構的設置,可以大大加強MySQL數據庫架構的健壯性。例如:當主服務器出現問題時,我們可以人工或設置自動切換到從服務器繼續提供服務,此時從服務器的數據和宕機時的主數據庫幾乎是一致的。

這類似NFS存儲數據通過inotify+rsync同步到備份的NFS服務器,只不過MySQL的復制方案是其自帶的工具。

利用MySQL的復制功能做備份時,在硬件故障、軟件故障的場景下,該數據備份是有效的,但對于人為地執行drop、delete等語句刪除數據的情況,從庫的備份功能就沒有用了,因為從服務器也會執行刪除的語句。

應用場景2:主從服務器實時讀寫分離,從服務器實現負載均衡

主從服務器架構可通過程序(PHP、Java等)或代理軟件(mysql-proxy、Amoeba)實現對用戶(客戶端)的請求讀寫分離,即讓從服務器僅僅處理用戶的select查詢請求,降低用戶查詢響應時間及讀寫同時在主服務器上帶來的訪問壓力。對于更新的數據(例如update、insert、delete語句)仍然交給主服務器處理,確保主服務器和從服務器保持實時同步。

MySQL主從復制介紹:使用場景、原理和實踐

應用場景3:把多個從服務器根據業務重要性進行拆分訪問

可以把幾個不同的從服務器,根據公司的業務進行拆分。例如:有為外部用戶提供查詢服務的從服務器,有內部DBA用來數據備份的從服務器,還有為公司內部人員提供訪問的后臺、腳本、日志分析及供開發人員查詢使用的從服務器。這樣的拆分除了減輕主服務器的壓力外,還可以使數據庫對外部用戶瀏覽、內部用戶業務處理及DBA人員的備份等互不影響。具體可以用下圖說明:

MySQL主從復制介紹:使用場景、原理和實踐

2.1 實現MySQL主從讀寫分離的方案

(1)通過程序實現讀寫分離(性能和效率***,推薦)

PHP和Java程序都可以通過設置多個連接文件輕松地實現對數據庫的讀寫分離,即當語句關鍵字為select時,就去連接讀庫的連接文件,若為update、insert、delete時,則連接寫庫的連接文件。

通過程序實現讀寫分離的缺點就是需要開發人員對程序進行改造,使其對下層透明,但這種方式更容易開發和實現,適合互聯網業務場景。

(2)通過開源軟件實現讀寫分離

MySQL-proxy、Amoda、Mycat、Altas等代理軟件也可以實現讀寫分離功能,這些軟件的穩定性和功能一般,不建議生產使用。絕大多數公司常用的還是應用端開發程序實現讀寫分離。

(3)大型門戶獨立開發DAL層綜合軟件

百度、阿里等大型門戶都有開發牛人,會花大力氣開發適合自己業務的讀寫分離、負載均衡、監控報警、自動擴容,自動收縮等一系列功能的DAL層軟件。

MySQL主從復制介紹:使用場景、原理和實踐

3.1 MySQL主從復制原理介紹

MySQL的主從復制是一個異步的復制過程(雖然一般情況下感覺是實時的),數據將將從一個MySQL數據庫(我們稱之為Master)復制到另一個MySQL數據庫(我們稱之為Slave),在Master于Slave之間實現整個主從復制的過程是由三個線程參與完成的。其中有兩個線程(SQL和IO線程)在Slave端,另外一個線程(I/O線程)在Master端。

要實現MySQL的主從復制,首先必須打開Master端的Binlog記錄功能,否則就無法實現。因為整個復制過程實際上就是Slave從Master端獲取BInlog日志,然后再在Slave上以相同順序執行獲取的binlog日志中記錄的各種SQL操作。

要打開MySQL的BInlog記錄功能,可通過在MySQL的配置文件my.cnf中的mysqld模塊增加“log-bin”參數選項來實現,具體信息如下:

 

  1. [mysqld]  
  2. log-bin 

 

3.2 MySQL主從復制原理過程詳細描述

下面簡單描述下MySQL Replication的復制原理過程。

1)在Slave服務器上執行start slave命令開啟主從復制開關,主從復制開始進行。

2)此時,Slave服務器的I/O線程會通過在Master上己經授權的復制用戶權限請求連接Master服務器,并請求從指定Binlog日志文件的指定位罝(日志文件名和位置就是在配罝主從復制服務時執行change master命令指定的)之后開始發送Binlog日志內容。

3)Master服務器接收到來自Slave服務器的I/O線程的請求后,其上負責復制的I/O線程會根據Slave服務器的I/O線程請求的信息分批讀取指定Binlog日志文件指定位置之后的Binlog日志信息,然后返回給Slave端的I/O線程。返回的信息中除了Binlog日志內容外,還有在Master服務器端記錄的新的Binlog文件名稱以及在新的Binlog中的下一個 指定更新位置。

4)當Slave服務器的I/O線程獲取到Master服務器上I/O線程發送的日志內容及日志文件及位置點后,會將Binlog日志內容依次寫入到Slave端自身的Relay Log(即中繼日志) 文件(MySQL-relay-bin.xxxxxx)的最末端,并將新的Binlog文件名和位置記錄到master-info文件中,以便下一次讀取Master端新Binlog日志時能夠告訴Master服務器需要從新Binlog 日志的指定文件及位置開始請求新的Binlog日志內容。

5)Slave服務器端的SQL線程會實時地檢測本地Relay Log中I/O線程新增加的日志內容,然后及時地把Relay Log文件中的內容解析成SQL語句,并在自身Slave服務器上按解析SQL語句的位置順序執行應用這些SQL語句,并記錄當前應用中繼日志的文件名及位置點在relay-log.info中。

經過了上面的過程,就可以確保在Master端和Slave端執行了同樣的SQL語句。當復制狀態正常的情況下,Master端和Slave端的數據是完全一樣的。當然,MySQL的復制機制也有一些特殊情況,具體請參考官方的說明,大多數情況下,大家不用擔心。

MySQL主從復制介紹:使用場景、原理和實踐

下面針對MySQL主從復制原理的重點小結

  • 主從復制是異步的邏輯的SQL語句級的復制

  • 復制時,主庫有一個I/O線程,從庫有兩個線程,I/O和SQL線程。

  • 作為復制的所有MySQL節點的server-id都不能相同。

  • binlog文件只記錄對數據庫有更改的SQL語句(來自數據庫內容的變更),不記錄任何查詢(select,slow)語句。

5.6 SQL多線程寫入

GTID(不用找位置點了)

3.3主從復制實踐

1、準備

主庫log_bin

主從server-id不同

2、主庫準備

 

  1. mysql -S /data/3306/mysql.sock  
  2. grant replication slave on *.* to 'rep'@'172.16.1.%' identified by 'oldboy123' 
  3. flush privileges

 

3、把數據從主庫搞到從庫。

復制前 讓從和主一致。

 

  1. mysql -S /data/3306/mysql.sock  
  2. mysql> flush table with read lock; 不能關窗口  
  3. mysql> show master status;  
  4. +-------------------+----------+  
  5. | File | Position |  
  6. +-------------------+----------+  
  7. | oldboy-bin.000002 | 405 | 

 

單開窗口

 

  1. mysqldump -A -B --master-data=2 -S /data/3306/mysql.sock|gzip >/opt/3306.sql.gz 

原窗口

 

  1. mysql> unlock table

從庫恢復:

 

  1. gzip -d /opt/3306.sql.gz  
  2. mysql -uroot -poldboy123 -S /data/3307/mysql.sock </opt/3306.sql 

 

5、指定主機、用戶、位置點同步

 

  1. mysql> CHANGE MASTER TO  
  2. MASTER_HOST='172.16.1.51' 
  3. MASTER_PORT=3306,  
  4. MASTER_USER='rep' 
  5. MASTER_PASSWORD='oldboy123' 
  6. MASTER_LOG_FILE='mysql-bin.000001' 
  7. MASTER_LOG_POS=405;  
  8. #查看MASTER_LOG_FILE 使用sed -n 22p /opt/3306.sql#查看主庫  
  9. #從庫 

 

6、開啟同步開關,檢查是否同步。

 

  1. mysql> start slave;  
  2. mysql> show slave statusG  
  3. Slave_IO_Running: Yes  
  4. Slave_SQL_Running: Yes  
  5. Seconds_Behind_Master: 0 

 

從庫配置信息說明

 

  1. mysql> CHANGE MASTER TO  
  2. MASTER_HOST='172.16.1.51', #這里是主庫的ip  
  3. MASTER_PORT=3306, #這里是主庫的端口,從庫的端口可以和主庫不同  
  4. MASTER_USER='rep', #這里是主庫上建立的用于復制的用戶rpo  
  5. MASTER_PASSWORD='oldboy123', ##這里是rep用戶的密碼  
  6. MASTER_LOG_FILE='mysql-bin.000001', ###這里是show master status時查看到的二進制日志文件名稱,注意不能多空格  
  7. MASTER_LOG_POS=405; ##這里是show master status時查看到的二進制日志文件偏移量,注意不能多空格 

 

主從復制實踐 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2023-04-06 13:15:48

MySQL復制原理應用實踐

2024-07-04 08:00:24

2017-09-05 16:00:49

MySQL主從復制備份

2025-01-15 15:47:36

2023-12-25 08:02:09

2020-11-13 07:11:23

MySQL復制日志

2021-01-12 09:03:17

MySQL復制半同步

2024-07-04 17:22:23

2020-04-14 16:26:22

MySQL線程同步

2025-03-19 10:00:56

2025-02-10 10:55:16

2024-11-15 15:27:09

2025-04-07 00:00:00

MySQL數據庫服務器

2024-03-01 18:33:59

MySQL節點數據

2021-06-08 07:48:27

MySQL主從配置

2023-03-19 11:53:27

2023-03-19 22:38:12

邏輯復制PostgreSQL

2023-07-03 08:57:45

Master服務TCP

2023-09-24 14:32:15

2017-10-11 15:40:20

MySQL主從復制拓撲結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品不卡一区二区三区 | 天天干天天操天天看 | 国产精品国产a | 国内精品视频在线观看 | 一区精品国产欧美在线 | 色婷婷婷婷色 | 国产在线观看不卡一区二区三区 | 久草成人| 欧美黑人狂野猛交老妇 | 91日韩| 自拍偷拍第一页 | 麻豆av在线免费观看 | 偷拍自拍网址 | 亚洲三级在线观看 | 视频1区 | 欧美亚洲一区二区三区 | 天天操天天摸天天爽 | 天堂男人av | 亚洲国产高清高潮精品美女 | 亚洲视频国产视频 | 日韩国产在线 | 美女黄视频网站 | 精品国产乱码久久久久久88av | 毛片a级毛片免费播放100 | 天堂成人国产精品一区 | 日韩精品成人免费观看视频 | 一本一道久久a久久精品蜜桃 | 久久久久国产精品一区二区 | 成人欧美一区二区 | 国产精品不卡一区 | 国产欧美日韩在线 | 美女黄网站视频免费 | 亚洲电影免费 | 久草免费在线视频 | 天天操天天天 | 在线观看免费av网 | 黄色一级视频 | 人人草人人干 | 成人无遮挡毛片免费看 | 妞干网福利视频 | 91佛爷在线观看 |