ホームページ >データベース >mysql チュートリアル >MySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法
マスター/スレーブ レプリケーションは、読み取りと書き込みを分離するための前提条件。 MySQLデータベースが提供するマスタスレーブレプリケーション機能は、複数サーバ上のデータの自動バックアップを容易に実現し、データベースの拡張を実現し、データのセキュリティを大幅に強化します。マスター/スレーブ レプリケーションを実装した後、読み取りと書き込みを分離することで、データベースのロード パフォーマンスをさらに向上させることができます。
図に示すのは、マスター/スレーブ レプリケーションの一般的な実装プロセスです。
読み取りと書き込みの分離を実現するには、まずデータベースのマスター/スレーブ レプリケーションを実装する必要があります。読み取りと書き込みの分離について理解すると、クエリ操作はサブデータベースで完了し、書き込み操作はメイン データベースで実行されます。データはマスター/スレーブ レプリケーションを通じてサブデータベースにバックアップされ、データの整合性が確保されます。これは、データがメイン データベースに書き込まれた後に行われます。
まずマスター/スレーブ レプリケーションの原理を理解しましょう:
マスターになりましょう。 first データベース内のデータが変更されると、変更レコードが binlog ログに書き込まれます。
スレーブ データベースは、一定期間内にマスター データベースの binlog ログを検出し、変更が発生した場合はマスター ログ ファイルの情報を要求します。
原理を理解した後、マスター/スレーブ レプリケーションを有効にするための前提条件を知る必要があります。
マスター ノードはバイナリ ログ ログを有効にする必要があります。 (mysql はデフォルトでは有効にしません) binlog)
スレーブ ノード、binlog ファイルと同期オフセットを指定します
マスターノードのIPを指定します
マスターノードを実行するためのユーザー名とパスワード
これで大まかには理解できたので、次は1 つのマスターと 1 つのスレーブを備えたデータベース モデルを構築し、データベースのマスター/スレーブ セットアップの構成プロセスを示します。
CentOSサーバーを2台用意し、事前にmysql5.7をインストールしておきます。
mysql の my.cnf ファイルを編集します: (インストール方法が異なり、ファイルの場所も異なる場合があります。特定の問題の具体的な分析) ~)
vim /etc/my.cnf
元のファイルには次の内容が含まれていないため、自分で追加する必要があります。私の側では、myslave データベース内のデータのマスター/スレーブ レプリケーションを実行します。
server-id = 1 #server-id 服务器唯一标识log_bin = master-bin #log_bin 启动MySQL二进制日志log_bin_index = master-bin.index binlog_do_db = myslave #binlog_do_db 指定记录二进制日志的数据库 这两个指定可以不添加binlog_ignore_db = mysql #binlog_ignore_db 指定不记录二进制日志的数据库
次のコマンドを使用して、mysql を再起動します。 Linux のバージョンが異なれば、コマンドも異なる場合があります。
service mysql restart
正常に起動した後、次のステートメントを通じて bin-log のオープン ステータスを確認できます: (Navicat で直接クエリ)
show variables like 'log_bin%';
#允许远程用户访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.221.131' IDENTIFIED BY '123456' WITH GRANT OPTION; #刷新 FLUSH PRIVILEGES;
まずマスター ノードで次のコマンドを実行してマスター ノードのステータスを把握し、次の図に示す情報を取得します。 。
show master status;
関連する構成を変更する
vim /etc/my.cnf
関連情報を追加する:
server-id = 2 #唯一标识relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index replicate-do-db=myslave #备份数据库 对应master中设置的,可以不设置replicate-ignore-db=mysql #忽略数据库
覚えておいてくださいサービスを再起動します;
service mysql restart
スレーブ ノードで次のコマンドを実行します。
change master to master_host='192.168.221.128',master_user='root',master_password='123456',master_log_file='binlog.000009',master_log_pos=2339;
master_log_file は最初のステップで取得したファイル名です;
master_log_pos は最初のステップで取得した同期位置です;
スレーブ同期の開始
start slave;
同期状態を確認すると、下図のような状態になり、マスタとスレーブの同期が正常に確立されています。テーブル テストはメイン データベースで作成できます。
show slave status\G
以上がMySQL でマスター/スレーブ レプリケーション アーキテクチャを迅速に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。