ホームページ  >  記事  >  データベース  >  GTIDマスター・スレーブ構成に基づくMySQLの概要と整理

GTIDマスター・スレーブ構成に基づくMySQLの概要と整理

WBOY
WBOY転載
2022-08-26 11:56:332458ブラウズ

推奨学習: mysql ビデオ チュートリアル

xtarbackup を使用してデータを同期し、GTID に基づいてマスターとスレーブを設定します。

1. 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/

注: バックアップ、解凍、リカバリのプロセス中に分割画面ツールを使用できます。私は画面を使用するのが好きです。

2. GTID に基づくデータ同期

2.1 GTID の概念

  • 1. グローバル トランザクション識別子: グローバル トランザクション識別子。
  • 2. GTID はトランザクションを 1 対 1 に対応させた、世界的に一意な ID です。
  • 3. 繰り返しの実行によるデータの混乱やマスターとスレーブの不一致を避けるために、GTID はサーバー上で 1 回だけ実行されます。
  • 4. GTID は従来のレプリケーション方法を置き換えるために使用され、MASTER_LOG_FILE MASTER_LOG_POS はレプリケーションを有効にするために使用されなくなりました。代わりに、MASTER_AUTO_POSTION=1 を使用してコピーを開始します。
  • 5. MySQL-5.6.5 からサポートされ、MySQL-5.6.10 以降は改善される予定です。
  • 6. 従来のスレーブ側ではbinlogをonにする必要はありませんが、GTIDでは実行されたGTIDを記録するためにスレーブ側のbinlogをonにする必要があります(必須)。

2.2 GTIDの構成

GTID =source_id:transaction_idsource_id:元のサーバー、つまりmysqlサーバーの一意のserver_uuidを識別するために使用されます。スレーブに対しては、ソース ID としても使用できます。

transaction_id: 現在のサーバー上で送信されたトランザクションのシーケンス番号です。通常は 1 から始まる自己増加シーケンスです。1 つの値が 1 つのトランザクションに対応します。

例: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 最初の文字列はサーバーのserver_uuid、つまり 3E11FA47-71CA-11E1-9E33-C80AA9429562 で、最後の 23 はtransaction_id#です

## 2.3 GTID の原理

##1. メインライブラリ側でトランザクションが実行、送信されると、GTID が生成され、バイナリログに一緒に記録されます。

2. ビンログがスレーブに転送され、スレーブのリレーログに保存されたら、GTID の値を読み取り、gtid_next 変数を設定します。これにより、次に実行される GTID 値がスレーブに指示されます。

3. SQL スレッドはリレー ログから GTID を取得し、スレーブ側の binlog を比較して GTID が存在するかどうかを確認します。

4. レコードがある場合は、GTID を持つトランザクションが実行されたことを意味し、スレーブはそれを無視します。

5. レコードがない場合、スレーブは GTID トランザクションを実行し、GTID を自身の binlog に記録します。トランザクションを読み取って実行する前に、まず他のセッションが GTID を保持しているかどうかを確認します。繰り返し実行されることはありません。

6. 解析中に主キーがあるかどうかを判定し、ない場合はセカンダリインデックスを使用し、ない場合は全スキャンを使用します。

2.4 GTID

1. フェイルオーバーの実装が容易になり、以前のように log_file と log_pos を探す必要がありません。
  • 2. マスター/スレーブ レプリケーションの構築が容易になります。
  • 3. 従来のコピーよりも安全です。
  • 4. GTID は穴がなく連続しており、データの一貫性と損失ゼロを保証します。
  • 2.5 具体的な構築手順

GTID の設定では、主に設定ファイル内の GTID 機能に関連するいくつかの重要なパラメータを変更します (mysql のバージョンは mysql-5.6 を推奨します)。 5以上。

2.5.1 マスター 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 マスターでデータのバックアップを実行します

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 スレーブ設定ファイルの設定

[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)、マスターでの認可

grant replication slave on *.* to slaveuser@&#39;192.168.1.7&#39;  identified by "c2xhdmV1c2Vy";

(2)、スレーブの構成

stop slave;
SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758";
CHANGE MASTER TO MASTER_HOST=&#39;192.168.1.6&#39;,MASTER_PORT=3306,MASTER_USER=&#39;slaveuser&#39;,MASTER_PASSWORD=&#39;c2xhdmV1c2Vy&#39;,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视频教程

以上がGTIDマスター・スレーブ構成に基づくMySQLの概要と整理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。