導入 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を設定する方法
docker exec コマンドは、実行中のコンテナ内でコマンドを実行できます。 docker ex...
使用環境cmd モードで、mysql --version と入力します (インストールされている M...
この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...
1. ウェブページの基本構造: XML/HTML コードコンテンツをクリップボードにコピー<...
コンテナの自動起動Docker は、コンテナが終了したとき、または Docker が再起動されたとき...
Ubuntu 18のインストール中に、USBディスクからUbuntuのインストールを開始すると、mm...
目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...
yum install mysql-serverと入力します。続行するにはYを押してくださいインスト...
目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...
序文この記事は、サードパーティのモジュールをロードせずにNginxで処理できることのみに焦点を当てて...
1. Dockerの起動の問題:問題は解決しました: Hyper-V をオンにする必要があります (...
目次コードの実行に長い時間がかかる場合はどうなりますか? Axiosにはタイムアウト処理機能が搭載さ...
1. インストールバージョンの詳細 サーバー: MariaDB サーバーバージョン: 5.5.60-...
独自のWebプロジェクトをtomcatディレクトリの下のwebappsディレクトリに配置します。 R...
WSLとはBaidu 百科事典からの一節を引用します。 Windows Subsystem for ...