序文 リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケーション メカニズムを提供します。公式の紹介は次のとおりです。 MySQL レプリケーションは、マスター データベースから 1 つ以上のスレーブ データベースにデータを同期できます。また、この同期プロセスはデフォルトで非同期で動作し、マスター データベースとスレーブ データベース間のリアルタイム接続を維持する必要はありません (つまり、接続の中断が許可されます)。また、同期する必要があるデータベースとデータ テーブルのカスタム構成も可能です。 MySQL レプリケーションの利点と適用シナリオは次のとおりです。 1. MySQL レプリケーションを使用して、負荷分散と読み取り/書き込み分離 (マスター データベースは更新のみ、スレーブ データベースは読み取りのみ) を実現し、データベースのパフォーマンスを向上させます。 2. データのセキュリティを確保するために、MySQL レプリケーションを通じてリアルタイムのデータ バックアップが実現されます。 3. MySQL レプリケーションを介してオフライン データ分析を実装します (マスター データベースがデータを生成し、スレーブ データベースの分析と計算はマスター データベースのパフォーマンスに影響を与えません)。 4. データの配信。 MySQL レプリケーションの完全な公式ドキュメントについては、https://dev.mysql.com/doc/refman/5.7/en/replication.html を参照してください。 仕組み 1111 1. マスター内のすべてのデータベース変更イベントはバイナリログファイルに書き込まれます。 2. スレーブで「SLAVE START」コマンドが実行されると、スレーブI/Oスレッドが開始され、マスターに接続されます。 3. マスターはスレーブI/Oスレッドの接続を検出し、ログジャンプスレッドを開いて応答します。 4. マスターバイナリログは、マスターログジャンプスレッドとスレーブI/Oスレッドを介してスレーブリレーログに送信されます。 5. スレーブSQLスレッドがリレーログをデータに復元し、同期が完了します。 注: 「SHOW PROCESSLIST」コマンドを使用して、マスターとスレーブの対応するスレッドの実行ステータスを表示できます。 マスターの設定 バイナリ ログを有効にし、ServerID を設定します。ServerID は一意である必要があり、1 から 232-1 の範囲にすることができます。 [mysqld] # バイナリログを有効にする ログ bin = mysql bin # グローバルIDを設定する サーバーID=1 # 同期するデータベースを指定します (データベース名にカンマが含まれる場合があるため、複数のデータベースはカンマで区切るのではなく、複数回設定する必要があります) binlog-do-db=データベース名 #同期を禁止するデータベースを指定します binlog-ignore-db=database_name # バイナリログ形式を指定する binlog_format=MIXED 同期アカウントを作成する 各スレーブはマスター データベースに接続するためにアカウントとパスワードを使用する必要があるため、マスター データベースにアカウントを提供する必要があります。独立したアカウントを使用し、データ同期の権限のみを承認することをお勧めします。 'password' で識別されるユーザー 'repl'@'%.example.com' を作成します。 *.* のレプリケーションスレーブを 'repl'@'%.example.com' に付与します。 バイナリログ情報を取得する スレーブが I/O スレッドを開始するときは、バイナリ ログからいくつかの情報を渡す必要があるため、次のバイナリ ログ情報を取得する必要があります。 マスターステータスを表示します。 SHOW MASTER STATUS コマンドを実行してバイナリ ログ情報を取得し、ファイルおよび位置フィールドの値を記録します。 同期前にマスターとスレーブのデータが一致していることを確認する スレーブが I/O スレッドを開始する前に、マスターとスレーブのデータが一貫していることを確認する必要があります。そのため、最初にマスターをロックし (データの変更を防ぐため)、データの一貫性を確保した後、手動で同期してロックを解除します。 読み取りロック付きでテーブルをフラッシュします。 手動データ同期関連の操作について簡単に説明します... テーブルのロックを解除します。 スレーブの設定 ServerID を設定するには、BinLog を有効にする必要はありません。 [mysqld] # グローバルIDを設定する サーバーID=2 # 同期されたデータベースを指定します replicate-do-db=database_name #同期を禁止するデータベースを指定しますreplicate_ignore_db=database_name マスター情報を設定するには、次のコマンドを実行します。 mysql> マスターを変更する -> MASTER_HOST='マスターホスト名', -> MASTER_PORT='master_host_port', -> MASTER_USER='レプリケーションユーザー名', -> MASTER_PASSWORD = 'レプリケーションパスワード'、 -> MASTER_LOG_FILE='記録されたログファイル名', -> MASTER_LOG_POS=記録されたログの位置; I/Oスレッドの開始
同期ステータスを確認します。
マスターのbinlog_formatパラメータ binlog_format はバイナリ ログの形式を構成するために使用され、次の 3 つのタイプをサポートします。 行 データ行に基づいて変更を記録します。このモードは、SQL ステートメント、ストアド プロシージャ、関数、トリガーなどとは関係ありません。各行のデータが変更されたかどうかのみを考慮します。変更された場合は記録されます。したがって、行モードの精度は最も高くなります。しかし、欠点としては、テーブル構造が変更された場合など、場合によっては大量のコンテンツが生成され、効率が低下することがあります。 声明 SQL ステートメントによる記録は明らかに行モードの欠点を解決しますが、SQL ステートメントは非常に複雑で予期しない状況が発生しやすいため、精度が十分に高くないという問題があります。 混合 行とステートメントの混合モードでは、MySQL は行を使用するタイミングとステートメントを使用するタイミングを自動的に決定します。これはデフォルトのモードでもあります。 Replicate-do-db ノート スレーブで replicate-do-db および replicate-ignore-db 構成項目を使用する場合、次のようなデータベース間の SQL ステートメントは同期されないことに注意してください。 複製するDB=a b を使用します。 a.some_table を更新し、some_field を 'some value' に設定します。 解決策は、次のように、replicate_wild_do_table と replicate_wild_ignore_table を使用することです。 replicate_wild_do_table=データベース名.% replicate_wild_ignore_table=データベース名.% 以下もご興味があるかもしれません:
|
<<: JS 関数のアンチシェイクと関数スロットリングを理解する方法
1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...
みなさんこんにちは。今日はカルーセルの実装についてお話しします。私が作成したカルーセルの効果は次のと...
ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...
目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...
インストールパス: /application/mysql-5.7.18 1. 事前準備MySQL 依...
3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...
以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピーbody、di...
目次1. ディレクトリを入力してプロジェクトを作成する2. 必要な設定項目を選択します2.1 Vue...
Nginx を使用して同じドメイン名で複数のプロジェクトを構成するには、次の 2 つの方法があります...
目次1. 概要2. dockerを使用してTomcatをデプロイし、Skywalkingに接続する要...
Linux環境で、特定のソフトウェア(パッケージ)がインストールされているかどうかを確認したい。 r...
1. イメージをプルするdocker pull registry.cn-hangzhou.aliyu...
序文Docker はコンテナの環境変数を設定できます。設定方法は 2 つあります。イメージを作成する...
Windows 64ビットでのMySQLのインストールについて説明します。5.7以降、MySQLの...
mysql idは1から始まり、不連続なidの問題を解決するために自動的に増加します。強迫性障害の私...