マスタースレーブレプリケーションモード
- ログに基づいて(ビンログ)
- ベースのGTID(グローバル・トランザクション識別子)
この記事を第一の方法を使用して
前提条件
- マスターとスレーブサーバのオペレーティングシステムのバージョンおよびビットは一貫している必要があります
- メインのMySQLバージョンからMySQLのバージョンが一貫している必要があります
- マスター・データベースからデータが一貫している必要があります
- masterデータベースのオープンバイナリログ、マスター・データベースおよびデータベースからSERVER_IDにローカル・エリア・ネットワーク内で一意でなければなりません。
プロセス
1。まずプルミラーリング
docker pull mysql:5.7.26
2。コンテナを作成します。
Master(主)
docker run -p 3340:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=
123456 -d mysql:5.7.26
スレーブ(から)
docker run -p 3341:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=
123456 -d mysql:5.7.26
-nameはコンテナの名前を指定し、これは、MySQL、マスタースレーブのMySQLである
容器3341は、ホスト・ポート3342とポート3306にマッピングされたホストの指定されたポートに-p指定されたコンテナポートマッピング
提供-e環境ここでの変数は、指定されたrootアカウントのパスワードは123456です
-d背景コンテナとコンテナIDを返す
、指定のMySQLバージョン5.7.26:MySQLを
使用するdocker ps
コンテナが実行されている表示するコマンドを:
3。設定マスター(メイン)
によって最初にdocker exec -it mysql-master /bin/bash
容器の内部に侵入
後、最初のapt-get update
完了後、apt-get install vim
すぐにvim /etc/mysql/my.cnf
次の設定を追加
[mysqld]
## 同一局域网内注意要唯一,最好用ip段后缀来区分
server-id= 2
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
設定後、サービスを再起動するMySQLの必要性は、service mysql restart
サービスがある限り、ドッキングウィンドウコンテナの停止につながる再起動するdocker start mysql-master
まで、コンテナの開始
次、Masterユーザーと付与権限で新しいスレーブ
CREATE USER 'slave'@'%'IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
- (からの)スレーブを設定する
ステップ、上記同様のMySQLスレーブを入力し、その後、追加のmy.cnfは、以下:
[mysqld]
## 设置server_id,注意要唯一
server-id=3
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=mysql-relay-bin
あなたは同じスタートを設定します。
5。リンクマスタ(プライマリ)とスレーブ(から)は
マスターのmysqlの実装入っshow master status;
ているファイルやポジション等、使用され、これら二つの使用はライブラリーから対応するバイナリの読み取り情報を見つけることができます
6。マスターのアドレスを取得し、独立したIPコンテナを参照するdocker inspect --format='{{.NetworkSettings.IPAddress}}'
コンテナ名| IPコンテナIDクエリコンテナ、我々は、使用する必要があります。
7。継続は、以下の操作を行い、スレーブでMySQLを入力します。
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=1299, master_connect_retry=30;
コマンド説明:
MASTER_PORT:マスターのポート番号、ポート番号は、コンテナを指し、
master_user:同期のためのユーザデータ
master_password:ユーザーのパスワードを同期するために使用
MASTER_LOG_FILE:指定スレーブは、上記では、すなわち、ファイルフィールドの値から、ログファイルのデータのコピーを開始
値の読み取りを開始するための位置、即ち、上述したフィールドの位置:MASTER_LOG_POS
MASTER_CONNECT_RETRY:接続に失敗した場合は、再試行間隔、秒単位で、デフォルトは60秒です
スレーブで実行show slave status \G;
マスター・レプリケーションの状態からの眺め
ない心配、通常の状況下で円があります開いていないマスター・スレーブレプリケーションので、NOを示し、私はYES表示ここで開かれています。今ちょうどstart slave
、再び次の2つのクエリはYESです見ることができます。そして、あなたはそこに立証されていない、データの同期が成功したかどうかをテストすることができます。
8.エラー捜査
あなたSlave_IO_RUNNGINGショーは、接続した場合は、ビューの下に滑ることができますLast_IO_Error
ので、エラーの通常の状況下では、:
- ポートまたはIPアドレスエラーは、ファイアウォールをオンにすることができませんでした、またはあなたもアリクラウドサーバである場合には、事前にオープンセキュリティグループに覚えています。
- パスワードは、正しいユーザー名とパスワードのマスタースレーブの同期を確認して間違っています。
- FILE POSと間違って、その後、このチェック
- マスタースレーブの
my.cnf
設定ファイルが間違って構成されていてもよい、もう一度確認してください。
9.書き込みシェルスクリプト
とnagios
それらのいずれかがNOの場合は2つ(Slave_IOとSlave_SQLプロセス)の監視モニターYESスレーブは、そこからの主な問題は、その後、テキストメッセージのアラートを送信していることを示していません!