別々の読み取りと書き込みを達成するためにThinkphp + MySQLのマスター・スレーブ同期
、thinkphp環境をリスト2のMySQL +
別々の読み取りと書き込み、マスター・スレーブ同期メリット
- フェイルオーバーのためのリアルタイム災害復旧、;
- 追跡、ロード・バランシングを提供するために、読み取りと書き込みのセパレート。
- トラフィックへの影響を避けるために、データを追跡。
別々の読み取りと書き込み、からプライマリ同期原則
- MySQLのマスターサーバーサービスは、すべての書き込み操作は、バイナリログログに記録され、生成されたログ・ダンプ・スレッドは、I / OスレッドサーバのMySQLサービスからログインBINLOG渡します。
- 他のSQLスレッドで、サーバーのMySQLのサービス、1つのI / Oスレッドの二つのスレッドを生成します。
- ライブラリプライマリ・データベースのログへのI / O要求のbinlogスレッド、ログファイルからのbinlog relaylog(リレーログを)書かれています。
- SQLスレッドは、コンテンツデータベースrelaylogから読み出し、一貫したマスタ・スレーブ動作、二つのデータベースに応じて、最終的なデータの目的を達成するために、特定の操作に解析します。
Thinkphp設定
- 変更のconfig / database.phpで
// 启用分布式数据库 'deploy' => 1, // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '192.168.1.1,192.168.1.2', // 数据库名 'database' => 'demo1,demo2', // 数据库用户名 'username' => 'root1,root2', // 数据库密码 'password' => 'pass1,pass2', // 数据库连接端口 'hostport' => '3306', //开启读写分离 'rw_separate' => true,
MySQL設定
这里 'deploy' => 1,表示启用分布式数据库 'rw_separate' => true,开启读写分离
demo1,demo2代表你两个数据库名,其他类似。
-
MySQL設定マスタ - スレーブ同期
- 設定ファイルを変更MYSQL、私がインストールさパゴダ(ETC / my.cnfの)下を使用します
log-bin=mysql-bin
オープンserver-id = 1
これは、メインのライブラリと同じか、どのような値からライブラリを表します。- 上記の操作は、ライブラリのメインライブラリから構成されている必要があり
-
メインライブラリ構成
- ユーザーを作成し、各サーバからマスタに接続するためにアカウント名とパスワードを使用する必要があります、各サーバーからアカウントを作成することができ、あなたはすべてのサーバーが同じアカウントを使用することができます。ここでは、すべて同一のIPセグメントは、マスタ・スレーブ同期アカウントを作成するだけで、サーバーからです。マスターという名前のユーザーを作成し、パスワードを使用することができ192.168.1.1 123456アカウント、で、アカウントが唯一のマスタ・スレーブ同期することができ、最初の着陸のmysql、および
CREATE USER 'master'@'192.168.1.1' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'master'@'1192.168.1.1' IDENTIFIED BY '123456' WITH GRANT OPTION;
-
ライブラリの設定から
-
サーバー上のライブラリーからのMysql
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='master',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000097',
MASTER_LOG_POS=1507;
-
マスターサーバー上で入力されたビューLOG_FILEやPOS mysqlのは、
show master status\G
私はあなたがコピーして実装している場合、直接、あなたがすることができ、上記の設定をコピーしていない、見ることができるstop slave
サービスを閉じ、新しいコンフィギュレーション、すなわち再起動MySQLを再実行しますことができます。
-