なぜビルドドッカーベース?
- 限られたリソース
- 仮想マシンが必要とされているマシンの構成に設定し、複雑なステップは、MySQLをインストールします
- 複数の容器は、単一のマシンドッカー上で実行することができます
- ドッカーコンテナは、紛争の独立した、個別のIPませんです
- ドッカーは、コンテナ内の第二のレベルを開始するには、簡単な手順を使用します
ドッカーを使用して、マスターサーバーからの構造
まずプルドッキングウィンドウミラー、我々はここでのMySQLの5.7バージョンを使用します。
docker pull mysql:5.7
この画像は、その後、必要が2つの別々の容器マスタから開始する容器を開始するために使用され
Master(主):
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
スレーブ(から):
docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
外国の港マスターマップは3339で、外部ポートスレーブマッピングは3340です。ドッキングウィンドウコンテナは互いに独立しているので、各コンテナが別のコンテナが同じポートを使用し、競合しないように、独自の独立したIPを持っています。ここでは、MySQLのデフォルトポート3306を使用してみてください、またはIP接続のドッキングウィンドウコンテナmysqlのことで、この問題には表示されない場合があります。
使用するdocker ps
コンテナが実行されている表示するコマンドを:
このとき、他のツールは、接続のMySQLのNavicatをテストするために使用することができます
設定マスター(メイン)
することによりdocker exec -it 627a2368c865 /bin/bash
、コンテナの内部へのコマンドマスター、あなたもすることができますdocker exec -it mysql-master /bin/bash
入力するコマンド。627a2368c865はコンテナのIDであり、MySQLのマスターは、容器の名前です。
cd /etc/mysql
下の/ etc / mysqlのディレクトリに切り替え、その後、vi my.cnf
編集my.cnfをします。この時点でアウトに報告されますbash: vi: command not found
、我々は、ドッキングウィンドウコンテナ内で自分自身をvimのインストールする必要があります。使用apt-get install vim
のvimをインストールするコマンド
これは、次の質問に表示されます。
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
実行apt-get update
してから、再度実行しapt-get install vim
、正常にvimをインストールします。その後、我々は、my.cnfの中で、以下の設定を追加、編集のmy.cnfにVimを使用することができます。
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
設定が完了したら、有効にするMySQLサービスの設定を再起動する必要があります。使用しservice mysql restart
、完全な再起動を。再起動MySQLサービスを停止するドッキングウィンドウコンテナを行います、我々はまた、する必要があるdocker start mysql-master
コンテナを起動します。
次のステップは、マスタデータベースのデータ同期ユーザーに作成され、ユーザは、データベースからのデータとの間の一次同期のための許可スレーブレプリケーションスレーブとREPLICATION CLIENT権限を付与します。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
スレーブの設定(から)
そして、コンフィギュレーション・ファイルに追加してマスター(プライマリ)を設定すると、my.cnfのスレーブを、次のとおりです。
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
コンフィギュレーションと一貫性(一次)コンテナのドッキングウィンドウのマスターのMySQLサービスの操作や設定を再起動する必要があります後。
リンクマスタ(プライマリ)とスレーブ(から)
mysqlのにマスターでは、実行show master status;
ファイルと位置フィールドの値の背後にある後者の操作が完了する前に、使用され、マスターライブラリは何もできないようにする必要があり、それ以外の場合は、状態変化の原因となります、ファイルと位置フィールドの値に変更します。
スレーブでは、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= 2830, master_connect_retry=30;
コマンド説明:
MASTER_HOST:マスターアドレス、で、独立したIPコンテナを参照するdocker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
IPクエリーコンテナ
MASTER_PORT:マスターのポート番号、ポート番号は、コンテナを指し、
MASTER_USER:同期のためのユーザデータ
master_password:ユーザーのパスワードを同期するために使用
MASTER_LOG_FILE:指定スレーブは、上記では、すなわち、ファイルフィールドの値から、ログファイルのデータのコピーを開始
MASTER_LOG_POSの値位置の読み取りを開始するために、位置すなわち上記フィールド:
MASTER_CONNECT_RETRY:接続に失敗した場合は、再試行間隔、秒単位で、デフォルトは60秒です
MySQLのスレーブ端末で実行されるshow slave status \G;
マスタ-スレーブ同期状態を表示します。
私たちはマスタースレーブレプリケーションプロセスをオンにしていないので、通常の状況下では、SlaveIORunningとSlaveSQLRunningは、ノーです。使用start slave
オープンマスタースレーブのレプリケーションプロセスを、その後、再びマスタースレーブの同期状態を問い合わせますshow slave status \G;
。
SlaveIORunningとSlaveSQLRunningはい、マスターコピーからの指示が開かれています。この時点で、データの同期が成功したテストすることができます。
マスタースレーブレプリケーションのトラブルシューティング:
使用start slave
オープンマスタースレーブのレプリケーションプロセスは、マスタースレーブのレプリケーションが接続された、接続されてSlaveIORunning場合、この状況は一般的に、以下のいくつかの理由によって引き起こされる、我々はLast_IO_Errorのヒントに従って除外することができます。
-
いいえネットワーク
IPチェック、ポート
-
間違ったパスワード
同期ユーザーのために作成された場合、ユーザーのパスワードが正しいことを確認してください
-
ないPOS
ポジションのマスターをチェック
テストマスタースレーブのレプリケーション
テストマスタースレーブのレプリケーションは非常に多くなり、最も簡単なのは、データベースのマスター、スレーブを作成し、このデータベースかどうかを確認することです。
主人:
スレーブ:
なぜビルドドッカーベース?
- 限られたリソース
- 仮想マシンが必要とされているマシンの構成に設定し、複雑なステップは、MySQLをインストールします
- 複数の容器は、単一のマシンドッカー上で実行することができます
- ドッカーコンテナは、紛争の独立した、個別のIPませんです
- ドッカーは、コンテナ内の第二のレベルを開始するには、簡単な手順を使用します
ドッカーを使用して、マスターサーバーからの構造
まずプルドッキングウィンドウミラー、我々はここでのMySQLの5.7バージョンを使用します。
docker pull mysql:5.7
この画像は、その後、必要が2つの別々の容器マスタから開始する容器を開始するために使用され
Master(主):
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
スレーブ(から):
docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
外国の港マスターマップは3339で、外部ポートスレーブマッピングは3340です。ドッキングウィンドウコンテナは互いに独立しているので、各コンテナが別のコンテナが同じポートを使用し、競合しないように、独自の独立したIPを持っています。ここでは、MySQLのデフォルトポート3306を使用してみてください、またはIP接続のドッキングウィンドウコンテナmysqlのことで、この問題には表示されない場合があります。
使用するdocker ps
コンテナが実行されている表示するコマンドを:
このとき、他のツールは、接続のMySQLのNavicatをテストするために使用することができます
設定マスター(メイン)
することによりdocker exec -it 627a2368c865 /bin/bash
、コンテナの内部へのコマンドマスター、あなたもすることができますdocker exec -it mysql-master /bin/bash
入力するコマンド。627a2368c865はコンテナのIDであり、MySQLのマスターは、容器の名前です。
cd /etc/mysql
下の/ etc / mysqlのディレクトリに切り替え、その後、vi my.cnf
編集my.cnfをします。この時点でアウトに報告されますbash: vi: command not found
、我々は、ドッキングウィンドウコンテナ内で自分自身をvimのインストールする必要があります。使用apt-get install vim
のvimをインストールするコマンド
これは、次の質問に表示されます。
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
実行apt-get update
してから、再度実行しapt-get install vim
、正常にvimをインストールします。その後、我々は、my.cnfの中で、以下の設定を追加、編集のmy.cnfにVimを使用することができます。
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
設定が完了したら、有効にするMySQLサービスの設定を再起動する必要があります。使用しservice mysql restart
、完全な再起動を。再起動MySQLサービスを停止するドッキングウィンドウコンテナを行います、我々はまた、する必要があるdocker start mysql-master
コンテナを起動します。
次のステップは、マスタデータベースのデータ同期ユーザーに作成され、ユーザは、データベースからのデータとの間の一次同期のための許可スレーブレプリケーションスレーブとREPLICATION CLIENT権限を付与します。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
スレーブの設定(から)
そして、コンフィギュレーション・ファイルに追加してマスター(プライマリ)を設定すると、my.cnfのスレーブを、次のとおりです。
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
コンフィギュレーションと一貫性(一次)コンテナのドッキングウィンドウのマスターのMySQLサービスの操作や設定を再起動する必要があります後。
リンクマスタ(プライマリ)とスレーブ(から)
mysqlのにマスターでは、実行show master status;
ファイルと位置フィールドの値の背後にある後者の操作が完了する前に、使用され、マスターライブラリは何もできないようにする必要があり、それ以外の場合は、状態変化の原因となります、ファイルと位置フィールドの値に変更します。
スレーブでは、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= 2830, master_connect_retry=30;
コマンド説明:
MASTER_HOST:マスターアドレス、で、独立したIPコンテナを参照するdocker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
IPクエリーコンテナ
MASTER_PORT:マスターのポート番号、ポート番号は、コンテナを指し、
MASTER_USER:同期のためのユーザデータ
master_password:ユーザーのパスワードを同期するために使用
MASTER_LOG_FILE:指定スレーブは、上記では、すなわち、ファイルフィールドの値から、ログファイルのデータのコピーを開始
MASTER_LOG_POSの値位置の読み取りを開始するために、位置すなわち上記フィールド:
MASTER_CONNECT_RETRY:接続に失敗した場合は、再試行間隔、秒単位で、デフォルトは60秒です
MySQLのスレーブ端末で実行されるshow slave status \G;
マスタ-スレーブ同期状態を表示します。
私たちはマスタースレーブレプリケーションプロセスをオンにしていないので、通常の状況下では、SlaveIORunningとSlaveSQLRunningは、ノーです。使用start slave
オープンマスタースレーブのレプリケーションプロセスを、その後、再びマスタースレーブの同期状態を問い合わせますshow slave status \G;
。
SlaveIORunningとSlaveSQLRunningはい、マスターコピーからの指示が開かれています。この時点で、データの同期が成功したテストすることができます。
マスタースレーブレプリケーションのトラブルシューティング:
使用start slave
オープンマスタースレーブのレプリケーションプロセスは、マスタースレーブのレプリケーションが接続された、接続されてSlaveIORunning場合、この状況は一般的に、以下のいくつかの理由によって引き起こされる、我々はLast_IO_Errorのヒントに従って除外することができます。
-
いいえネットワーク
IPチェック、ポート
-
間違ったパスワード
同期ユーザーのために作成された場合、ユーザーのパスワードが正しいことを確認してください
-
ないPOS
ポジションのマスターをチェック
テストマスタースレーブのレプリケーション
テストマスタースレーブのレプリケーションは非常に多くなり、最も簡単なのは、データベースのマスター、スレーブを作成し、このデータベースかどうかを確認することです。
主人:
スレーブ: