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 プログラムの実行中に動的ライブラリをロードできない場合の解決策
本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...
この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...
目次1. WordPressの導入1. 環境を整える(II) イメージを実行するDocker の作成...
Vue スキャフォールディングでは、エントリ ファイル main.js の新しい Vue コードに、...
1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...
ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...
軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...
目次序文1. 再帰コンポーネント2. 右クリックメニューコンポーネント要約する序文今日、プロジェクト...
以下の情報はインターネットから収集したものです1. アンカーは、Web ページ作成におけるハイパーリ...
Js での 2 次元配列の作成:まず、JavaScript は 1 次元配列のみをサポートしています...
システムをリセットした後、かなり前にインストールした MySQL データベースのコンソール クエリで...
概要ボリュームは、さまざまなストレージ リソースを抽象化および仮想化したものです。ストレージ リソー...
1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...
この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...
目次1.setInterval() 2.タイムアウトを設定する() 1.setInterval()指...