導入 MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作と読み取り操作を異なるサーバー上で実行できるようになり、同時実行性と応答速度が向上します。 現在、ほとんどの大規模ウェブサイトは、データベースのマスターとスレーブの分離と読み取りと書き込みの分離を採用しており、バックアップの役割を果たすだけでなく、データベースの読み取りと書き込みの負荷を軽減することもできます。私はいつもこれについて聞いていましたが、自分で実践したことはありませんでした。今日はそれを実践し、プロセスを記録する時間があります。 実験環境 2 台のサーバーを準備しました。1 台はローカル コンピューター、もう 1 台はリモート VPS で、データベースは両方のマシンにインストールされています。 マスター 45.78.57.4 CentOS 7 Linux システム、MySQL バージョン 5.1.73 奴隷 ローカルマシン 127.0.0.1 macOS システム、mysql バージョン 5.1.73 構成 ユーザーを作成 マスター データベースにユーザーを作成し、スレーブ データベースからマスター データベースの実行ログを読み取ります。 mysqlコマンドラインで実行する必要があり、まずコマンドラインにログインする必要があります。 次のようにコードをコピーします。 'test'@'45.78.57.4' ('test' によって識別) に *.* のレプリケーション スレーブを許可します。 my.cnf を変更する Linux システムは /etc/my.cnf にあり、Mac システムは MySQL がインストールされているディレクトリにあり、Windows システムも同様です。 my.cnfファイルに次のコードを追加します。 server-id = 1 //データベースID番号 log-bin=master-bin //バイナリログを有効にする log-bin-index=master-bin.index //バイナリログ名 ファイルの最後ではなく、[mysqld]の後ろの先頭に置くように注意してください。これが私のmy.cnfの内容です。 [mysqld] サーバーID=1 ログビン=マスタービン ログ bin インデックス = マスター bin.index データディレクトリ=/var/lib/mysql ソケット=/var/lib/mysql/mysql.sock ユーザー=mysql シンボリックリンク=0 最大許容パケット数=100M [mysqld_safe] ログエラー=/var/log/mysqld.log pidファイル=/var/run/mysqld/mysqld.pid ステータスを表示 MySQL コマンドラインにログイン後、show master status と入力します。以下の情報が表示されれば、マスターデータベースの設定は完了です。 mysql> マスターステータスを表示します。 +-------------------+----------+--------------+------------------+ | ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | マスターbin.000001 | 672675 | | | +-------------------+----------+--------------+------------------+ セット内の 1 行 (0.00 秒) スレーブ ライブラリを構成するときに使用する、ファイルと位置の 2 つの内容を記録します。 ライブラリからの設定 ローカル コンピューター (スレーブ ライブラリ) 上の my.cnf ファイルを見つけて、次の内容を追加します。この構成は、マスター ライブラリの構成と同じ意味を持ちます。 サーバーID=2 リレーログ=スレーブリレービン リレーログインデックス=スレーブリレービンインデックス メインデータベースと同じ場所にあることを確認してください。最後に配置したため関連付けることができませんでした。 マスターライブラリとスレーブライブラリの関連付け 最後のステップは非常に重要です。スレーブ データベースの MySQL コマンドラインにログインし、次のコードを実行します。これは主に、マスター データベースのいくつかの情報を関連付けるためのものです。 マスターをmaster_host='45.78.57.4'、#マスターサーバーIPに変更します マスターポート=3306、 マスターユーザー='テスト'、 マスターパスワード='テスト'、 master_log_file='master-bin.000001'、#マスターログファイル名 master_log_pos=672675; #マスターログ同期開始位置 実行が成功したかどうかに注意してください。実行が失敗した場合は、コードを注意深くチェックして、エラーがどこにあるかを確認します。 実行が正常であれば、スレーブを起動し、接続状態を確認します。 //mysql コマンドラインで start slave を実行する必要があります。 show slave status\G; //スレーブ接続ステータスを表示 ステータス情報 Slave_IO_State: マスターがイベントを送信するのを待機中 マスターホスト: 45.78.57.4 マスターユーザー: テスト マスターポート: 3306 接続再試行: 60 マスターログファイル: master-bin.000001 読み取りマスターログ位置: 672913 リレーログファイル: スレーブリレーbin.000044 リレーログ位置: 504 リレーマスターログファイル: master-bin.000001 スレーブIO実行中: はい スレーブSQL実行中: はい 知らせ! これら 2 つの状態が「はい」であれば、成功とみなされます。そうでない場合は、上記の手順のどのステップに構成エラーがあるかを確認してください。 スレーブIO実行中: はい スレーブSQL実行中: はい テスト ここで、マスター データベースにデータを追加して、スレーブ データベースに同一のデータが存在するかどうかを確認します。存在する場合、構成は正常であり、機能は適切に動作しています。 マスタースレーブ分離の原理は主に、マスターデータベースの実行ログ機能をオンにし、スレーブデータベースからマスターデータベースのログ情報を読み取り、マスターデータベースによって実行された SQL ステートメントをスレーブデータベースで実行して、マスタースレーブ分離を実現し、マスタースレーブデータの一貫性を維持し、データをバックアップすることです。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: テキストまたはJSONを返すようにnginxを設定する方法
タイトルで提起された問題は、段階的に分解して解決することができます。 MySQL では KEY と ...
私は同時通訳音声認識機能を使用して、WeChatアプレットのホームページの音声検索機能を実現しました...
<tr> <th width="12%">あああ<...
1. docker設定ファイルを変更し、ポート2375を開きます。 [root@s162 docke...
展開環境: ここでは docker コンテナ、Linux システム、VmWare 仮想マシンが使用さ...
目次製品要件アイデア問題ライブラリ選択をドラッグコンポーネントを生成する方法コンポーネントを生成する...
目次Vue3 カプセル化メッセージプロンプトインスタンス関数スタイルレイアウトカプセル化メッセージ....
1. openssh-serverをインストールする yum インストール -y openssl o...
目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...
問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...
インストール手順1. 仮想マシンを作成する 2. [カスタム(詳細)]を選択し、[次へ]をクリックし...
目次背景例誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定する正しいアプロー...
ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...
ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...
この記事では、例を使用して、MySQL のさまざまな一般的な結合テーブルクエリについて説明します。ご...