ベースのドッキングウィンドウのビルドmysqlのマスター・スレーブレプリケーションのアーキテクチャ

なぜビルドドッカーベース?

  • 限られたリソース
  • 仮想マシンが必要とされているマシンの構成に設定し、複雑なステップは、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}}' 容器名称|容器idIPクエリーコンテナ

マーク

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のヒントに従って除外することができます。

  1. いいえネットワーク

    IPチェック、ポート

  2. 間違ったパスワード

    同期ユーザーのために作成された場合、ユーザーのパスワードが正しいことを確認してください

  3. ないPOS

    ポジションのマスターをチェック

テストマスタースレーブのレプリケーション

テストマスタースレーブのレプリケーションは非常に多くなり、最も簡単なのは、データベースのマスター、スレーブを作成し、このデータベースかどうかを確認することです。

主人:

マーク

スレーブ:

マーク

マイクロチャンネル公共数:
出典:http://songwenjie.cnblogs.com/
免責事項:この記事では、不適切な場合は、私を修正してください、制限され、感情を学ぶブロガーの要約です。あなたが良いと思うならば、あなたは下のをクリックしたいと思うかもしれ [ 推奨 ] ボタンを、サポートありがとうございました。参照を得て転載元を明記してください。
@。投稿 2020年4月4日夜04時48分  *インポート   (読み込み ... (コメント) ... )  編集  コレクション

なぜビルドドッカーベース?

  • 限られたリソース
  • 仮想マシンが必要とされているマシンの構成に設定し、複雑なステップは、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}}' 容器名称|容器idIPクエリーコンテナ

マーク

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のヒントに従って除外することができます。

  1. いいえネットワーク

    IPチェック、ポート

  2. 間違ったパスワード

    同期ユーザーのために作成された場合、ユーザーのパスワードが正しいことを確認してください

  3. ないPOS

    ポジションのマスターをチェック

テストマスタースレーブのレプリケーション

テストマスタースレーブのレプリケーションは非常に多くなり、最も簡単なのは、データベースのマスター、スレーブを作成し、このデータベースかどうかを確認することです。

主人:

マーク

スレーブ:

マーク

マイクロチャンネル公共数:
出典:http://songwenjie.cnblogs.com/
免責事項:この記事では、不適切な場合は、私を修正してください、制限され、感情を学ぶブロガーの要約です。あなたが良いと思うならば、あなたは下のをクリックしたいと思うかもしれ [ 推奨 ] ボタンを、サポートありがとうございました。参照を得て転載元を明記してください。
@。投稿 2020年4月4日夜04時48分  *インポート   (読み込み ... (コメント) ... )  編集  コレクション

おすすめ

転載: www.cnblogs.com/python001-vip/p/12632492.html