簡単な紹介
いわゆる「デュアルマスターレプリケーション」は、実際には「相互マスタースレーブレプリケーション」です。つまり、各マスターホストには、マスターの役割とスレーブの役割の両方があります。このようにして、任意のパーティによって行われた変更は、データの整合性を実現するために、マスターとスレーブを介して別のホストのデータベースに複製されます。これが「デュアルマスターレプリケーション」です。
データベースレプリケーションには、GTIDベースのレプリケーションとバイナリログの場所ベースのレプリケーションの2つの方法があります。この記事で説明した以前の「GTIDベースのレプリケーション」。
システム環境
オペレーティング・システム: | CentOS Linuxリリース7.4.1708(コア) |
ソフトウェアバージョン: | MySQL 5.6.45 |
インターネット情報: | マスター-01:10.10.50.115 |
マスター-02:10.10.50.116 |
MySQLサービスをインストールします
(スキップ、詳細については「MySQL 5.6(CentOS7)」の記事を参照してください)
構成サービス
#master-01について
#!/ bin / sh ########################################## ## ################################## (0)必要なディレクトリを作成します: ##### ### ########################################### ####### ################# mkdir -pv / var / log / mysql / chown mysql.mysql / var / log / mysql / #### ######## ###################################### ############ ############ ############## (1)/etc/mysql/my.cnfファイルを変更します: #!!!ディストリビューションが異なれば、構成場所も異なります。コピーしないでください。コピーしないでください!コピーしないでください! ############################################## #### ######################### mv /etc/mysql/my.cnf /etc/mysql/my.cnf.backup cat << MYCNF >> /etc/mysql/my.cnf server_id = 1 auto-increment-offset = 1 auto-increment-increment = 2 log_bin = mysql-bin binlog_format = MIXED Enforce_gtid_consistency = 1 log_slave_updates = ON gtid_mode = ON MYCNF ################################### ## ######################################### (2)サービスを再起動します: ## ############################################ ###### ######################## systemctl restart mysqld.service
#master-02について
#!/ bin / sh ########################################## ## ################################## (0)必要なディレクトリを作成します: ##### ### ########################################### ####### ################# mkdir -pv / var / log / mysql / chown mysql.mysql / var / log / mysql / #### ######## ###################################### ############ ############ ############## (1)/etc/mysql/my.cnfファイルを変更します: #!!!ディストリビューションが異なれば、構成場所も異なります。コピーしないでください。コピーしないでください!コピーしないでください! ############################################## #### ######################### mv /etc/mysql/my.cnf /etc/mysql/my.cnf.backup cat << MYCNF >> /etc/mysql/my.cnf server_id = 2 auto-increment-offset = 2 auto-increment-increment = 2 log_bin = mysql-bin binlog_format = MIXED Enforce_gtid_consistency = 1 log_slave_updates = ON gtid_mode = ON MYCNF ################################### ## ######################################### (2)サービスを再起動します: ## ############################################ ###### ######################## systemctl restart mysqld.service
レプリケーション用のユーザーを作成する
master-01とmaster-02でそれぞれレプリケーション用のユーザーを作成します。ユーザーを作成したら、ユーザーが正常にログインできるかどうかを確認することを忘れないでください。
#master-01について
GRANT REPLICATION SLAVE ON *。* TO'replication '@'% 'IDENTIFIED BY'BU3CGK6x';
#master-02について
- SQL GRANT REPLICATION SLAVE ON * * 'BU3CGK6x BY' IDENTIFIED TO '複製' @ '%';。
レプリケーションを有効にする
master-01とmaster-02でそれぞれレプリケーションを有効にします。
#master-01について
--SQL -- STOP SLAVE; MASTERをmaster_host = '10 .10.50.116 '、master_port = 3306、 master_user =' replication '、master_password =' BU3CGK6x '、 master_auto_position = 1に変更します。 スレーブを開始します。
#master-02について
--SQL -- STOP SLAVE; MASTERをmaster_host = '10 .10.50.115 '、master_port = 3306、 master_user =' replication '、master_password =' BU3CGK6x '、 master_auto_position = 1に変更します。 スレーブを開始します。
コピー検証
検証プロセスについては、ここでは詳しく説明しません。比較的単純なので、ここではコピーが機能するかどうかを確認するというアイデアの概要のみを示します:
master-01でライブラリとテーブルを作成し、master-02で表示します。 master-02でライブラリとテーブルを作成し、master-01で表示します。
問題がなければ問題ありません。同期がない場合は、データベースでSHOW SLAVE STATUS \ Gステートメントを実行して、同期ステータスと同期エラー情報(存在する場合)を表示できます。
ステータスを確認する
使用のSHOW MASTER STATUSの\ Gのステートメントは、あなた自身のステータスを表示するには、使用のSHOW SLAVE STATUSの\ Gのステートメントをスレーブとして独自のステータスを表示します。
関連記事
「MySQL」-マスタースレーブレプリケーションを設定します(GTIDベースのレプリケーション)
「MySQL」-デュアルマスターレプリケーション(ロケーションベースのレプリケーション)
「MySQL」-マスタースレーブレプリケーションを設定します(ロケーションベースのレプリケーション)
参照
GTIDを使用したMySQLマスタースレーブレプリケーションのセットアップ
バグ#83713 MTSおよびGTIDを使用すると、OSがクラッシュした後、スレーブがリレーログ情報を初期化できませんでした