mysql gtid基礎_MySQL 基礎知識梳理學習(四)----GTID

在日常運維中,GTID帶來的最方便的作用就是搭建和維護主從復制。GTID的主從模式代替了MySQL早期版本中利用二進制日志文件的名稱和日志位置的做法,使用GTID使操作和維護都變得更加簡潔和可高。

1.GTID的優點

(1)基于GTID搭建主從復制根據簡單。

(2)可以確保每個事務只會被執行一次。

(3)可以方便的實現Replication的Failover,不需要像傳統模式復制那樣去找master_log_file和master_log_pos。

(4)GTID在MGR中也發揮了中要作用。MGR各節點之間復制依賴于GTID,并且在集群節點進行Recover重新加入到集群的操作中,會選擇其中一個節點作為Donor,然后基于Purged的GTID開始同步數據。MGR還是通過GTID進行沖突驗證,用于跟蹤每個實例上提交的事務,確定哪些事務可能有沖突。

2.使用GTID搭建主從時,需要注意的MySQL參數。

(1)server_id: 設置MySQL實例的server_id,每個實例的server_id不能一樣。

(2)gtid_mod=ON: MySQL實例開啟GTID模式。

(3)enforce_gtid_consitency=ON: 使用GTID模式復制時,需要開啟此參數,用來保證GTID的一致性。

(4)log-bin: MySQL必須開啟Binlog。

(5)log-slave-updates=1: 決定slave從master接受到的更新且執行之后,執行的Binlog是否記錄到salve的Binlog中,建議開啟。

(6)binlog_format=ROW:強烈建議binlog_format使用ROW格式,其它格式可能造成數據不一致。

(7)skip-slave-start=1:當salve數據庫啟動的時候,salve不會自動開啟復制。

3.使用GTID的注意事項

由于基于GTID的復制依賴于事務,所以在使用GTID時,有些MySQL特性不支持。

(1)事務中混合多個存儲引擎,會產生多個GTID。

當使用GTID時,如果在同一個事務中,更新包含了非事務引擎(如MyISAM)和事務引擎(InnoDB)表的操作,就會導致多個GTID分配給同一個事務。

(2)主從庫的表存儲引擎不一致,會導致數據不一致。

如果主從庫的存儲引擎不一致,例如一個是事務存儲引擎,一個是非事務存儲引擎,則會導致事務和GTID之間一對一的關系被破壞,結果導致基于GTID的復制不能正確地運行。

(3)基于GTID模式復制,不支持Create table ...select 語句。

因為使用基于行模式的復制時,該語句實際上被記錄為兩個單獨的事件,一個是創建表,另一個是將原表中的數據插入到剛剛新建的表中。當在事務中執行該語句時,在一些情況下。這兩個事務可能接收到相同的事務ID,這意味著包含插入的事務將被從庫挑過。

(4)不支持Create Temporary table 和 drop temporary table。

使用GTID復制時,?不支持Create Temporary table 和 drop temporary table。但是,在autocommit=1的情況下可以創建臨時表,master創建臨時表不產生GTID信息,所以不會同步到Salve上,但是刪除臨時表時,產生GTID會導致主從中斷。

(5)不推薦在GTID模式的實例上進行mysql_upgrade.

因為mysql_upgrade的過程要創建或修改系統表,而系統表時非事務引擎,所以不建議在開啟GTID模式的實例上使用帶有--write-binlog選項的mysql_upgrade。

(6)一旦在給定的MySQL實例中提交了事務,具有相同GTID的事務便會被該服務器忽略。而且,在主實例上提交的事務在從庫上只可以應用一次。

-----主要內容參考梳理于網絡知識,此短文僅為學習筆記,在此原創作者感謝!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383018.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383018.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383018.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

k8s pod MySQL環境變量_Kubernetes 配置Pod和容器(一)定義容器環境變量

此頁展示了如何給運行在Kubernetes Pod中的容器定義環境變量。開始之前必須有一個Kubernets集群,和一個能和集群溝通的kubectl命令行工具。如果你還沒有集群,你可以用Minikube建立一個集群。給容器定義環境變量當你建立了一個Pod,你可以給你運行在Pod中的…

koa2 mysql 中間件_Koa2第二篇:中間件

第一篇介紹了生成器目錄設計。xyzcoding:Koa2第一篇:詳解生成器?zhuanlan.zhihu.com接下來學習Koa2的中間件。Koa2本身只能算一個極簡的HTTP服務器,自身不內置中間件,但是提供中間件內核。中間件是Koa2的核心,因此需要…

mysql命令行如何建庫_MySQL心得2--命令行方式建庫和表

1.創建使用create database或create schema命令可以創建數據庫。create database 庫名create database if not exists 庫名(創建庫并檢驗創建的庫是否存在,不存在則建,存在就不建了)MySQL不允許兩個數據庫使用相同的名字,使用ifnot exists從句…

python 少兒趣味編程下載_PYTHON少兒趣味編程

章認識Python11.1編程語言和Python11.1.1程序設計和編程語言11.1.2Python簡介21.2Python的安裝41.2.1Windows下的Python安裝41.2.2MAC下的Python安裝81.3個程序HelloWorld111.4開發工具IDLE121.4.1IDLE簡介121.4.2用IDLE編寫程序121.4.3IDLE的其他功能161.5小結18第2章變量、數…

rs485數據線接反_終于有人把RS485通訊的正確接線方式講明白了,網友:這下好辦了...

RS485是一個定義平衡數字多點系統中的驅動器和接收器的電氣特性的標準,該標準由電信行業協會和電子工業聯盟定義。使用該標準的數字通信網絡能在遠距離條件下以及電子噪聲大的環境下有效傳輸信號。RS485使得廉價本地網絡以及多支路通信鏈路的配置成為可能。那么RS485通訊的正確…

騎馬與砍殺python代碼_GitHub - yunwei1237/scottish-fold: 一個關于騎馬與砍殺的劇本制作工具...

scottish-fold一個關于騎馬與砍殺的劇本簡單快速的制作工具前言?在很久以前的時候,也就是剛開始玩騎砍的時候就想著能夠制作一個自己的劇本,用于書寫自己想要的故事。當我懷著遠大的夢想去這么做的時候才發現,原來制作劇本沒有自己想象的那么…

java tomcat 監控_java程序監控tomcat實現項目宕機自動重啟并發送郵件提醒

最近由于老項目頻繁掛掉,由于項目經過多批人之手,短時間難以定位問題,所以只好寫一個監控程序。 時間比較緊半天時間,而且水平有限大神勿噴,有好的方法還請賜教。 1、問題描述:分兩種情況1.1、tomcat 徹底掛…

java靜態類和非靜態類的區別_Java中靜態內部類和非靜態內部類到底有什么區別?...

內部類(Inner Class)和靜態內部類(Static Nested Class)的區別:定義在一個類內部的類叫內部類,包含內部類的類稱為外部類。內部類可以聲明public、protected、private等訪問限制,可以聲明 為abstract的供其他內部類或外部類繼承與擴展&#x…

java寫便簽_如何編寫一個便簽程序(用Java語言編寫)

如何編寫一個便簽程序(用Java語言編寫)熱度:336 發布時間:2011-02-18 11:44:16如何編寫一個便簽程序(用Java語言編寫)因為以前沒有好好學習Java,都搞忘了,請大家原諒,也請你們指導一下,怎么編寫這個程序&…

java 生成log4j_Java log4j配置每天生成一個日志文件 - 永恒ぃ☆心 的日志 - 網易博客...

一、配置屬性文件log4j.propertieslog4j.rootLoggerINFO,stdout,Rlog4j.appender.stdoutorg.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layoutorg.apache.log4j.PatternLayout# Pattern to output the callers file name and line number.log4j.appender.stdout.layo…

java 子進程輸出流_具有輸入/輸出流的Java進程

首先,我建議更換這條線路。Process process Runtime.getRuntime ().exec ("/bin/bash");帶著線條ProcessBuilder builder new ProcessBuilder("/bin/bash");builder.redirectErrorStream(true);Process process builder.start();ProcessBuil…

java中if 運算符_[Java]Java基本語法結構(運算符,流程控制語句,if語句)

1:運算符(掌握)(1)算術運算符A:,-,*,/,%,,--B:的用法a:加法b:正號c:字符串連接符C:/和%的區別數據做除法操作的時候,/取得是商,%取得是余數D:和--的用法a:他們的作用是自增或者自減b:使用**單獨使用放在操作數據的前面和后面效果一樣。a或者a效果一樣。*…

java 變量取值范圍_JAVA中的變量及取值范圍

字節是二進制數據的單位。一個字節通常8位長。但是,一些老型號計算機結構使用不同的長度。為了避免混亂,在大多數國際文獻中,使用詞代替byte。變量:變量的數據類型;變量名變量值數據類型基本型數值型(整數)布爾型浮點型…

java object強制類型轉換_scala?object?轉Class?Scala強制類型轉換

asInstanceOf[T]將對象類型強制轉換為T類型。還是由于泛型存在類型擦除的原因,1.asInstanceOf[String]在運行時會拋出ClassCastException異常,而List(1).asInstanceOf[List[String]]將不會。packageresti.webimportorg.springframework.beans.factory.annotation.Au…

java毛玻璃_模糊效果(毛玻璃效果)

模糊效果(毛玻璃效果)效果演示:1. 使用iOS自帶的 UIImageImageEffects 文件文件中有這么幾個方法:- (UIImage *)applyLightEffect;- (UIImage *)applyExtraLightEffect;- (UIImage *)applyDarkEffect;- (UIImage *)applyTintEffectWithColor:(UIColor *)…

java程序崩潰怎么重啟_android 異常崩潰后 重啟app(進程守護方式實現)

【實例簡介】【實例截圖】【核心代碼】package com.sunfusheng.daemon.sample;import android.content.ComponentName;import android.content.Intent;import android.os.Looper;import android.util.Log;import com.blankj.utilcode.util.AppUtils;import com.sunfusheng.daem…

mysql 存儲過程 循環結構 命名_mysql存儲過程----循環結構

循環結構一共分為三種:三種循環結構分別為while、repeat、loop。while循環語法while 表達式(如果表達式為true則執行業務邏輯,否則不執行,與repeat循環相反,repeat循環滿足表達式退出循環,不滿足一直執行) do業務邏輯e…

mysql 組合索引 or_Mysql_組合索引和單列索引

一、目標什么時候使用組合索引,什么時候使用單獨索引組合索引、單獨索引區別組合索引:最左前綴匹配原則二、前期數據準備1. 建表CREATE TABLE user (uidint(11) NOT NULLAUTO_INCREMENT,namevarchar(50) DEFAULT NULL,pwdvarchar(50) DEFAULT NULL,creat…

mysql與mangodb多租戶_MongoDB多租戶(Java):如何使用MongoClient在運行時切換具有不同數據庫憑據的MongoDB數據庫?...

我正面臨一個關于MongoDB多租戶的問題.我有兩個不同的mongoDB數據庫(db1和db2).這兩者都有不同的憑據.db1憑據:userName:admin密碼:passwddb2憑據:userName:admin1密碼:passwd1我需要在運行時從一個數據庫切…

python 庫 全局變量_python局部變量和全局變量global

當你在函數定義內聲明變量的時候,它們與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數來說是 局部 的。這稱為變量的 作用域 。所有變量的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。使用局部變量例7.3 使用局部…