站長資訊網
        最全最豐富的資訊網站

        歸納整理之MySQL基于GTID主從搭建

        本篇文章給大家帶來了關于mysql的相關知識,主要介紹了MySQL基于GTID主從搭建,文章首先通過xtarbackup來同步數據展開文章內容詳情,感興趣的小伙伴可以參考一下。

        歸納整理之MySQL基于GTID主從搭建

        推薦學習:mysql視頻教程

        用xtarbackup來同步數據,然后基于GTID來設置主從。

        一、用xtarbackup備份數據庫

        1.1 優勢

        使用xtarbackup來做主從的前期準備是因為xtarbackup備份數據和恢復數據都很快,特別適合數據量很大的數據庫備份,而且它的安裝非常的簡單,使用也很簡單….(巴拉巴拉,廢話編不出來了)。

        1.2 安裝

        具體版本根據自己的具體情況來選擇。就下面這幾步就安裝好了,是不是非常簡單…..

        # rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm # yum list | grep percona # yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL  # rpm -Uvh ftp://rpmfind.net/linux/epel/6/x86_64/libev-4.03-3.el6.x86_64.rpm # yum install percona-xtrabackup –y

        1.3 使用

        1.3.1 普通備份

        innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backupMysql/

        1.3.2 tar備份

        (1)、備份到本地

        # 不壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/>/data/mysql.tar  # 壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | gzip >/data/mysql.tar.gz

        (2)、備份到遠程

        # 不壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | ssh root@192.168.1.7  "cat - >/data/mysql.tar  # 壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7  "gzip >/data/mysql.tar.gz

        (3)、解壓方式

        # 未經過壓縮的文件解壓 tar xvf mysql.tar -C /data  # 壓縮過的文件解壓 tar zxvf mysql.tar.gz -C /data

        1.3.3 xbstream備份

        (1)、備份到本地

        # 不壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/>/data/mysql.xbstream  # 壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ >/data/mysql_compress.xbstream

        (2)、備份要遠程

        # 不壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/| ssh root@192.168.1.7 "xbstream -x -C /backup/stream"  # 壓縮 innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ | ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

        (3)、解壓方式

        #### 未壓縮的 xbstream -x < mysql.xbstream -C /data  #### 壓縮過的 # 1、先解壓xbstream xbstream -x < mysql_compress.xbstream -C /data # 2、再解壓qp壓縮格式 for bf in `find . -iname "*.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done  注:如果xtrabackup版本大于2.1.4,可以直接通過以下方式解壓第二步。 innobackupex --decompress /data

        1.3.4 恢復

        先將原備份壓縮包解壓到一個目錄,然后執行下面語句恢復。

        innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /var/lib/mysql/backup/

        注:在做備份,解壓,恢復的過程中可以借助分屏工具,我喜歡用screen。

        二、基于GTID做數據同步

        2.1 GTID的概念

        • 1、全局事務標識:global transaction identifiers。
        • 2、GTID是一個事務一一對應,并且全局唯一ID。
        • 3、一個GTID在一個服務器上只執行一次,避免重復執行導致數據混亂或者主從不一致。
        • 4、GTID用來代替傳統復制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS開啟復制。而是使用MASTER_AUTO_POSTION=1的方式開始復制。
        • 5、MySQL-5.6.5開始支持的,MySQL-5.6.10后開始完善。
        • 6、在傳統的slave端,binlog是不用開啟的,但是在GTID中slave端的binlog是必須開啟的,目的是記錄執行過的GTID(強制)。

        2.2 GTID的組成

        GTID = source_id:transaction_id source_id:用于鑒別原服務器,即mysql服務器唯一的的server_uuid,由于GTID會傳遞到slave,所以也可以理解為源ID。

        transaction_id:為當前服務器上已提交事務的一個序列號,通常從1開始自增長的序列,一個數值對應一個事務。

        示例: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 前面的一串為服務器的server_uuid,即3E11FA47-71CA-11E1-9E33-C80AA9429562,后面的23為transaction_id

        2.3 GTID的原理

        1、當一個事務在主庫端執行并提交時,產生GTID,一同記錄到binlog日志中。

        2、binlog傳輸到slave,并存儲到slave的relaylog后,讀取這個GTID的這個值設置gtid_next變量,即告訴Slave,下一個要執行的GTID值。

        3、sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有該GTID。

        4、如果有記錄,說明該GTID的事務已經執行,slave會忽略。

        5、如果沒有記錄,slave就會執行該GTID事務,并記錄該GTID到自身的binlog,在讀取執行事務前會先檢查其他session持有該GTID,確保不被重復執行。

        6、在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。

        2.4 GTID的優勢

        • 1、更簡單的實現failover,不用以前那樣在需要找log_file和log_pos。
        • 2、更簡單的搭建主從復制。
        • 3、比傳統的復制更加安全。
        • 4、GTID是連續的沒有空洞的,保證數據的一致性,零丟失。

        2.5 具體搭建過程

        對于GTID的配置,主要修改配置文件中與GTID特性相關的幾個重要參數,mysql版本建議mysql-5.6.5版本以上。

        2.5.1 開啟主(master)Gtid

        其主要配置如下:

        [mysqld] #GTID: server_id=135                #服務器id gtid_mode=on                 #開啟gtid模式 enforce_gtid_consistency=on  #強制gtid一致性,開啟后對于特定create table不被支持  #binlog log_bin=master-binlog log-slave-updates=1     binlog_format=row            #強烈建議,其他格式可能造成數據不一致  #relay log skip_slave_start=1

        2.5.2 在master上進行數據備份

        innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7  "gzip >/data/mysql.tar.gz

        2.5.3 解壓備份的數據

        tar zxvf /data/mysql.tar.gz -C /data/baskup

        2.5.4 配置slave的配置文件

        [mysqld] #GTID: gtid_mode=on enforce_gtid_consistency=on server_id=143  #binlog log-bin=slave-binlog log-slave-updates=1 binlog_format=row      #強烈建議,其他格式可能造成數據不一致  #relay log skip_slave_start=1

        2.5.5 恢復數據

        innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup

        2.5.6 獲取GTID節點

        more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info

        2.5.7 配置主從

        (1)、在master上授權

        grant replication slave on *.* to slaveuser@'192.168.1.7'  identified by "c2xhdmV1c2Vy";

        (2)、在slave上配置

        stop slave; SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758"; CHANGE MASTER TO MASTER_HOST='192.168.1.6',MASTER_PORT=3306,MASTER_USER='slaveuser',MASTER_PASSWORD='c2xhdmV1c2Vy',MASTER_AUTO_POSITION=1; start slave;

        2.6 已運行經典復制mysql服務器轉向GTID復制

        • a、按本文2.5.2描述配置參數文件;
        • b、所有服務器設置global.read_only參數,等待主從服務器同步完畢; mysql> SET @@global.read_only = ON;
        • c、依次重啟主從服務器;
        • d、使用change master 更新主從配置;mysql> CHANGE MASTER TO > MASTER_HOST = host, > MASTER_PORT = port, > MASTER_USER = user, > MASTER_PASSWORD = password, > MASTER_AUTO_POSITION = 1;
        • e、從庫開啟復制 mysql> START SLAVE; f、驗證主從復制

        推薦學習:mysql視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚欧乱色国产精品免费视频| 亚洲国产精品福利片在线观看| 日韩精品欧美| 国产精品宾馆在线精品酒店| 亚洲国产精品激情在线观看| 91探花国产综合在线精品| 精品国产a∨无码一区二区三区| 久久精品亚洲欧美日韩久久| 欧美精品国产精品| 国产精品免费观看调教网| 自拍偷在线精品自拍偷无码专区 | 国内精品久久久久久99蜜桃| 精品人体无码一区二区三区 | 久久精品国产亚洲AV无码偷窥| 精品亚洲欧美无人区乱码 | 久久久久99精品成人片直播| 欧美日韩国产精品自在自线| 国产精品人人做人人爽人人添| 3D动漫精品一区二区三区| 日韩精品国产另类专区| 亚洲国产精品一区二区三区久久| 精品国产乱码久久久久久浪潮| 一区二区三区精品| 久久国产精品一区二区| 国产精品久久久久久影院| 91麻豆精品国产自产在线观看一区| 久久久久久亚洲Av无码精品专口| 亚洲精品美女久久777777| 亚洲&#228;v永久无码精品天堂久久 | 精品熟女少妇av免费久久| 十八18禁国产精品www| 久久夜色精品国产噜噜麻豆| 亚洲精品国产av成拍色拍| 亚洲AV无码成人精品区天堂| 亚洲综合av永久无码精品一区二区| 无码国内精品久久人妻麻豆按摩 | 国产精品国产AV片国产| 成人免费精品网站在线观看影片| 国产成人精品日本亚洲专| 国产精品久久久久9999| 欧美精品在线一区二区三区|