環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サーバー (GPL) MySQLのインストール APT 経由でインストールします。公式ガイド ドキュメントのアドレス: 1. mysql-apt-config_0.8.3-1_all.debをダウンロードする 2. debをインストールする MySQL APT リポジトリの使用に関するクイック ガイド: >sudo dpkg -i mysql-apt-config_0.8.3-1_all.deb 3. ソースの更新 >sudo apt-getアップデート 4. MySQLをインストールする >sudo apt-getでmysql-serverをインストール 5. インストールを選択し、プロンプトに従ってパスワードを設定します。 さらに、ファイアウォールの IP をバインドし、ポート 3306 を開く設定も必要です。ここでは主に MySQL の準同期レプリケーションについて学習し、MySQL のインストールについてはあまり説明しません。質問がある場合は、メッセージを残してください。 MySQL 準同期レプリケーションの紹介 (1)デフォルトでは、MySQLのレプリケーション機能は非同期であり、最高のパフォーマンスを提供できます。マスターデータベースがbinlogログをスレーブデータベースに送信すると、アクションが完了し、スレーブデータベースがログを受信したかどうかは確認されません。このプロセスは、マスターサーバーまたはスレーブサーバーに障害が発生した場合、スレーブサーバーがマスターサーバーから送信されたbinlogログを受信できない可能性があることを意味し、マスターサーバーとスレーブサーバーの間でデータの不整合が発生し、回復中にデータが失われることもあります。 知らせ: マスター サーバーとスレーブ サーバーの両方で半同期レプリケーション モードを有効にする必要があります。有効にしないと、マスター サーバーはデフォルトで非同期レプリケーション モードを使用します。 (2)非同期レプリケーションの場合: MySQL5.6 データベースのマスター/スレーブ同期のインストールと構成の詳細 (3)上記の可能性のあるエラーに対処するために、MySQL 5.5では半同期レプリケーションモードが導入されました。このモードでは、スレーブ サーバーがマスター サーバーから送信された (4)タイムアウトが発生すると、マスターサーバーは、少なくとも1台のスレーブサーバーが時間内に情報を受信するまで、一時的に非同期レプリケーションモードに切り替わります。 (5)リレーログの自己修復: MySQL 5.5.X バージョンから、 (6)半同期レプリケーションと非同期レプリケーションの切り替え: 半同期レプリケーションの動作原理は、スレーブ IO_Thread スレッドが binlog ログを受信すると、マスターに確認を与える必要があるというものです。rpl_semi_sync_master_timeout MySQL 半同期レプリケーション構成 まず、次の 2 つの MySQL をインストールする必要があります。
元のデータベースは次のようになります。 1. マスター構成 (1)マスターデータベースに半同期レプリケーションプラグインをインストールします。 mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; (2)マスター上で半同期レプリケーションを有効にする: mysql> グローバル rpl_semi_sync_master_enabled = 1 を設定します。 (3) 上記の画像は、MySQL 構成のファイル パスを示しています。 [mysqld] ログ bin = mysql bin サーバーID = 10086 サーバーIDビット = 33 rpl_semi_sync_master_enabled=1 rpl_semi_sync_master_timeout=1000 (4)MySQLサーバのUUID設定ファイルを変更します。 root@xuliugen:/var/lib/mysql# pwd var/lib/mysql の
[自動] サーバーUUID=8d90feb7-1a88-11e7-9d11-000c298a546f (5)設定が成功したかどうかを確認します。 mysql>PLUGIN_NAME、PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%'; (6)パラメータの説明: 1. 2. 3. 4. マスターを構成するときに、1 つだけ設定され、その他はデフォルト設定に設定されていることがわかります。 2. スレーブ構成 (1)スレーブデータベースに半同期レプリケーションプラグインをインストールします。 mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; (2)スレーブ上で半同期レプリケーションを有効にする: mysql> グローバル rpl_semi_sync_slave_enabled = 1 を設定します。 (3) [mysqld] ログ bin = mysql bin サーバーID=10089 サーバーIDビット = 32 rpl_semi_sync_slave_enabled = 1 (4)MySQLサーバのUUID設定ファイルを変更します。 root@xuliugen:/var/lib/mysql# pwd var/lib/mysql の
[自動] サーバーUUID=8d90feb7-1a88-11e7-9d11-000c298a123f マスターの (5)設定が成功したかどうかを確認します。 mysql>PLUGIN_NAME、PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%'; (6)パラメータの説明: 1. 2. 3. スレーブのマスターを指定する (1)コマンドラインモードでマスターを再起動する root@xuliugen:~# サービスmysqlを再起動します (2)コマンドラインモードでスレーブを再起動する root@xuliugen:~# サービスmysqlを再起動します (3)マスターステータスを確認する: mysql> マスターステータスを表示します\G; ************************** 1. 行 **************************** ファイル:mysql-bin.000004 ポジション: 154 バイナリログ_Do_DB: バイナリログを無視: 実行されたGtidセット: セット内の1行(0.02秒) マイSQL> 知らせ: ファイル:mysql-bin.000004 ポジション: 154 非常に重要なので、後で必要になります。 (4)スレーブのマスターを指定します。 1. まず、スレーブの準同期レプリケーションをオフにします mysql> スレーブを停止します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) 2. スレーブのマスターを指定する mysql>マスターをmaster_host='192.168.1.227'、master_user='root'、master_password='123456'、master_log_file='mysql-bin.000004'、master_log_pos=154に変更します。 クエリは正常、影響を受けた行は 0 行、警告は 2 件 (0.02 秒) で: master_host='192.168.1.227'、マスター データベースの IP アドレスmaster_user='root'、マスター データベースのアカウントmaster_password='123456'、マスター データベースの root ユーザー パスワードmaster_log_file='mysql-bin.000004'、マスター データベースの binlog ファイルmaster_log_pos=154、マスター データベースの binlog ファイルの位置 知らせ: MySQL バージョン 5.6 以降では、マスター スレーブ レプリケーションを実行するときに GTID 方式を使用できます。binglog と pos ポイントを探す必要はありません。マスター サーバーの IP、ポート、アカウント、パスワードを知っているだけで、同期のポイントが自動的に見つかります。GTID 機能が有効になっている場合は、binlog と pos を使用する必要はありません。詳細については、関連資料を参照してください。 3. スレーブの準同期レプリケーションを有効にする mysql> スレーブを起動します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) 4. 半同期レプリケーションが成功するかどうかをテストする 5. スレーブ同期情報を適切に閉じる方法 ある時点で、サーバーはスレーブとして使用されなくなるため、通常は次のコマンドを使用して同期情報をクリアする必要があります。 mysql> stop slave #シャットダウン firstmysql> reset slave #スレーブ同期情報をクリア ただし、show master status\G で表示される場合は次のようになります。 mysql> マスターステータスを表示します\G; 同期情報は引き続き表示されます。これは、 どうすればもっとわかりやすくなりますか?次のコマンドを使用してください: mysql> stop slave #最初にシャットダウンmysql> reset slave all#スレーブ同期情報をクリア
VI. 異常シナリオのシミュレーション (1)半同期レプリケーションと非同期レプリケーションの切り替え: 上記では、半同期レプリケーションから非同期レプリケーションへの切り替えが発生する理由について説明しました。次に、デモ用のシナリオをシミュレートしてみましょう。 シナリオは次のとおりです。 1. スレーブ同期を閉じ、バイナリログログのIO受信を停止します。 mysql> スレーブを停止します。 この操作は IO スレッドをシャットダウンし、10 秒間待機します。マスターがスレーブから確認を受信しない場合は、非同期レプリケーション モードに切り替わります。 上の図では、スレーブが半同期レプリケーション モードをオフにしてから再度オンにしたことがわかります。 mysql> スレーブを起動します。 この時点で、半同期レプリケーション モードが復元されました。 (2)同期エラーケースのデモンストレーション: まず、スレーブ ライブラリからデータベース テーブル
この時点で、半同期ステータスを確認します。 有効になっているため、半同期レプリケーション モードは非同期レプリケーション モードに変換されません。半同期レプリケーション モードは つまり、スレーブライブラリからバイナリログを受け取った後、マスターライブラリに確認を与えますが、 6. 半同期レプリケーションモードのパフォーマンス分析、利点と欠点 通常の状況では、非同期レプリケーション モードはサーバーからの応答を待つ必要がないため、半同期レプリケーション モードよりも速度が速く、スループットが高くなります。データの更新、挿入、削除を行う場合、その速度は半同期レプリケーション モードよりも速くなります。ただし、半同期レプリケーション モードはデータの一貫性を保つために役立ちます。一貫性の要件が高く、ネットワークの変動が小さい一部のデータでは、半同期レプリケーション モードを使用できます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Windows 10 1903 エラー 0xc0000135 の解決方法 [推奨]
概要: この記事では、Avro データをシリアル化して生成し、FlinkSQL を使用して解析する方...
PS: ここではPHPStudy2016を使用しています1. 変更中にMySQLを停止する2. my...
login.html 部分: <!DOCTYPE html> <html lang...
[LeetCode] 180. 連続した数字少なくとも 3 回連続して出現するすべての数字を検索す...
複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...
この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...
目次1. ページレイアウト2. 画像のアップロードと表示3. キャンバスを初期化する4. テンプレー...
目次一致と不一致一致するすべてが平等ではない平等と不平等等しい等しくない一致と不一致シンボルの両側の...
DATE_ADD() 関数は、指定された時間間隔を日付に追加します。現在のテーブル内のすべてのデー...
目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...
前回、Taobaoの詳細ページを分析した後(クリックして表示)、ショッピングモールの基本テンプレート...
ご存知のとおり、CSS の絶対位置はデフォルトでドキュメントに応じて設定されます。たとえば、posi...
目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...
MySQLにデータを保存するとき、乱雑であまり使用されないデータがJSONフィールドに投げ込まれるこ...
目次1. Dockerのセキュリティ問題2. Dockerアーキテクチャの欠陥とセキュリティメカニズ...