推薦學習:mysql影片教學
#用xtarbackup來同步數據,然後基於GTID來設定主從。
使用xtarbackup來做主從的前期準備是因為xtarbackup備份資料和復原資料都很快,特別適合資料量很大的資料庫備份,而且它的安裝非常的簡單,使用也很簡單....(巴拉巴拉,廢話編不出來了)。
特定版本根據自己的具體情況來選擇。就下面這幾步就安裝好了,是不是很簡單.....
# 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
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backupMysql/
(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)、備份到本機
# 不压缩 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
先將原始備份壓縮包解壓縮到一個目錄,然後執行下面語句恢復。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /var/lib/mysql/backup/
附註:在做備份,解壓縮,復原的過程中可以藉助分割畫面工具,我喜歡用screen。
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-71CA336262536262963E11FA47-71CA-1362913223293630
## 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的優點其主要設定如下:
[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
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
tar zxvf /data/mysql.tar.gz -C /data/baskup
[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
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup
more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info
(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;
推荐学习:mysql视频教程
以上是歸納整理之MySQL基於GTID主從搭建的詳細內容。更多資訊請關注PHP中文網其他相關文章!