MySQLのマスタースレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。

MySQLのマスタースレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。

大規模な Web サイトでは、多数の同時アクセスを処理するために、Web サイト上の分散負荷分散以上のものが必要です。データビジネス層とデータアクセス層に関しては、従来のデータ構造がまだ使用されている場合、または 1 つのサーバーのみが使用されている場合、データベース接続操作が多すぎるためにデータベースがクラッシュすることは避けられず、データ損失の結果はさらに悲惨なものになります。このとき、データベース接続を減らす方法を検討します。一方では、優れたコードフレームワークを使用してコードを最適化し、me​​mcached などの優れたデータ キャッシュ テクノロジを採用します。十分な資金があれば、メイン データベースの負荷を分散するためにサーバー クラスターを想定することも間違いなく検討します。さて、今日の記事の主題に入りましょう。MySQL マスター/スレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。この方法は最近多くのウェブサイトで使用されており、目新しいものではありません。今日は参考までにまとめておきます。

概要:マスター サーバー (win8.1 システム、IP: 192.168.0.104) と 2 つのスレーブ サーバー (仮想マシン - 1 つは Ubuntu、もう 1 つは Windows Server 2003) をセットアップします。

原則:マスター サーバーは Web サイトの非クエリ操作を担当し、スレーブ サーバーはクエリ操作を担当します。ユーザーは、Web サイトの機能モデルに従って固定された方法でスレーブ サーバーにアクセスするか、プールまたはキューを記述して、リクエストに対してスレーブ サーバーの接続を自由に割り当てることができます。マスター サーバーとスレーブ サーバーは、MySQL バイナリ ログ ファイルを使用してデータの同期を実現します。バイナリ ログはマスター サーバーによって生成され、スレーブ サーバーは応答して同期されたデータベースを取得します。

具体的な実装:

1. マスター サーバーとスレーブ サーバーの両方に MySQL データベースをインストールします。Windows システムには mysql_5.5.25.msi バージョンをインストールし、Ubuntu には mysql-5.6.22-linux-glibc2.5-i686.tar をインストールしました。

Windows への MySQL のインストールについては、地球上のほとんどの人がその方法を知っているはずなので、ここでは説明しません。 Ubuntu への MySQL のインストールについて少しお話しします。オンラインでダウンロードしてインストールするのではなく、オフラインでインストールすることをお勧めします。 https://www.jb51.net/article/157282.htm を参考にしてください。この人が兄弟か姉妹かは分かりませんが、とてもよく書いていて、これに従ってインストールできます。インストール中にいくつかの問題が発生する可能性があります。次の解決策を参照してください。

(1) rootユーザーとしてログインしていない場合は、su - rootを使用してインストール時にrootユーザーに切り替えることをお勧めします。この方法により、常にsudoを使用する必要がなくなります。

(2)解凍したmysqlフォルダを保存します。フォルダ名をmysqlに変更するのが最善です。

(3) ./support-files/mysql.server start で MySQL を起動すると、警告が表示される場合があります。中国語の意味は、読み取りファイルを実行するサービスを起動したときに、my.cnf ファイルが無視されたということです。これは、my.cnf のファイル権限に問題があるためです。MySQL はファイルを危険と見なし、実行しません。ただし、mysql は正常に起動します。ただし、次の構成でサーバー パラメータから my.cnf ファイルを変更すると、ファイルは変更されていることがわかりますが、サービスを再起動すると、変更された構成は実行されず、一覧表示すると、mysql フォルダーに .my.cnf.swp などの中間ファイルが多数見つかります。これは、MySQL が起動時に my.cnf を読み取らないためです。この時点で、my.cnfのファイル権限をmy_new.cnfと同じ権限に変更するだけです。コマンド:chmod 644 my.cnfはOKです。

(4) Ubuntu にはドキュメントの内容を変更するための Vim がありません。Vim をインストールするのが最善です (apt-get install vim)。そうしないと、おそらくおかしくなります。

この時点で、MySQL がインストールされているはずです。

2. マスターサーバーを構成する

(1)マスターMySQLサーバー上にユーザー「repl」を作成し、他のスレーブサーバーがマスターサーバーにリモートアクセスし、このユーザーを介してバイナリログを読み取ってデータ同期を実現できるようにします。

(2)MySQLインストールフォルダを見つけて、my.Iniファイルを変更します。 MySQL にはいくつかのログ記録方法がありますが、今日はそれに焦点を当てていません。バイナリ ログ log-bin を開始するだけです。

[mysqld]の下に次のコード行を追加します。

(3)ログを見る

mysql> マスターステータスを表示します。
+-------------------+----------+--------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| マスターbin.000001 | 1285 | | |
+-------------------+----------+--------------+------------------+
セット内の 1 行 (0.00 秒)

MySQLサービスを再起動する

3. スレーブサーバーを構成する (Windows)

(1)MySQLのインストールフォルダを見つけて、my.iniファイルを変更します。[mysqld]の下に次のコード行を追加します。

MySQLサービスを再起動する

(2)マスターへの接続

マスターをmaster_host='192.168.0.104'に変更します。//マスターサーバーIP
マスターポート=3306、
マスターユーザー='repl',
マスターパスワード = 'mysql'、 
master_log_file='master-bin.000001', //マスターサーバーによって生成されたログ master_log_pos=0;

(3)スレーブを起動する

スレーブを起動します。

4. スレーブサーバー (Ubuntu)

(1)MySQLインストールフォルダを見つけてmy.cnfファイルを変更します。vim my.cnf

(2)./support-files/myql.server restartでMySQLサービスを再起動し、./bin/mysqlでMySQLコマンドウィンドウに入ります。

(3)マスターへの接続

マスターをmaster_host='192.168.0.104'に変更します。//マスターサーバーIP
マスターポート=3306、
マスターユーザー='repl',
マスターパスワード = 'mysql'、 
master_log_file='master-bin.000001', //マスターサーバーによって生成されたログ master_log_pos=0;

(4)スレーブを起動する

スレーブを起動します。

これですべての設定が完了しました。これでマスター MySQL でテストできます。マスター MySQL のすべての操作ログを監視しているため、マスター サーバーのデータベースを変更する操作はすべてスレーブ サーバーに同期されます。試すためにデータベースとテーブルを作成します。 。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Linux ベースの MySQL マスター スレーブ構成の全プロセスを記録する
  • Windows での MySQL データベースのマスター/スレーブ構成チュートリアル
  • MySQL5.7 マスタースレーブ構成例の分析
  • Docker mysql マスタースレーブ構成の詳細と例
  • MySQL マスタースレーブ構成の学習ノート

<<:  H5ウェイクアップアプリの実装方法と注意点のまとめ

>>:  Linux viコマンドの知識ポイントと使い方のまとめ

推薦する

さまざまな MySQL テーブルソートルールのエラーの分析

MySQL が複数のテーブルを結合するときに、次のエラーが報告されます: [Err]1267 – 操...

MySQL の制限パフォーマンス分析と最適化

1. 結論構文: 制限オフセット、行結論: 同じ行条件では、オフセット値が大きいほど、limitステ...

Linux で特定の時間にコマンドを実行する方法

先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...

MySQL マルチテーブル結合入門チュートリアル

接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FOR...

SQL文の最適化の一般的な手順の詳細な説明

序文この記事では主に、SQL ステートメントの最適化の一般的な手順について説明します。これは、参考と...

Vue Element UI カスタム説明リストコンポーネント

この記事の例では、Vue Element UIカスタム説明リストコンポーネントの具体的なコードを参考...

Angularフレームワークのビュー抽象定義の詳細な説明

序文「大規模なフロントエンド プロジェクト向け」に設計されたフロントエンド フレームワークである A...

divの適応高さは残りの高さを自動的に埋めます

シナリオ 1: HTML: <div class="outer"> ...

CSS3入力ボックスの実装コードはGoogleログインのアニメーション効果に似ています

CSS3を使用して、Googleログインページと同様の入力ボックスをアニメーション化します。効果1 ...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

Eclipse は Tomcat を構成しますが、Tomcat には無効なポート解決策があります

目次1. EclipseがTomcatを構成する2. Tomcat の無効なポートの解決方法方法1:...

パフォーマンス負荷診断にMySQLシステムデータベースを使用する方法

ある達人がかつて、自分の妻のことを知るのと同じくらい、自分が管理するデータベースのことを知るべきだと...

Linux システムで crontab を使用して MySQL データベースを定期的にバックアップする方法

システムの crontab を使用して定期的にバックアップ ファイルを実行し、バックアップ結果を日付...

Windows での Tomcat サーバーのインストールに関するチュートリアル

1 ダウンロードして準備するまず、公式ウェブサイトからTomcatをダウンロードする必要があります。...