高可用性の(5.8)GTIDコピー(実践論文)mysqlの--MySQLシリーズ

内容:

[0]コンセプト

小さなに基づいて、GTID非同期複製(マスタスレーブ)データなし/データ構造

[1]環境

[2](ここで、工具取付手段)MySQLのユーティリティを搭載

[3]設定を開始

[3.1]#がメインリポジトリにコピーする準備ができてアカウント 
(マスターとスレーブが装備されている)#[3.2]パラメータ設定
#[3.3] 2 MySQLの再起動し
、メインのライブラリビューのbinlogの上#[3.4]
#[3.5.1] mysqlreplicate(MySQLを使用しますツールユーティリティ)設定コマンド
#[3.5.2]を用いて、従来の様式で配置された
#3.6 [マスター]試験からのデータ(メインデータベース上で実行)

[4]私の他の記事
  [4.1] MySQLのGTIDコピーの練習
[5]検証
  [5.1]間違っているかどうかを確認するために、スレーブステータスの\ Gを表示
  するかどうか[5.2]から同期以前に作成したユーザーの検証
  [5.3]メインライブラリーでテストを作成しますデータベーステーブルのテストケースとビューの同期が
  [5.4]「%のGTID%のようなグローバル変数を表示 」; GTID情報を見ます

 第二に、大量のデータの初期化に基づく可逆半同期GTID(マスタスレーブ)(mysql5.7)に基づきます

 

本体:

[0]コンセプト

[0.5] GTIDコピー(5.6.2でMySQLと後GTIDをサポートするようになりました)。

      【2.5.1】GTID(グローバル・トランザクション識別子)概念:

        コミットされたトランザクションの数、トランザクションの一意の番号については、グローバルに一意の番号です。GTIDとの取引は、取引を識別するために使用される、バイナリログに記録されます。

        GTIDは以前、従来の複製方法(バイナリログ+位置)は、MySQL 5.6.2開始GTIDサポートを置き換えるために使用されます。

        同じノードの複数の発生の場合には、同じトランザクションを回避するために、同じ識別子を有する場合がある場合、MySQLサポートGTID後、クラスタ内のトランザクションは、各ノードで、もはや単独ではありません。

          (これは、行の予備的モデル、およびレコード位置であり、何が起こったのか具体的に覚えて、元の文との間の差として理解することができます)

        最も直接的な効果GTIDは、フェイルオーバー簡単に、すべてのものは、クラスタ内の一意性の感覚を持って、より高いデータセキュリティへの相対的な用語で行を複製することが表示されます。

      [0.5.2]ケースは、単純な概念を説明します。

        例えば、マスターから私たち2は、マスタースイッチがDB1から行くために失敗した場合、その後、さらに2機、手動でマスターから構築する必要があります。

        具体的に:     

コードをコピー
-再構築までの伝統的な方法では、メインのライブラリを使用
場所に再見つけたファイルに必要な場所、異なる各マシンのBINLOG Postion名と場所のポイント:トラブルスポットを- 
変更マスターする
「XXX」= MASTER_HOST 、
MASTER_USER = 'XXX'、
master_password = 'XXX'、
MASTER_PORT = 'XXX'、
MASTER_LOG_FILE = 'XXX'、
MASTER_LOG_POS = 'XXX'; 

-再構築のメインライブラリーへの道ダウンGTIDを使用
バンテージポイント- :各マシン上のGTIDは、位置と合わせGTIDに自動的に配置されるファイル、制御できない、同じ
変更マスターする
=「XXX」のMASTER_HOST、
、MASTER_USER =「XXX」を
、master_passwordは=「XXX」
MASTER_PORT =「XXX 」、
master_auto_postion = 1。
コードをコピー

 

      [0.5.3] GTID組成物

          GTIDはserver_uuidです:SEQUENCE_NUMBER組成;

            (1)server_uuid:MySQLの例では、グローバルユニークである; $に格納されている{DATADIR} /auto.cnf

            (2)SEQUENCE_NUMBER:トランザクションラベルは、MySQL内で、MySQLインスタンスが(保証サーバー内で一意)のシーケンス番号を繰り返さない、トランザクションの数は、この例では提出されており、トランザクションのコミットとしてインクリメントされると述べました。

            (3)それはもともと、トラブルシューティング、スイッチを容易にするために、どのインスタンス知っGTID上の取引に基づいて提出されました

 

 

小さなに基づいて、GTID非同期複製(マスタスレーブ)データなし/データ構造

[1]環境

  オペレーティングシステム:CentOSのLinuxの7.5

  データベースのバージョン:5.7.24

  データベース・スキーマは:図書館と災害復旧データのバックアップサーバ、デフォルトの伝統的な非同期レプリケーション用のマスターライブラリから、ライブラリーの生産のために、マスターからマスターをコピーします。

  メイン図書館IP:192.168.1.203ポート:3306

  192.168.1.204ポート:3306ライブラリのIPから

[2](ここで、工具取付手段)MySQLのユーティリティを搭載

CD / ダウンロード
wgetのhttps://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz 
タールあるxvのmysql-ユーティリティ-1.6.5.tar が.gz 
のCDのmysql-ユーティリティ-1.6 0.5 
のpython setup.pyビルド
のpython setup.pyインストール mysqldiffの--versionを

正味、その後、ダウンロードして公式サイトに行っていない、左側のナビゲーションバーでダウンロード=「アーカイブ=は」MySQLのユーティリティを持っています

[3]設定を開始

#コア声明:mysqlreplicate --master =ルート@ localhostを:3306 --slave =ルート@ localhostを:3306ユーザーRPL = --rpl:passwdの
 
#[3.1 ]メインライブラリーのアカウントをコピーする準備ができて 
、ユーザーのRPL」を作成@ ' 。192.168.1 123456 'で識別される' % ' 
グラントスレーブ複製ON * *へ。' rpl'@'192.168.1.% " ;  フラッシュ権限;  SELECTユーザー、mysql.userからホスト; #[3.2]パラメータの設定(マスタとスレーブの両方で)

#replication_new 
log_bin = / MySQLの/ログ/ 3306 / MySQLのビン#binlogのオープン
log_bin_index = / MySQLの/ / 3306 / MySQLの-bin.indexログ
binlog_format =行
ON binlog_rows_query_log_events = 
max_binlog_size = 2048 

バインドアドレス= 0.0.0.0 SERVER_IDを= 2013306を#ライブラリとメインライブラリからこのSERVER_IDと同じであってはならないことに注意してください 
掃除のexpire_logs_days = 7#ビンログより7日
innodb_support_xa = 1 
binlog_cache_size = 1M 
log_bin_trust_function_creators = 1#同期のストアド・プロシージャを、関数、トリガ
innodb_flush_log_at_trx_commit = 1 
sync_binlog = 1 
、取引に読み取りコミット=アイソ#slaveレプリケーション
relay_log = / MySQLの/ログ/ 3306 / relaylog / MySQLの-relay.log 
ログスレーブを更新。1 = 
READ_ONLY。1 =


スレーブパラレル型= LOGICAL_CLOCK 労働者= -parallelスレーブ。4
master_info_repository =表#master_infoはmysql.slave_master_infoに記録 relay_log_info_repository =表は、mysql.slave_relay_log_info記録さ#relay_log 。relay_log_recovery 1 = slave_skip_errors = ddl_exist_errors slave_preserve_commit_order 1 =。

パラメータはGTIDの増加
ON = gtid_modeを
enforce_gtid_consistency = #on 1:文を見つける場合/トランザクションがGTIDがサポートされていない場合、エラーメッセージが返さ
ログスレーブアップデート= 1
デフォルト上記5.7.6がオンになっている、binlog_gtid_simpleリカバリ= 1#5.7.6以下のデフォルトはオフである

#[3.3] 2 MySQLの再起動する
サービスのMySQL再始動

#1 [しますメインライブラリーの3.4 binlogの表示]
のMySQL-uroot - p123456
ショーマスターstauts; -記録file_nameにとFILE_POS

#[3.5.1] mysqlreplicate(mysqlのユーティリティツール)コンフィギュレーションコマンドを使用
ので、接続を確立するためのライブラリーから、スレーブとマスターでは、同期
  ライブラリ構成から#(1)(ただし、メインデータベース上で実行するのに十分な、これだけの複数のライブラリーからメインデータベース上で実行する必要があります)
mysqlreplicate --master =ルート:[email protected]:3306 --slave =ルート:[email protected]:3306 --rplユーザー= RPL:123456 -b

  #(2)テスト
#テストテストライブラリが同じである(メイン図書館ラン)
mysqlreplicate --master =ルート:[email protected]:3306は、--slave =ルート:[email protected]:3306ユーザーRPL = --rpl :DB-123456 --test TESTDB =
#チェックの複製(マスタ-スレーブ動作がライブラリから確認することができる)
mysqlrplcheck --master =ルート:[email protected]は:3306 --slaveルート=:3306:[email protected]を-s
チェック#複製データの一貫性
mysqlrplsync --master =ルート:[email protected]:3306 --slave =ルート:[email protected]:3306

#[3.5.2]は、伝統的な方法の設定を使用します
-道ダウン使用GTID再構築メインライブラリへ
-ヴァンテージポイント:各マシン上GTIDは、GTIDに応じて自動的に配置することができ、位置で、ファイルを同じコントロールしていないされている
マスターに変更する
MASTER_HOSTを= ' XXX ' 
MASTER_USERは=' XXX ' 
master_password =' XXX ' 
MASTER_PORTは=' XXX」、
master_auto_postion = 1。


#[3.6]主(メインデータベース上で実行)は、テストデータから
データベースTEST1を作成し、
TEST1を使用し、
表TEST1(ID int型)を作成し、
(1)INSERT INTOのTEST1値、(2)、(3);
COMMIT;
SELECT * TEST1から、
メインライブラリー
 

ライブラリから

同期に成功!

 

[4]私の他の記事

  [4.1] MySQLのGTIDコピー実践:https://www.cnblogs.com/gered/p/11417019.html

[5]検証

[5.1]間違っがあるかどうかを確認するために、スレーブステータスの\ Gを表示

  

  OK。2つのスレッドは何の問題もなく、フィールドのエラー言葉を開始しました。

同期オーバーのために以前に作成した[5.2]ユーザ検証

  

  OK、問題ありません。

[5.3]メインライブラリビューの同期状況でテストデータベースとテストテーブルを作成するために、

コードをコピー
#TEST2データベース、テーブルを作成し、test2.test1 
データベースTEST2を作成し、
表test2.test1(上記のID INT)を作成し、
INSERT INTOのtest2.test1値(1); 
COMMIT; test2.test1からSELECT *と、
コードをコピー

  ライブラリーからの眺め

  test2.test1から選択*;

     

  OK検証が完了しています。

[5.4] '%のGTIDの%' のようなグローバル変数を示し; GTID情報を見ます

    

    あなたはGTID最新の取引で、あなたはマスターコントロールからのトランザクションの同期を表示することができますボックスの外に姿を変えることができるかどうかを確認してください。

 

 

 

第二に、大量のデータの初期化に基づく可逆半同期GTID(マスタスレーブ)(mysql5.7)に基づきます

[1]コアコードライブラリの初期化からバックアップされた大量のデータに基づいて

- バックアップ初期化コアコード使用して
SETの @TEMP_LOG_BIN  =  @@ SESSION .SQL_LOG_BINと、
 SET  @@ SESSION .SQL_LOG_BIN =  0 ;
 SETが@@ GLOBAL.GTID_PURGED = 'バックアップインフォのAPOS GTID' ; -コア 
設定@@ SESSION.SQL_LOG_BIN = @ TEMP_LOG_BIN;

[2]のmysqldumpバックアップとリカバリを実現

 

[3]のバックアップとリカバリを実現するxtrabackup

 

 

参照文献:

  

  詳細GTID:https://blog.csdn.net/wmq880204/article/details/53160078

  詳細GTID:https://blog.csdn.net/thundermeng/article/details/50401150

おすすめ

転載: www.cnblogs.com/gered/p/11420941.html