目的:2つのmysqlサーバーが互いに同期サービスを提供できるようにします。
利点:
-
mysqlマスター/スレーブレプリケーションの主な利点は、「バックアップ」を同期することです。スレーブ上のデータベースは、(基本的なリアルタイム)バックアップライブラリと同等です。
-
マスター/スレーブレプリケーションに基づいて、読み取りと書き込みの分離はmysqlproxyを介して実現でき、クエリのプレッシャーはスレーブによって共有されます。
- 双方向のマスタースレーブレプリケーションを実行します。2つのマシンは互いのマスターとスレーブであり、1つのマシンのライブラリへの書き込みが「リアルタイム」で別のマシンに同期されます。双方向の利点は、1つのマスターに障害が発生した場合です。時間があれば、別のホストがすばやくサービスを継続するように切り替えることができます。
手順:
- 両方のマシンでスレーブアクセス用のアカウントを追加し、REPLICATION SLAVE権限を付与します。
GRANT REPLICATION SLAVE ON 。TO 'slave' @ '%' IDENTIFIED BY 'slave';
スレーブユーザーに、任意のデータベースの任意のテーブルに対するREPLICATION SLAVE権限を付与します。このユーザーは、ネットワーク上の任意の場所にアクセスでき、アクセス時にパスワードslaveでマークされます。
ubuntuを使用する場合、/ etc / mysql / my.cnf構成ファイルのbind-address = 127.0.0.1行をコメント化する必要があることに注意してください。コメント化しないと、要求されたときにスレーブが接続できません(Iそれはubuntuです、Linuxの他のバージョンは同じになるかどうかわかりません)
作業手順の詳細を確認するために、割り当てられたユーザーパスワードを使用して、ユーザー関連情報を構成した後、別のマシンに1回接続することができます。
- サーバー番号を設定し、bin-logを開きます
mysql構成ファイルを編集します。linux:/etc/mysql/my.cnf、windows:c:/プログラムファイル/ mysql / mysql 5.0 / my.ini
タグ[mysqld]を見つけます。
その下に2行あります
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
これらの2行のコメントを開きます。ここでのserver-idはサーバー番号なので、2つのサーバーの値は異なるように設定する必要があることに注意してください。たとえば、1と2
- server-idおよびlog-bin構成の変更を有効にします。
sudo /etc/init.d/mysql restart
または、WindowsのサービスでMySQLサービスを再起動します
- 両方のデータベースサーバーのmysqlをロックする
mysqlコマンドモードの場合:
読み取りロック付きのFLUSHテーブル。
マスターステータスを表示;
この時点で、これらの2つのコマンドを実行するmysqlコンソールが終了しないことを確認してください。
- mysqlコンソールを再度開き、ホストを構成します。
マスターを変更
MASTER_HOST = 'host'、#別のマシンのアドレス
MASTER_PORT = 3306、#別のマシンのポート
MASTER_USER = 'slave'、#別のマシンの最初のステップで割り当てられたユーザー名
MASTER_PASSWORD = 'slave'、#別のマシンの最初のステップで割り当てられたパスワード
MASTER_LOG_FILE = 'mysql-bin.000001'、#別のマシンでSHOW MASTER STATUSを実行して取得したファイル名
MASTER_LOG_POS = 192;#別のマシンでSHOW MASTER STATUSを実行して取得したオフセット
- 同期をオンにする
スレーブを開始します。
- 正当性を確認する
スレーブのステータスを表示;
返された結果の最初の列が「マスターがイベントを送信するのを待っている」または「キューイング」である場合、構成は正しいです。もちろん、他にも正しい情報がある可能性がありますが、ここでは収集しませんでした... ha ha
不適切なものがあればレンガを撃ってください。