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

Mysql配置主從復(fù)制-GTID模式詳解

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

主從復(fù)制

主從復(fù)制的定義

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

主從復(fù)制的原理

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

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

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

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

主從復(fù)制的形式

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

主從復(fù)制的模式

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

主從復(fù)制的類型

基于二進(jìn)制日志復(fù)制(有三種形式)

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

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

GTID模式

GTID的概念

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

GTID的優(yōu)勢

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

GTID的原理

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

GTID的配置

Mysql主服務(wù)器

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)建復(fù)制用戶

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

#暫停服務(wù);

net stop mysql

#開啟服務(wù);

net start mysql

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

mysql -u root -pPassword

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

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

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

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

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

SHOW MASTER STATUS;

Mysql從服務(wù)器

 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)建復(fù)制用戶

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

#暫停服務(wù);

net stop mysql

#開啟服務(wù);

net start mysql

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

mysql -u root -pPassword

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

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

#啟動(dòng)復(fù)制;

START SLAVE;

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

SHOW SLAVE STATUS\G;

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

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

總結(jié)

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

相關(guān)文章

  • Mysql之索引的數(shù)據(jù)結(jié)構(gòu)詳解

    Mysql之索引的數(shù)據(jù)結(jié)構(gòu)詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    MySQL的線程池原理學(xué)習(xí)教程

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

最新評(píng)論