MySQL 5.7 における部分テーブルのデュアルマスター同期の実装プロセスの詳細な説明

MySQL 5.7 における部分テーブルのデュアルマスター同期の実装プロセスの詳細な説明

序文

最近、私はある要件に遭遇しました。会社の業務上、2 つのデータベース間の一部のテーブルは、リアルタイムかつ双方向にデータを同期する必要があり、いずれかのデータベースのダウンタイムが他のデータベースに影響を与えないようにする必要があります。ここでは、後の再構築に使用するために、私自身の技術調査を記録します。早速、詳しい紹介を見ていきましょう。

MySQL 5.7をインストールする

インストール用の yum ソースをダウンロードするには、公式 Web サイト https://dev.mysql.com に直接アクセスすることをお勧めします。これは安全で便利です。

https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm を実行します。
yum -y インストール mysql57-community-release-el7-11.noarch.rpm
yum -y mysql-server をインストールします
# MySQL 5.7 をインストール
systemctl で mysqld を起動します。
# MySQLを起動する

デュアルアクティブの設定

my.cnf の設定

ここでは単純なデュアルマスター構成のみを行い、データベース関連の最適化は行いません。最適化が必要な場合は、プライベートチャットでお問い合わせください。

MySQL1の設定は以下のとおりです

[mysqld]
vim /etc/my.cnf
データディレクトリ=/var/lib/mysql
ソケット=/var/lib/mysql/mysql.sock
シンボリックリンク=0
ログエラー=/var/log/mysqld.log
pidファイル=/var/run/mysqld/mysqld.pid
スキップ名解決=オン
#シンプルなパスワードを設定するvalidate_password_policy=0
パスワードの長さを検証する=1
###メイン設定 log_bin=bin_log
サーバーID=1
binlog-do-db=ziyun
# どのライブラリがslave_parallel_type='logical_clock'から複製できるか
#レプリケーションタイプをLOGICAL_CLOCKに設定する
スレーブ並列ワーカー = 4
#並列処理の数を4に設定する
###設定relay-log=relay-binから
リレーログインデックス=リレービンインデックス
複製するDB=ziyun
# メインサービスライブラリのレプリケーションを許可する replicate-do-table=ziyun.test1
# メインサービスライブラリのどのテーブルが複製可能か replicate-do-table=ziyun.test2

MySQL2 の設定は基本的に上記と同じですが、 server-id=2が変更され、残りは変更されません。

MySQLコマンド設定

SQLコマンドラインインターフェースでは以下が設定されます

主な構成:

mysql> 'slave'@'192.168.1.100' というユーザーを作成し、'123.com' で識別します。 
mysql> 'slave'@'192.168.1.100' に *.* のレプリケーションスレーブ権限を付与します。
# 承認されたレプリケーション ユーザーとパスワードmysql> show master status;
+-----------------+----------+--------------+------------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+------------------+
| bin_log.000002 | 8384 | ziyun | | |
+-----------------+----------+--------------+------------------+------------------+
セット内の 1 行 (0.00 秒)

構成から:

mysql> マスターを変更する
 -> MASTER_HOST='192.168.1.101',
 -> MASTER_USER='スレーブ'、
 -> MASTER_LOG_FILE='bin_log.000002'、
 -> MASTER_LOG_POS=8384;
クエリは正常、影響を受けた行は 0 行、警告は 2 件 (0.01 秒)
mysql> スレーブを起動します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)
mysql>スレーブステータスを表示\G
  スレーブIO実行中: はい
  スレーブSQL実行中: はい
# 上記のすべてが「はい」であり、エラーがないことを確認します。

MySQL2でも同じ設定が可能です

デュアルマスター同期テスト

ここでは、両側に ziyun データベースを構築し、test1 test2 test3 テーブルを作成しました。テスト結果は次のとおりです。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQLは2つのテーブル間のデータの同期を実現します
  • 自動同期テーブル構造のMySql開発

<<:  VUEはFlappy Birdゲームのサンプルコードを実装します

>>:  新しい Linux ファイル権限設定における umask の詳細な理解

推薦する

LayUI+Shiroは動的なメニューを実装し、メニュー拡張の例を記憶します

目次1. Maven 依存関係2. メニュー関連クラス1. メインメニュー2. サブメニュー3. S...

Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

最近、社内に Hadoop テスト クラスターを構築したいので、docker を使用して Hadoo...

文字列の最初の文字を取得してテキストアイコン機能を実現する純粋なCSS

CSS でテキストアイコンを実装する方法 /*アイコンスタイル*/ .nav-icon-norma...

tbodyタグの魔法はテーブルコンテンツの表示を高速化します

他の人のウェブページを保存して見たことがあると思いますが、特にdwで開くと、多くのウェブページに&l...

どのような種類の MYSQL 接続クエリを知っていますか?

序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...

MySQLデータベース移行により、大量のデータを迅速にエクスポートおよびインポートできます

データベースの移行は、よく遭遇する問題です。データ量が少ない場合、移行は基本的に問題になりません。実...

Tomcatの自動シャットダウンに関するバグ修正

序文最近、4 年間実行されている Java EE Web プロジェクトでは、システムが開けないという...

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

CSS3はグラフィックの落下アニメーション効果を実現します

まずは効果を確認実装コード <div class="box box1"&g...

Docker で onlyoffice をインストールして展開する詳細なプロセス

0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...

MySQLのslave_exec_modeパラメータの詳細な説明

今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...

CentOS 7 環境でソースコードから MySQL 5.7 をインストールする方法

この記事では、CentOS 7 環境でソース コードから MySQL 5.7 をインストールする方法...

MySQL ログの設定と表示方法

MySQL には次のログがあります。エラーログ: -log-errクエリログ: -logスロークエリ...

HTMLバージョン宣言DOCTYPEタグ

通常のウェブサイトのソースコードを開くと、ソースコードは<!DOCTYPE htmlで始まる必...

Linux インデックスノード inode の詳細な説明

1. inodeの紹介inode を理解するには、まずファイル ストレージから始める必要があります。...