ホームページ  >  記事  >  データベース  >  Mysqlデータベースのマスター・スレーブ分離サンプルコードの詳細説明

Mysqlデータベースのマスター・スレーブ分離サンプルコードの詳細説明

黄舟
黄舟オリジナル
2017-03-27 13:12:051639ブラウズ

この記事では、Mysqlデータベースのマスターとスレーブの分離のサンプルコードを主に紹介します。MySQLデータベースの読み取り/書き込み分離設定により、データベースの書き込み操作と読み取り操作が異なるサーバーで実行され、同時実行性と対応する速度が向上します。

はじめに

MySQL データベース設定の読み取りと書き込みを分離することで、データベースに対する書き込み操作と読み取り操作を異なるサーバーで実行できるようになり、同時実行性と応答速度が向上します。

現在、ほとんどの Web サイトは一般に大規模になり、データベースのマスターとスレーブの分離と読み書きの分離を採用しています。これは、バックアップとして機能するだけでなく、データベースの読み書きの負荷を軽減します。自分ではやったことがないので、今日は練習してその過程を記録します。

実験環境

ローカルコンピューターとリモートvpsの2台のサーバーを用意しました。2台のマシンにデータベースがインストールされています。
ここでは MySQL のインストールについては説明しません。MySQL のバージョンが一致していない場合、下位バージョンから上位バージョンへの読み取り時に問題が発生する可能性があるため、同じバージョンをインストールすることが最善です。一貫性を保つことが最善です。

マスターマスター

45.78.57.4 centos 7Linuxシステム、mysqlバージョン5.1.73

スレーブスレーブ

ネイティブ127.0.0.1 macOSシステム、バージョン 5.1.73

構成

ユーザーの作成

メインライブラリの実行ログをライブラリから読み取るためのユーザーをメインライブラリに作成します。

mysqlコマンドラインで実行する必要があります。最初にコマンドラインにログインする必要があります

コードは次のとおりです:

GRANT REPLICATION SLAVE ON *.* TO 'test'@'45.78.57.4' IDENTIFIED BY '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]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=100M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

ステータスを確認します

mysqlコマンドラインにログインした後、show master statusを入力します。次の情報が表示されたら、メインデータベースの設定が完了したことを意味します

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |  672675 |       |         |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

FileとPositionの2つの内容を記録します。 、スレーブ データベースを構成するときに使用されます。

スレーブライブラリの設定

ローカルコンピュータ(スレーブライブラリ)上のmy.cnfファイルを見つけて、次の内容を追加します。この設定はメインライブラリの設定と同じ意味です

server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

注意してください。メインライブラリの場所を決定する 同じことですが、最後に配置されていたため接続できませんでした。

マスターとスレーブ データベースの関連付け

最後のステップは非常に重要です。スレーブ データベースの MySQL コマンド ラインにログインし、次のコードを実行します。これは主にマスター データベースの一部の情報を関連付けることです。

change master to master_host='45.78.57.4',  #Master 服务器Ip
master_port=3306,
master_user='test',
master_password='test', 
master_log_file='master-bin.000001', #Master日志文件名
master_log_pos=672675; #Master日志同步开始位置

実行が成功したかどうかに注意してください。実行が失敗した場合は、コードを注意深くチェックして、どこに間違いがあるかを確認してください。

正常に実行された場合は、スレーブを起動し、接続状態を確認してください。

//需要再mysql命令行执行 
start slave; 
show slave status\G; //查看slave连接状态

ステータスメッセージ

        Slave_IO_State: Waiting for master to send event
         Master_Host: 45.78.57.4
         Master_User: test
         Master_Port: 3306
        Connect_Retry: 60
       Master_Log_File: master-bin.000001
     Read_Master_Log_Pos: 672913
        Relay_Log_File: slave-relay-bin.000044
        Relay_Log_Pos: 504
    Relay_Master_Log_File: master-bin.000001
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

注意!

成功したとみなされるには、これら 2 つのステータスが [はい] である必要があります。そうでない場合は、上記の手順で構成エラーを確認してください。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

テスト

次に、メインデータベースにデータを追加して、スレーブデータベースに同じデータがあるかどうかを確認します。存在する場合、構成は正常であり、機能は正常に使用されます。

マスター/スレーブ分離の主な原理は、メインライブラリの実行ログ機能を有効にして、メインライブラリのログ情報をスレーブライブラリから読み取り、メインライブラリで実行されたSQLステートメントをスレーブで実行することです。マスタとスレーブの分離を実現するためのライブラリを使用すると、マスタとスレーブのデータが常に維持され、データのバックアップ機能が維持されます。

以上がMysqlデータベースのマスター・スレーブ分離サンプルコードの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。