真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQLGTID與MariaDBGTID的不同之處有哪些

小編給大家分享一下MySQL GTID與MariaDB GTID的不同之處有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

從策劃到設(shè)計制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、網(wǎng)站策劃、網(wǎng)頁設(shè)計、域名注冊、網(wǎng)站空間、網(wǎng)絡(luò)營銷、VI設(shè)計、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

GTID是全稱是Global Transaction Identifier,可簡化MySQL的主從切換以及Failover。GTID用于在binlog中唯一標(biāo)識一個事務(wù)。當(dāng)事務(wù)提交時,MySQL Server在寫binlog的時候,會先寫一個特殊的Binlog Event,類型為GTID_Event,指定下一個事務(wù)的GTID,然后再寫事務(wù)的Binlog。主從同步時GTID_Event和事務(wù)的Binlog都會傳遞到從庫,從庫在執(zhí)行的時候也是用同樣的GTID寫binlog,這樣主從同步以后,就可通過GTID確定從庫同步到的位置了。

在MySQL 5.6 中,數(shù)據(jù)庫服務(wù)器上的每個事務(wù)都會被分配一個唯一的事務(wù)標(biāo)示符,它是一個64位非零數(shù)值,根據(jù)事務(wù)提交的順序分配。GTID有兩部分。 第一部分是指服務(wù)器UUID。 此UUID是32個字符的隨機(jī)字符串。 該值取自位于mysql數(shù)據(jù)目錄中的auto.cnf文件。 第二部分是序列。

例如:

MySQL GTID與MariaDB GTID的不同之處有哪些

在從庫上,GTID是單個表達(dá)式:

fba30f4d-5815-11e8-9beb-000c2900351f:10

需要了解的是,如果事務(wù)從 master 復(fù)制到了 slave 端,事務(wù)的二進(jìn)制位置會發(fā)生改變,這是由于在 slave 端需要將事務(wù)寫入到 slave 自己的二進(jìn)制日志里面,那所寫位置是不一樣的,但是全局事務(wù)標(biāo)識符是一樣的。

對于GTID的參數(shù)

MySQL GTID與MariaDB GTID的不同之處有哪些

  • l gtid_executed會記錄當(dāng)前執(zhí)行的GTID的 UUID,在MySQL 5.6中必須配置參數(shù)log_slave_updates的最重要原因在于當(dāng)slave重啟后,無法得知當(dāng)前slave已經(jīng)運行到的GTID位置,因為變量gtid_executed是一個內(nèi)存值。

  • l gtid_mode用于控制開啟/關(guān)閉GTID模式。

  • l gtid_owned是一個只讀變量,其內(nèi)容取決于它的范圍。 當(dāng)與session會話級一起使用時,該列表包含此客戶端擁有的所有GTID; 當(dāng)與global 級一起使用時,它包含所有GTID及其所有者的列表。

  • l gtid_purged,表示被purge掉的GTID集合

示例:

                                  MySQL GTID與MariaDB GTID的不同之處有哪些

查看binlog

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#181009 23:02:36 server id 1  end_log_pos 120 CRC32 0x07eff3b3  Start: binlog v 4, server v 5.6.40-log created 181009 23:02:36 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
# at 120
#181009 23:02:36 server id 1  end_log_pos 151 CRC32 0xb62fd2d2  Previous-GTIDs
# [empty]
# at 151
#181010  4:37:11 server id 1  end_log_pos 199 CRC32 0x2f451f69  GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'fba30f4d-5815-11e8-9beb-000c2900351f:1'/*!*/;
# at 199
#181010  4:37:11 server id 1  end_log_pos 271 CRC32 0xa6b6773e  Query   thread_id=5     exec_time=0     error_code=0
SET TIMESTAMP=1539160631/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 271
#181010  4:37:11 server id 1  end_log_pos 336 CRC32 0x0f828e75  Table_map: `test`.`tx_albert` mapped to number 75
# at 336
#181010  4:37:11 server id 1  end_log_pos 398 CRC32 0xd023df0a  Write_rows: table id 75 flags: STMT_END_F
### INSERT INTO `test`.`tx_albert`
### SET
###   @1=3
###   @2='enmo'
###   @3=5
###   @4='F'
###   @5='BeiJing'
###   @6='BJ'
# at 398
#181010  4:37:11 server id 1  end_log_pos 429 CRC32 0x7117fe15  Xid = 45
COMMIT/*!*/;
# at 429
#181010  4:38:24 server id 1  end_log_pos 477 CRC32 0x8b8da3af  GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'fba30f4d-5815-11e8-9beb-000c2900351f:2'/*!*/;
# at 477
#181010  4:38:24 server id 1  end_log_pos 549 CRC32 0xe2c69fee  Query   thread_id=5     exec_time=0     error_code=0
SET TIMESTAMP=1539160704/*!*/;
BEGIN
/*!*/;
# at 549
#181010  4:38:24 server id 1  end_log_pos 614 CRC32 0xa52a4212  Table_map: `test`.`tx_albert` mapped to number 75
# at 614
#181010  4:38:24 server id 1  end_log_pos 676 CRC32 0x12c7c08f  Write_rows: table id 75 flags: STMT_END_F
### INSERT INTO `test`.`tx_albert`
### SET
###   @1=4
###   @2='sed'
###   @3=34
###   @4='M'
###   @5='GuiYang'
###   @6='DBA'
# at 676
#181010  4:38:24 server id 1  end_log_pos 707 CRC32 0xab6aa483  Xid = 46
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog *//*!*/;
DELIMITER ;
# End of log file
 
SET @@SESSION.GTID_NEXT= 'fba30f4d-5815-11e8-9beb-000c2900351f:1'/*!*/;

其中'fba30f4d-5815-11e8-9beb-000c2900351f' 是server UUID,‘1’ 是sequence ,即提交的序列

#181010  4:37:11 server id 1  end_log_pos 429 CRC32 0x7117fe15  Xid = 45

MySQL通過全局變量gtid_mode控制開啟/關(guān)閉GTID模式。但是gtid_mode是只讀的,可添加到配置文件中,然后重啟mysqld來開啟GTID模式。由于GTID需要寫入到二進(jìn)制日志,所以要使用了GTID,同時也需要把二進(jìn)制日志啟用。相關(guān)配置項如下:

MySQL GTID與MariaDB GTID的不同之處有哪些

MariaDB 數(shù)據(jù)庫作為是 MySQL 的一個分支,在某些特性上與 MySQL相同。MariaDB是完全兼容MySQL,包括API和命令行,同時在存儲引擎方面,它使用XtraDB作為MySQL InnoDB的替代品,而XtraDB 也能兼容著 InnoDB。GTID復(fù)制是出現(xiàn)在MariaDB 10版中,它由The Domain ID,server ID,事務(wù)序列號組成。在MariaDB 10版中默認(rèn)是開啟GTID復(fù)制模式,每個 Event Group 寫到 Binlog 時會先收到一個GTID_EVENT,用MariaDB的 mysqlbinlog 工具或者 SHOW BINLOG EVENTS 命令可以看到這個Event。同時在MariaDB 10版無需設(shè)置GTID任何參數(shù),更不需像MySQL 5.6 那樣,需要在slave上設(shè)置log_slave_updates=1(這樣會增加slave的I/O壓力)。

MariaDB 支持熱切換GTID,不像MySQL5.6/5.7 版本一樣,修改GTID 模式需要修改相應(yīng)的GTID 參數(shù),并需要重啟。

示例:

CHANGE MASTER TO master_use_gtid = { slave_pos | current_pos | no }

  • l slave_pos,是將把Slave配置為使用 GTID 方式。當(dāng)Slave連接到Master時,Master將從最后一個GTID開始給Slave復(fù)制 Binlog

  • l current_pos,該設(shè)置無需知道當(dāng)前實例是否是Master還是Slave,但是對于slave來說,如果存在于復(fù)制無關(guān)的其他事務(wù),可能會引起復(fù)制的錯誤。當(dāng)然可以在slave 上設(shè)置@@GLOBAL.gtid_strict_mode=1,即開啟GTID嚴(yán)格模式。

  • l no,也即是傳統(tǒng)的復(fù)制模式

查看slave 復(fù)制情況:

MariaDB [(none)]> show slave status\G show processlist;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.34
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000002
          Read_Master_Log_Pos: 993
               Relay_Log_File: mariadb-relay-bin.000002
                Relay_Log_Pos: 644
        Relay_Master_Log_File: mariadb-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 993
              Relay_Log_Space: 944
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1000
               Master_SSL_Crl:
           Master_SSL_Crlpath:
                   Using_Gtid: Slave_Pos
                  Gtid_IO_Pos: 0-1000-4
      Replicate_Do_Domain_Ids:
  Replicate_Ignore_Domain_Ids:
                Parallel_Mode: conservative
1 row in set (0.00 sec)

可以看到當(dāng)前slave使用的GTID 傳輸為Using_Gtid: Slave_Pos,獲取到的pos位置為0-1000-4。

“0”,第一位是Domain ID,這是一個32位的無符號整型;

“ 1000”,第二位是Server ID,這跟傳統(tǒng)的主備復(fù)制中 Server ID 的含義是一樣的,也是一個32位無符號整型。因此在一個復(fù)制拓?fù)渲忻總€實例的Server ID必須是唯一的;

“4”,第三位是事務(wù)序列號(Sequence Number)。這是一個64位的無符號整型。每個新產(chǎn)生的 Event Group 記錄到Binlog時都會新生成一個單調(diào)遞增的序列號.

以上是“MySQL GTID與MariaDB GTID的不同之處有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁題目:MySQLGTID與MariaDBGTID的不同之處有哪些
當(dāng)前網(wǎng)址:http://weahome.cn/article/jjihid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部