MySQLマスタースレーブデータベース構築方法の詳細な説明

MySQLマスタースレーブデータベース構築方法の詳細な説明

この記事では、MySQL マスター/スレーブ データベースの構築方法について説明します。ご参考までに、詳細は以下の通りです。

マスタースレーブサーバーは、MySQL のリアルタイムデータ同期とバックアップに非常に適したソリューションです。現在、大規模、中規模、小規模のすべての Web サイトは、MySQL データベースのマスタースレーブサーバー機能を使用して、Web サイトデータベースの非同期バックアップを実行しています。ここで、マスタースレーブサーバーの構成手順を紹介します。

MySQL マスタースレーブ レプリケーションには、少なくとも 2 つの MySQL サービスが必要です。もちろん、MySQL サービスを異なるサーバーに分散することも、1 つのサーバーで複数のサービスを開始することもできます。

(1)まず、マスターサーバーとスレーブサーバーのMySQLバージョンが同じであることを確認する

(2)マスターサーバー上でスレーブデータベースアカウントを設定し、次のようにREPLICATION SLAVEを使用して権限を付与します。

mysql> 'slave001'@'192.168.0.99' に *.* のレプリケーションスレーブを許可します。
'123456';
クエリは正常、影響を受けた行は 0 行 (0.13 秒)

(3)メインデータベースの設定ファイルmy.cnfを変更し、BINLOGを有効にし、server-idの値を設定します。変更後、MySQLサービスを再起動する必要があります。

[mysqld]
ログ bin = /home/mysql/log/mysql-bin.log
サーバーID=1

(4) 次に、マスター サーバーの現在のバイナリ ログ名とオフセットを取得します。この操作の目的は、スレーブ データベースの起動後にこの時点からデータを回復することです。

mysql> マスターステータスを表示します。
************************** 1. 行 ****************************
ファイル:mysql-bin.000003
ポジション: 243
バイナリログ_Do_DB:
バイナリログを無視:
セット内の 1 行 (0.00 秒)

(5) これで、マスターデータの更新を停止し、マスターデータベースのバックアップを生成できます。mysqldump を使用して、データをスレーブデータベースにエクスポートできます。もちろん、cp コマンドを使用してデータファイルをスレーブデータベースに直接コピーすることもできます。

データの一貫性を確保するために、データをエクスポートする前にプライマリ データベースを READ LOCK する必要があることに注意してください。

mysql> 読み取りロック付きのテーブルをフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.19 秒)

次にmysqldump

mysqldump -h127.0.0.1 -p3306 -uroot -p テスト > /home/chenyz/test.sql

プライマリ データベースをバックアップした後、書き込み操作を復元するのが最適です。

mysql> テーブルのロックを解除します。
クエリは正常、影響を受けた行は 0 行 (0.28 秒)

(6)マスターデータのバックアップからtest.sqlファイルをスレーブデータベースにコピーし、インポートします。

(7)次に、スレーブデータベースのmy.cnfファイルを変更し、server-idパラメータを追加し、レプリケーションに使用するユーザー、マスターデータベースサーバーのIPとポート、およびレプリケーションログを実行するファイルと場所を指定します。

[mysqld]
サーバーID=2
log_bin = /var/log/mysql/mysql-bin.log
マスターホスト =192.168.1.100
マスターユーザー=テスト
マスターパス=123456
マスターポート =3306
マスター接続再試行=60
複製-do-db =テスト

(8)スレーブサーバー上でスレーブプロセスを起動する

mysql> スレーブを起動します。

(9) show salve statusを実行してスレーブサーバーを確認する

mysql> スレーブステータスを表示 G
************************** 1. 行 ****************************
Slave_IO_State: マスターがイベントを送信するのを待機中
マスターホスト: ローカルホスト
マスターユーザー: ルート
マスターポート: 3306
接続再試行: 3
マスターログファイル:mysql-bin.003
読み取りマスターログ位置: 79
リレーログファイル: gbichot-relay-bin.003
リレーログ位置: 548
リレーマスターログファイル:mysql-bin.003
スレーブIO実行中: はい
スレーブSQL実行中: はい

(10)これで、マスターサーバー上でいくつかの更新操作を実行し、スレーブサーバー上で更新が完了したかどうかを確認できます。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • Docker コンテナを使用して MySql マスター スレーブ レプリケーションを構築する
  • MySQL 5.7.18 マスタースレーブレプリケーション設定(マスター 1 台とスレーブ 1 台)チュートリアルの詳細な説明
  • MySQL 5.7 Docker のマスタースレーブレプリケーションアーキテクチャの構築に関するチュートリアル
  • MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明
  • Docker ベースの MySQL マスタースレーブレプリケーション環境を構築するための実装手順
  • MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

<<:  Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明

>>:  Vue.js ソースコード解析のカスタム手順の詳細な説明

推薦する

Vue ページ監視ユーザープレビュー時間機能実装コード

最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対する...

vue3+vite プロジェクトで svg を使用する方法の詳細なグラフィック説明

今日、vue3+viteプロジェクトの実践で、svgを使用する場合、以前の記述方法が使用できないこと...

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

最近、ウェブサイトを https アクセスに変換したいのですが、すべて完了した後、Baidu Web...

Centos7環境でYUMを構築する方法

1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...

Unicodeの一般的な記号

Unicode は、世界中のすべてのテキストと記号に対応できる国際組織によって開発された文字エンコー...

VMware 仮想マシンの NAT モードを構成する方法

この記事では、VMware仮想マシンのNAT構成プロセスを詳しく説明します。具体的な内容は次のとおり...

divとtableの選択と組み合わせ方について簡単に説明します

ページレイアウトは、Web ページを扱い始めた頃からずっと気にかけていたことです。初期のテーブル構造...

CSS3 は下部に固定されたフッターを実装します (ページの高さに関係なく常に下部にあります)

序文フッター領域を下部に固定します。ページの高さや幅に関係なく、モバイル メニューと同様に、フッター...

CocosCreatorでクールなレーダーチャートを描く方法

目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...

Linux で Apache を使用してファイル サーバーを構築する手順

1. ファイルサーバーについてプロジェクトでは、公開ソフトウェアやデータをプロジェクト チーム メン...

HTML タグのカスタム属性に関する質問

以前の開発では、クラス、名前などの HTML のデフォルト属性を使用していました。 Huawei社の...

フローティングをクリアするいくつかの方法(推奨)

1. 同じタイプの空の要素を追加し、要素の CSS 属性 clear:both; を設定します。 ...

Dockerfile echoは、指定されたファイル内の複数行のテキストを実装する方法を指定します。

Dockerfile内の指定されたファイルに複数の行を追加します。echoの後の「$」記号に注意し...