欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql配置主從復制-GTID模式詳解

 更新時間:2024年04月18日 09:24:38   作者:想養(yǎng)一只!  
這篇文章主要介紹了Mysql配置主從復制-GTID模式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

主從復制

主從復制的定義

是指把數(shù)據(jù)從一個Mysql服務器(主節(jié)點)復制到一個或多個Mysql服務器(從節(jié)點)中,會把主節(jié)點服務器中的所有數(shù)據(jù)庫實例、特定數(shù)據(jù)庫實例或特定表等,全部復制到從節(jié)點服務器中。

主從復制的原理

是通過基于日志的復制方式實現(xiàn)數(shù)據(jù)的同步。當主服務器上發(fā)生數(shù)據(jù)變更時,會將這些變更寫入二進制日志(Binary Log)中。

從服務器通過連接到主服務器,請求從主服務器獲取二進制日志,并將這些日志應用到自己的數(shù)據(jù)庫中。

主從復制的優(yōu)勢

  • 提高讀性能:通過設置從服務器(Slave),讀操作可以被分攤到主服務器(Master)和從服務器上,從而提高整體的讀取性能。主服務器負責處理寫操作,從服務器負責處理讀操作,從而降低主服務器的負載,提升整個系統(tǒng)的吞吐量。
  • 數(shù)據(jù)冗余和備份:通過主從復制,從服務器上的數(shù)據(jù)是主服務器的冗余副本。在主服務器發(fā)生故障時,從服務器仍然可以提供服務,并且可以通過將某個從服務器提升為新的主服務器來快速恢復服務。此外,從服務器也可以用于定期的備份操作,以確保數(shù)據(jù)的安全性和可恢復性。
  • 高可用性:通過主從復制,可以實現(xiàn)數(shù)據(jù)庫的故障轉(zhuǎn)移和高可用性。當主服務器發(fā)生故障時,可以手動或自動將某個從服務器提升為新的主服務器,繼續(xù)提供數(shù)據(jù)庫服務,從而實現(xiàn)快速的故障恢復。
  • 數(shù)據(jù)分析和報表生成:由于從服務器可以處理讀操作,可以將其用于數(shù)據(jù)庫的數(shù)據(jù)分析和報表生成等工作。這樣可以避免對主服務器造成額外的負載,同時提供實時的數(shù)據(jù)分析和報表服務。
  • 數(shù)據(jù)分發(fā)和跨地域部署:主從復制可以用于將數(shù)據(jù)分發(fā)到不同的地理位置的從服務器上,從而實現(xiàn)跨地域的數(shù)據(jù)訪問和部署。這對于全球化的應用程序和多地域災備是非常有用的。
  • 架構的擴展。業(yè)務量越來越大,I/O訪問頻率過高,單機無法滿足,此時做多庫的存儲,降低磁盤I/O訪問的頻率,提高單個機器的I/O性能。

主從復制的形式

  • 一主一從;
  • 一主多從;
  • 多主一從;
  • 雙主復制;
  • 級聯(lián)復制。

主從復制的模式

  • 異步模式(默認);
  • 半同步模式;
  • 全同步模式。

主從復制的類型

基于二進制日志復制(有三種形式)

  • 基于SQL語句的復制;
  • 基于行的復制;
  • 混合模式復制。

基于GTID復制(Mysql版本 >= 5.7及以上推薦使用)

GTID模式

GTID的概念

  • GTID即全局事務ID:global transaction identifier;
  • GTID是一個事務一一對應,并且全局唯一ID;
  • 一個GTID在一個服務器上只執(zhí)行一次,避免重復執(zhí)行導致數(shù)據(jù)混亂或者主從不一致;
  • GTID用來代替?zhèn)鹘y(tǒng)復制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS開啟復制。 而是使用MASTER_AUTO_POSTION=1的方式開始復制;
  • MySQL-5.6.5開始支持的,MySQL-5.6.10后開始完善;
  • 在傳統(tǒng)的slave端,binlog是不用開啟的,但是在GTID中slave端的binlog是必須開啟的,目的是記錄執(zhí)行過的GTID(強制)。

GTID的優(yōu)勢

  • 更簡單的實現(xiàn)failover,不用以前那樣在需要找log_file和log_pos;
  • 更簡單的搭建主從復制;
  • 比傳統(tǒng)的復制更加安全;
  • GTID是連續(xù)的沒有空洞的,保證數(shù)據(jù)的一致性,零丟失。

GTID的原理

  • 當一個事務在主庫端執(zhí)行并提交時,產(chǎn)生GTID,一同記錄到binlog日志中;
  • binlog傳輸?shù)絪lave,并存儲到slave的relaylog后,讀取這個GTID的這個值設置gtid_next變量,即告訴Slave,下一個要執(zhí)行的GTID值;
  • sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有該GTID;
  • 如果有記錄,說明該GTID的事務已經(jīng)執(zhí)行,slave會忽略;
  • 如果沒有記錄,slave就會執(zhí)行該GTID事務,并記錄該GTID到自身的binlog,在讀取執(zhí)行事務前會先檢查其他session持有該GTID,確保不被重復執(zhí)行;
  • 在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。

GTID的配置

Mysql主服務器

1、在Mysql的my.ini配置文件中添加以下參數(shù):

gtid_mode=ON
enforce_gtid_consistency=true
server_id=1
log-bin=mysql-bin
binlog_format=row
log-slave-updates=1

2、重啟Mysql和創(chuàng)建復制用戶

使用管理員打開cmd命令窗口,按照以下命令步驟分別執(zhí)行:

#暫停服務;

net stop mysql

#開啟服務;

net start mysql

#連接數(shù)據(jù)庫,Password替換為自己數(shù)據(jù)庫密碼;

mysql -u root -pPassword

#創(chuàng)建一個用于復制的用戶,userName和Password自行設置;

CREATE USER 'userName'@'%' IDENTIFIED BY 'Password';

#授予復制權限,userName即上步創(chuàng)建的用戶名;

GRANT REPLICATION SLAVE ON *.* TO 'userName'@'%';

#獲取狀態(tài),記住File和Position兩項參數(shù),后面需要用到;

SHOW MASTER STATUS;

Mysql從服務器

 1、在Mysql的my.ini配置文件中添加以下參數(shù):

gtid_mode=ON
enforce_gtid_consistency=true
server_id=1
log-bin=mysql-bin
binlog_format=row
log-slave-updates=1

2、重啟Mysql和創(chuàng)建復制用戶

使用管理員打開cmd命令窗口,按照以下命令步驟分別執(zhí)行:

#暫停服務;

net stop mysql

#開啟服務;

net start mysql

#連接數(shù)據(jù)庫,Password替換為自己數(shù)據(jù)庫密碼;

mysql -u root -pPassword

#配置復制,serverIP是主服務器IP地址,userName和password是剛在主服務器創(chuàng)建的用戶,file和position是剛查看主服務器狀態(tài)返回的參數(shù);

CHANGE MASTER TO MASTER_HOST='serverIP', MASTER_USER='userName', MASTER_PASSWORD='password', MASTER_LOG_FILE='file', MASTER_LOG_POS=position;

#啟動復制;

START SLAVE;

#查看復制狀態(tài),輸出中的Slave_IO_Running和Slave_SQL_Running的值為Yes,表示復制正在正常運行;

SHOW SLAVE STATUS\G;

到這里就結束了,可以在Mysql主服務器中進行添加、修改、刪除操作,測試從服務器中的數(shù)據(jù)是否保持一致。

注意:從服務器只允許進行查詢,不可以進行添加、修改、刪除等改變數(shù)據(jù)的操作,否則會導致復制狀態(tài)失效。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Mysql之索引的數(shù)據(jù)結構詳解

    Mysql之索引的數(shù)據(jù)結構詳解

    索引是存儲引擎用于快速找到數(shù)據(jù)記錄的一種數(shù)據(jù)結構,類似于教科書的目錄部分,在MySQL中,索引可以加速數(shù)據(jù)查找,減少磁盤I/O的次數(shù),提高查詢速率,但是,創(chuàng)建和維護索引需要耗費時間,并且索引需要占磁盤空間,在InnoDB中,索引的實現(xiàn)基于B+樹結構
    2024-12-12
  • MySQL初學者可以告別分組聚合查詢的困擾了

    MySQL初學者可以告別分組聚合查詢的困擾了

    這篇文章主要為大家介紹了MySQL分組聚合查詢的難點講解,幫助MySQL初學著告別分組聚合查詢的困擾,有需要的朋友可以借鑒參考下,希望能夠有所進步
    2021-10-10
  • MySQL(community版)壓縮包安裝的超詳細教程

    MySQL(community版)壓縮包安裝的超詳細教程

    這篇文章詳細介紹了如何在Windows系統(tǒng)上手動安裝MySQL?8.0.26的壓縮包版本,包括下載、解壓、配置環(huán)境變量、初始化、啟動服務、設置密碼等步驟,同時,還提供了一個簡單的SQL基礎教程,需要的朋友可以參考下
    2025-03-03
  • MySQL的ORDER BY及優(yōu)化過程詳解

    MySQL的ORDER BY及優(yōu)化過程詳解

    在MySQL中,索引的最左匹配原則是指在使用索引進行查詢時,會優(yōu)先匹配索引的最左側列,然后再匹配后續(xù)列,本文將基于InnoDB引擎,詳細分析如何優(yōu)化MySQL索引最左匹配下的ORDER BY語句,需要的朋友可以參考下
    2024-07-07
  • Mysql中使用Union—多表合并之行合并

    Mysql中使用Union—多表合并之行合并

    這篇文章主要介紹了Mysql中使用Union—多表合并之行合并,如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字,union(或稱為聯(lián)合)的作用是將多個結果合并在一起顯示出來,需要的朋友可以參考下
    2023-07-07
  • MySQL explain根據(jù)查詢計劃去優(yōu)化SQL語句

    MySQL explain根據(jù)查詢計劃去優(yōu)化SQL語句

    MySQL是一種常見的關系型數(shù)據(jù)庫管理系統(tǒng),常被用于各種應用程序中存儲數(shù)據(jù),當涉及到大量的數(shù)據(jù)時,就需要MySQL的explain功能來幫助優(yōu)化,本文將詳細介紹MySQL的explain功能,感興趣的朋友可以參考閱讀
    2023-04-04
  • MySQL中的全表掃描和索引樹掃描?的實例詳解

    MySQL中的全表掃描和索引樹掃描?的實例詳解

    這篇文章主要介紹了MySQL中的全表掃描和索引樹掃描?,從本文的學習可以輕松的知道,全表掃描的效率相比于索引樹掃描相對較低一點,但是差距不是很大,具體示例代碼詳解跟隨小編一起看看吧
    2022-05-05
  • 獲取MySQL數(shù)據(jù)表列信息的三種方法實現(xiàn)

    獲取MySQL數(shù)據(jù)表列信息的三種方法實現(xiàn)

    本文介紹了獲取MySQL數(shù)據(jù)表列信息的三種方法實現(xiàn),包含SHOWCOLUMNS命令、DESCRIBE命令以及查詢INFORMATION_SCHEMA.COLUMNS表,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • MySQL截取和拆分字符串函數(shù)用法示例

    MySQL截取和拆分字符串函數(shù)用法示例

    這篇文章主要介紹了MySQL截取和拆分字符串函數(shù)用法,結合實例形式分析了mysql針對字符串的截取與拆分函數(shù)SUBSTRING及SUBSTRING_INDEX相關使用方法,需要的朋友可以參考下
    2016-09-09
  • MySQL的線程池原理學習教程

    MySQL的線程池原理學習教程

    這篇文章主要介紹了MySQL的線程池原理學習教程,包括線程池的函數(shù)調(diào)用與關鍵接口等重要知識,非常推薦!需要的朋友可以參考下
    2015-11-11

最新評論