亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

詳解MySQL主從復制實戰 - 基于GTID的復制

2024-07-24 13:12:32
字體:
來源:轉載
供稿:網友

 基于GTID的復制

簡介

基于GTID的復制是MySQL 5.6后新增的復制方式.

GTID (global transaction identifier) 即全局事務ID, 保證了在每個在主庫上提交的事務在集群中有一個唯一的ID.

在原來基于日志的復制中, 從庫需要告知主庫要從哪個偏移量進行增量同步, 如果指定錯誤會造成數據的遺漏, 從而造成數據的不一致.

而基于GTID的復制中, 從庫會告知主庫已經執行的事務的GTID的值, 然后主庫會將所有未執行的事務的GTID的列表返回給從庫. 并且可以保證同一個事務只在指定的從庫執行一次.

實戰

1、在主庫上建立復制賬戶并授予權限

基于GTID的復制會自動地將沒有在從庫執行的事務重放, 所以不要在其他從庫上建立相同的賬號. 如果建立了相同的賬戶, 有可能造成復制鏈路的錯誤.

mysql/32296.html">mysql> create user 'repl'@'172.%' identified by '123456';

注意在生產上的密碼必須依照相關規范以達到一定的密碼強度, 并且規定在從庫上的特定網段上才能訪問主庫.

mysql> grant replication slave on *.* to 'repl'@'172.%';

查看用戶

mysql> select user, host from mysql.user;+-----------+-----------+| user  | host  |+-----------+-----------+| prontera | %   || root  | %   || mysql.sys | localhost || root  | localhost |+-----------+-----------+4 rows in set (0.00 sec)

查看授權

mysql> show grants for repl@'172.%';+--------------------------------------------------+| Grants for repl@172.%       |+--------------------------------------------------+| GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.%' |+--------------------------------------------------+1 row in set (0.00 sec)

2、配置主庫服務器

[mysqld]log_bin = /var/log/mysql/mysql-binlog_bin_index = /var/log/mysql/mysql-bin.indexbinlog_format = rowserver_id = 101gtid_mode = ONenforce_gtid_consistency = ON#log_slave_updates = ON

NOTE: 把日志與數據分開是個好習慣, 最好能放到不同的數據分區

enforce_gtid_consistency 強制GTID一致性, 啟用后以下命令無法再使用

create table ... select ...

mysql> create table dept select * from departments;ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.

因為實際上是兩個獨立事件, 所以只能將其拆分先建立表, 然后再把數據插入到表中

create temporary table

事務內部不能創建臨時表

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> create temporary table dept(id int);ERROR 1787 (HY000): Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context. These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions.

同一事務中更新事務表與非事務表(MyISAM)

mysql> CREATE TABLE `dept_innodb` (id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT);Query OK, 0 rows affected (0.04 sec)mysql> CREATE TABLE `dept_myisam` (id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE = `MyISAM`;Query OK, 0 rows affected (0.03 sec)mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> insert into dept_innodb(id) value(1);Query OK, 1 row affected (0.00 sec)mysql> insert into dept_myisam(id) value(1);ERROR 1785 (HY000): Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.

所以建議選擇Innodb作為默認的數據庫引擎.

log_slave_updates 該選項在MySQL 5.6版本時基于GTID的復制是必須的, 但是其增大了從服務器的IO負載, 而在MySQL 5.7中該選項已經不是必須項

3、配置從庫服務器

master_info_repository 與relay_log_info_repository

在MySQL 5.6.2之前, slave記錄的master信息以及slave應用binlog的信息存放在文件中, 即master.info與relay-log.info. 在5.6.2版本之后, 允許記錄到table中. 對應的表分別為mysql.slave_master_info與mysql.slave_relay_log_info, 且這兩個表均為innodb引擎表.

[mysqld]log_bin = /var/log/mysql/mysql-binlog_bin_index = /var/log/mysql/mysql-bin.indexserver_id = 102# slavesrelay_log  = /var/log/mysql/relay-binrelay_log_index = /var/log/mysql/relay-bin.indexrelay_log_info_file = /var/log/mysql/relay-bin.infoenforce_gtid_consistency = ONlog_slave_updates = ONread_only = ONmaster_info_repository = TABLErelay_log_info_repository = TABLE

4、從庫數據初始化 - [optional]

先在主庫上備份數據

 

復制代碼 代碼如下:

mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases --events -u root -p > backup.sql

 

—master-data=2 該選項將當前服務器的binlog的位置和文件名追加到輸出文件中(show master status). 如果為1, 將偏移量拼接到CHANGE MASTER 命令. 如果為2, 輸出的偏移量信息將會被注釋。

--all-databases 因為基于GTID的復制會記錄全部的事務, 所以要構建一個完整的dump這個選項是推薦的

常見錯誤

當從庫導入SQL的時候出現

 

復制代碼 代碼如下:

ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

 

此時進入從庫的MySQL Command Line, 使用reset master即可

5、啟動基于GTID的復制

現有master@172.20.0.2和slave@172.20.0.3, 并且已經通過mysqldump將數據同步至從庫slave中. 現在在從服務器slave上配置復制鏈路

mysql> change master to master_host='master', master_user='repl', master_password='123456', master_auto_position=1;Query OK, 0 rows affected, 2 warnings (0.06 sec)

啟動復制

mysql> start slave;

啟動成功后查看slave的狀態

mysql> show slave status/G*************************** 1. row ***************************    Slave_IO_State: Queueing master event to the relay log     Master_Host: master     Master_User: repl     Master_Port: 3306    Connect_Retry: 60    Master_Log_File: mysql-bin.000002   Read_Master_Log_Pos: 12793692    Relay_Log_File: relay-bin.000002    Relay_Log_Pos: 1027  Relay_Master_Log_File: mysql-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: 814    Relay_Log_Space: 12794106    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: 5096Master_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: 101     Master_UUID: a9fd4765-ec70-11e6-b543-0242ac140002    Master_Info_File: mysql.slave_master_info     SQL_Delay: 0   SQL_Remaining_Delay: NULL  Slave_SQL_Running_State: Reading event from the relay log   Master_Retry_Count: 86400     Master_Bind:  Last_IO_Error_Timestamp:  Last_SQL_Error_Timestamp:    Master_SSL_Crl:   Master_SSL_Crlpath:   Retrieved_Gtid_Set: a9fd4765-ec70-11e6-b543-0242ac140002:1-39   Executed_Gtid_Set: a9fd4765-ec70-11e6-b543-0242ac140002:1-4    Auto_Position: 1   Replicate_Rewrite_DB:     Channel_Name:   Master_TLS_Version:1 row in set (0.00 sec)

當Slave_IO_Running, Slave_SQL_Running為YES,

且Slave_SQL_Running_State 為Slave has read all relay log; waiting for more updates時表示成功構建復制鏈路

6、總結

優點

  1. 因為不用手工設置日志偏移量, 可以很方便地進行故障轉移
  2. 如果啟用log_slave_updates那么從庫不會丟失主庫上的任何修改

缺點

  1. 對執行的SQL有一定限制
  2. 僅支持MySQL 5.6之后的版本, 而且不建議使用早期5.6版本

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩中国免费专区在线看| 狠狠操狠狠色综合网| 日韩在线www| 日韩精品福利在线| 亚洲天堂av在线免费| 国产91精品久| 精品国产户外野外| 国产有码在线一区二区视频| 国产精品v片在线观看不卡| 亚洲韩国日本中文字幕| 91久久精品视频| 日韩av日韩在线观看| 国产一区二区三区久久精品| 日韩a**中文字幕| 日韩视频免费在线观看| 亚洲视频在线免费观看| 成人情趣片在线观看免费| 性欧美暴力猛交69hd| 亚洲资源在线看| 91精品视频网站| 26uuu国产精品视频| 久久97久久97精品免视看| 97在线视频一区| 久久影院免费观看| 欧美视频一区二区三区…| 久久亚洲一区二区三区四区五区高| 日韩精品中文字幕视频在线| 热久久免费视频精品| 超碰精品一区二区三区乱码| 一区二区三区四区视频| 国产精品自产拍在线观看中文| 亚洲精品乱码久久久久久金桔影视| 日韩性生活视频| 国产日韩一区在线| 久久久久久免费精品| 国内精品视频在线| 亚洲天堂av综合网| 中文字幕av一区二区| 青草青草久热精品视频在线网站| 久久免费视频这里只有精品| 久久网福利资源网站| 色噜噜狠狠色综合网图区| 91精品国产91久久久久久不卡| 在线观看日韩专区| 国产亚洲欧美日韩一区二区| 欧美猛少妇色xxxxx| 97在线看免费观看视频在线观看| 精品久久久久久久中文字幕| 国产剧情日韩欧美| 91国产美女视频| 久久精品国产欧美亚洲人人爽| 97香蕉久久夜色精品国产| 精品国产91久久久久久老师| 57pao成人永久免费视频| 91亚洲精品久久久久久久久久久久| 国产精品视频yy9099| 欧美日韩在线免费| 久久久免费电影| 中文字幕亚洲专区| 欧美日韩另类在线| 91中文在线观看| 日韩av在线最新| 午夜精品久久久久久久久久久久| 欧美性xxxx极品hd欧美风情| 亚洲国产欧美久久| 国产日韩欧美在线视频观看| 色婷婷久久av| 日韩电影中文字幕一区| 在线日韩精品视频| 欧美在线视频网站| 国产欧美精品在线| 国产精品免费一区豆花| 亚洲jizzjizz日本少妇| 亚洲欧美日韩在线一区| 欧美精品免费播放| 国产精品激情av电影在线观看| 日韩有码在线视频| 国产精品自产拍在线观| 久久久久久国产三级电影| 日韩精品在线影院| 亚洲乱码一区二区| 欧美精品福利在线| 精品福利免费观看| 91网站在线免费观看| 日韩精品视频在线观看免费| 精品人伦一区二区三区蜜桃免费| 国产精品久久二区| 国产91网红主播在线观看| 成人激情视频网| 久久久爽爽爽美女图片| 久久精品电影一区二区| 日韩视频免费中文字幕| 久久久久国产精品一区| 国产成人精品免费久久久久| 久久人人爽人人爽人人片av高请| 欧美激情综合亚洲一二区| www.久久久久| 亚洲国产精品一区二区久| 91高清免费在线观看| 91精品久久久久久久久不口人| 国产精品视频99| 国产在线999| 日韩性生活视频| 色噜噜久久综合伊人一本| 欧美日韩国产一区在线| 国产日韩欧美中文在线播放| 亚洲欧美成人网| 精品国产一区二区三区久久狼5月| 91久久国产综合久久91精品网站| 一道本无吗dⅴd在线播放一区| 成人久久一区二区三区| 日韩中文字幕在线| 久久久免费观看视频| 久久中文字幕国产| 国产精品视频中文字幕91| 亚洲欧美日韩中文在线制服| 国产网站欧美日韩免费精品在线观看| 亚洲综合精品一区二区| 亚洲国产成人精品女人久久久| 日韩一级裸体免费视频| 欧美综合国产精品久久丁香| 久久久久久久久91| xxxx欧美18另类的高清| 欧美高跟鞋交xxxxxhd| 欧美激情一区二区久久久| 国产成人精品免费久久久久| 欧美激情aaaa| 日韩在线免费观看视频| 亚洲丁香久久久| 91成人福利在线| 久久精品国产亚洲精品| 亚洲国产精品推荐| 91综合免费在线| 成人在线中文字幕| 亚洲娇小xxxx欧美娇小| 菠萝蜜影院一区二区免费| 日韩免费在线免费观看| 欧美在线欧美在线| 青草青草久热精品视频在线网站| 欧美精品www| 韩国一区二区电影| 欧美精品日韩www.p站| 亚洲欧美日韩一区二区在线| 成人精品福利视频| 国产69精品久久久久99| 亚洲最大的免费| 久久久久久久久久久亚洲| 欧美高清视频一区二区| 欧美激情一区二区三区成人| 国产日产欧美a一级在线| 亚洲午夜性刺激影院| 精品国产一区二区三区在线观看| 国产精品久久久久国产a级| 奇米一区二区三区四区久久| 亚洲国产精品久久久久秋霞不卡| 日韩动漫免费观看电视剧高清| 97视频在线观看免费高清完整版在线观看| 久久99热这里只有精品国产| 中文字幕日韩欧美在线视频| 久久亚洲精品视频| 国产精品入口福利| 亚洲综合社区网| 亚洲精品国产精品久久清纯直播| 亚洲精品久久久久久久久|