1.MySQLレプリケーションの概念 これは、プライマリ データベースの DDL および DML 操作をバイナリ ログを介してレプリケーション サーバーに転送し、レプリケーション サーバーでこれらのログ ファイルを再実行して、レプリケーション サーバーとプライマリ サーバーのデータを同期させることを意味します。レプリケーション プロセスでは、1 つのサーバーがマスターとして機能し、1 つ以上の他のサーバーがスレーブとして機能します。マスターはバイナリ ログ ファイルへの更新を書き換え、ログのローテーションを追跡するためにファイルのインデックスを維持します。これらのログには、スレーブ サーバーに送信された更新が記録されます。スレーブがマスターに接続すると、スレーブがログで読み取った最後の成功した更新の場所がマスターに通知されます。スレーブは、その時点から発生するすべての更新を受け入れ、その後ブロックして、マスターからの新しい更新の通知を待機します。 2. 複製の目的 データはマスタースレーブレプリケーションを通じて同期され、読み取り/書き込み分離 (mysql-proxy) を使用してデータベースの同時負荷容量が向上します。また、マスタースレーブ設計として使用することで、ホストが応答を停止した後でも、アプリケーションをバックアップマシンに切り替えて非常に短時間で実行を継続できるようにします。 利点: (1)データベースクラスタシステムには複数のデータベースノードがあり、1つのノードに障害が発生しても、他の正常なノードがサービスを継続することができます。 3. レプリケーションの実装(3つの方法) (1)DRBDは、ブロックデバイスの内容をサーバー間でミラーリングする、ソフトウェア実装の非共有ストレージレプリケーションソリューションです。 Mysql データベースのレプリケーション操作は、おおまかに次の手順に分かれます。 (1)マスターはバイナリログを有効にする。バイナリ ログを有効にする操作については、「ログ管理」で詳しく説明します。 4. MySQLレプリケーションの集中モード MySQL 5.1 以降のバージョンでは、レプリケーションの改善として、新しいレプリケーション テクノロジである行ベースのレプリケーションが導入されました。このテクノロジーは、以前の binlog モードではなく、テーブル内で変更されたレコードに重点を置いています。 MySQL 5.1.12 以降では、次の 3 つのモードを使用してこれを実現できます。 (1)SQL文ベースのレプリケーション(SBR) それに応じて、binlog にはステートメント、行、混合の 3 つの形式があります。 Mbr モードでは、sbr モードがデフォルトです。 binlog 形式は実行時に動的に変更できます。マスタースレーブレプリケーションモードを設定する方法は非常に簡単です。次のように、以前のレプリケーション構成に基づいてもう 1 つのパラメータを追加するだけです。 binlog_format = "ステートメント" #binlog_format="行" #binlog_format=”混合” もちろん、実行時にbinlog形式を動的に変更することもできます。 Mysql> セッション binlog_format="statement" を設定します 5. メインサーバーの動作を制御する マスター: 192.168.11.139 (1)プライマリサーバー: mysql> '%datadir%' のような変数を表示します。 +---------------+--------------------------+ | 変数名 | 値 | +---------------+--------------------------+ | データディレクトリ | /application/mysql/data/ | +---------------+--------------------------+ プライマリ サーバーでバイナリ ログを有効にします。 mysql> 'log_bin' のような変数を表示します。 +---------------+-------+ | 変数名 | 値 | +---------------+-------+ | log_bin | オフ | +---------------+-------+ セット内の行数 (0.00 秒) OFFはバイナリログが閉じていることを意味します ログ 3 を有効にする手順: ①mysqlインストールディレクトリ/my.cnfを開く log_bin[ファイル名] このステートメントでは、log-bin はバイナリ ファイルを開くことを示します。filename はバイナリ ログの名前です。指定されていない場合は、デフォルトではホスト名に続いてファイル名として -bin が使用され、デフォルトでは datadir ディレクトリに保存されます。ここでbinary_logを指定して、指定されたデータベースに対してのみバイナリファイルを生成する場合は、次のステートメントを追加する必要があります。 Binlog-do-db=db_name (データベース名) 指定されたデータベースのバイナリファイルログを生成しない場合は、次のステートメントを追加する必要があります。 Binlog-ignore-db-db_name (データベース名) ③mysqlサービスを再起動します。 MySQL インストール ディレクトリ/データ フォルダに、「binary_log.デジタル番号」ファイル (binary_log.00001 など) が表示されます。MySQL サービスが再起動されるたびに、バイナリ ファイルが再生成され、ファイル名の数字が増加します。 起動が成功したら、MySQL設定ファイルmy.cnfを変更し、server-idを設定します。コードは次のとおりです。 サーバーID=1 バイナリログ-do-db=xscj バイナリログを無視するdb = mysql Server-id=1: 各データベース サーバーには一意の server-id を割り当てる必要があります。通常、マスター サーバーの場合は 1 です。マスター サーバーとスレーブ サーバーの server-id を同じにすることはできません。 Binlog-do-db: は、コピーする必要があるデータベースを示します。ここでは、xscj が例として使用されています。Binlog-ignore-db: は、コピーする必要のないデータベースを示します。 マスター上のレプリケーションに必要なユーザーを作成します mysql> *.* のレプリケーションスレーブを rep_user@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> マスターステータスを表示\G ************************** 1. 行 **************************** ファイル: binary_log.000001 位置: 303 バイナリログ_Do_DB: バイナリログを無視: セット内の行数 (0.00 秒) マスターホストのデータをバックアップし、/data/binary_dump.txt ファイルに保存してから、スレーブマシンにインポートします。具体的な実行文は次のとおりです。 [root@localhost bin]# mysqldump -h localhost>/data/binary_dump.txt (2)スレーブサーバの動作を制御する スレーブ サーバーのデータベース構成ファイルを変更し、次のように構成します。 Server-id=2 ##スレーブサーバIDを設定する マスターホスト=192.168.11.129 マスターユーザー=担当者ユーザー Master-password= ## マスター サーバーに接続するためのパスワードを設定します。 Replicate-do-db ## 同期するデータベースを設定します。複数設定できます。 Master-port=<port> ## ポート番号を設定します。 スレーブを再起動し、スレーブ ホストの mysql で次のコマンドを再実行して、スレーブ サービスをシャットダウンします。 Mysql>stop slave; スレーブにレプリケーション関連情報を実装するよう設定し、以下のコマンドを実行します。Mysql>change master to >マスターホスト='' >マスターユーザー=''、 >マスターパスワード='' >master_log_file='binary_log.000007', >マスターログ位置=120; 入力: show slave status\G は、スレーブ サーバー スレッドに関する主要なパラメーター情報を提供するために使用されます。 よく使われるコマンドは以下のとおりです
以上がMysqlのレプリケーションの詳細な分析に関するこの記事の内容です。皆様のお役に立てれば幸いです。 MySQL の instr を使用したファジー クエリ メソッドの紹介、MySQL クエリ ステートメントのユーザー変数のコード分析、MySQL 操作における JSON データ型操作の詳細な説明など、ぜひご参照ください。不足している点がありましたら、メッセージを残してご指摘ください。問題があれば解決できます。物事は静止しているわけではありません。 以下もご興味があるかもしれません:
|
>>: Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策
ようやく手元のプロジェクトが終了し、行方不明だった人たちが戻ってきました!プロジェクトを進める過程で...
序文:前回の記事では、さまざまな MySQL ステートメント構文の使用法とユーザー権限に関する知識を...
以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...
目次1. 監視ポート関係の説明操作する2. 監視サービス関係の説明操作する3. テンプレートのインポ...
最近、ウェブサイトを開発する際にトップに戻るボタンを作成する必要がありますが、私は主にバックエンドの...
さまざまな色の16進コード表[パート1] 赤とピンク、およびそれらの 16 進コード。 #99003...
本日実装する機能は、以下の機能です。vue.js シミュレーションカレンダープラグインさて、もう無駄...
目次1.ソケットを作成する2. ソケットをバインドする3. 聞き手を作る。聞く4. 接続が受け入れら...
この記事では、例を使用して MySQL ストアド プロシージャのエラー処理について説明します。ご参考...
目次モジュール化の基本概念モジュール化とは何かモジュール分解の利点Node.js のモジュール性No...
始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。テーブルを...
目次1. beforeunload イベント2. アンロードイベント3. ソースコードプロジェクトの...
国内の多くの広告主にとって、印刷広告の制作と評価は、しばしばかなり主観的です。自分の感情や美的感覚に...
機能: 前のページまたは次のページにジャンプします。要素: ページングの基本要素は、前のページ + ...
全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できます...