導入 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 inspect は Docker クライアントのネイティブ コマンドであり、...
目次ロックの概要ロックの分類データベース操作の粒度データ操作の種類MySQL ロックさまざまなストレ...
MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...
シナリオリクエストが 10 件あるが、同時リクエストの最大数は 5 件で、リクエスト結果が必要である...
序文MySQL では、server-id を使用してデータベース インスタンスを一意に識別し、それを...
1. はじめに先ほど、ウェブページの急速な発展について紹介しました。今回は、より深い内容についてお...
目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...
昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...
タブ: カテゴリ + 説明タグバー: カテゴリ => ユーザーに現在地と目的地を知らせる1. ...
cmdにnet start mysqlと入力すると、プロンプトが表示されます: サービス名が無効です...
このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...
まずMySQLソースをクエリするdocker 検索 mysql公式ウェブサイトにアクセスしてイメージ...
1. Dockerネットワークカードを作成する [root@i ~]# brctl addbr d...
まず、github から nacos の圧縮パッケージをダウンロードします: https://git...
ある日、リーダーはメイン ページに iframe を埋め込み、親ページと子ページ間で双方向にメッセー...