欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

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

          本篇文章給大家?guī)?lái)了關(guān)于mysql的相關(guān)知識(shí),主要介紹了MySQL基于GTID主從搭建,文章首先通過(guò)xtarbackup來(lái)同步數(shù)據(jù)展開(kāi)文章內(nèi)容詳情,感興趣的小伙伴可以參考一下。

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

          推薦學(xué)習(xí):mysql視頻教程

          用xtarbackup來(lái)同步數(shù)據(jù),然后基于GTID來(lái)設(shè)置主從。

          一、用xtarbackup備份數(shù)據(jù)庫(kù)

          1.1 優(yōu)勢(shì)

          使用xtarbackup來(lái)做主從的前期準(zhǔn)備是因?yàn)閤tarbackup備份數(shù)據(jù)和恢復(fù)數(shù)據(jù)都很快,特別適合數(shù)據(jù)量很大的數(shù)據(jù)庫(kù)備份,而且它的安裝非常的簡(jiǎn)單,使用也很簡(jiǎn)單….(巴拉巴拉,廢話編不出來(lái)了)。

          1.2 安裝

          具體版本根據(jù)自己的具體情況來(lái)選擇。就下面這幾步就安裝好了,是不是非常簡(jiǎn)單…..

          # 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)、備份到遠(yuǎn)程

          # 不壓縮 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)、解壓方式

          # 未經(jīng)過(guò)壓縮的文件解壓 tar xvf mysql.tar -C /data  # 壓縮過(guò)的文件解壓 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)、備份要遠(yuǎn)程

          # 不壓縮 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  #### 壓縮過(guò)的 # 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,可以直接通過(guò)以下方式解壓第二步。 innobackupex --decompress /data

          1.3.4 恢復(fù)

          先將原備份壓縮包解壓到一個(gè)目錄,然后執(zhí)行下面語(yǔ)句恢復(fù)。

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

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

          二、基于GTID做數(shù)據(jù)同步

          2.1 GTID的概念

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

          2.2 GTID的組成

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

          transaction_id:為當(dāng)前服務(wù)器上已提交事務(wù)的一個(gè)序列號(hào),通常從1開(kāi)始自增長(zhǎng)的序列,一個(gè)數(shù)值對(duì)應(yīng)一個(gè)事務(wù)。

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

          2.3 GTID的原理

          1、當(dāng)一個(gè)事務(wù)在主庫(kù)端執(zhí)行并提交時(shí),產(chǎn)生GTID,一同記錄到binlog日志中。

          2、binlog傳輸?shù)絪lave,并存儲(chǔ)到slave的relaylog后,讀取這個(gè)GTID的這個(gè)值設(shè)置gtid_next變量,即告訴Slave,下一個(gè)要執(zhí)行的GTID值。

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

          4、如果有記錄,說(shuō)明該GTID的事務(wù)已經(jīng)執(zhí)行,slave會(huì)忽略。

          5、如果沒(méi)有記錄,slave就會(huì)執(zhí)行該GTID事務(wù),并記錄該GTID到自身的binlog,在讀取執(zhí)行事務(wù)前會(huì)先檢查其他session持有該GTID,確保不被重復(fù)執(zhí)行。

          6、在解析過(guò)程中會(huì)判斷是否有主鍵,如果沒(méi)有就用二級(jí)索引,如果沒(méi)有就用全部掃描。

          2.4 GTID的優(yōu)勢(shì)

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

          2.5 具體搭建過(guò)程

          對(duì)于GTID的配置,主要修改配置文件中與GTID特性相關(guān)的幾個(gè)重要參數(shù),mysql版本建議mysql-5.6.5版本以上。

          2.5.1 開(kāi)啟主(master)Gtid

          其主要配置如下:

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

          2.5.2 在master上進(jìn)行數(shù)據(jù)備份

          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 解壓備份的數(shù)據(jù)

          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      #強(qiáng)烈建議,其他格式可能造成數(shù)據(jù)不一致  #relay log skip_slave_start=1

          2.5.5 恢復(fù)數(shù)據(jù)

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

          2.5.6 獲取GTID節(jié)點(diǎn)

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

          2.5.7 配置主從

          (1)、在master上授權(quán)

          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 已運(yùn)行經(jīng)典復(fù)制mysql服務(wù)器轉(zhuǎn)向GTID復(fù)制

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

          推薦學(xué)習(xí):mysql視頻教程

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)