Docker ComponentベースのMySQL MHAクラスタ
8976 ワード
Docker MySQL MHA
Docker 1.13.1に基づいて構築されたMySQL MHA Docker Component Project
GTIDモードでMasterHAクラスタを素早く起動でき、主にMySQLとDockerの学習研究に使用される.
環境の構築 MacOS 10.12.3 Docker 1.13.1 Docker Compose 1.11.1 Docker image for MySQL 5.7.17 Docker image for Debian jessie mha4mysql-manager-0.56 mha4mysql-node-0.56
とくせい USTC debian sources MySQLレプリケーションアカウントとMHAワークアカウントの自動生成 カスタマイズ可能なMySQLレプリケーションとMHAワークアカウント情報 SSH keyの自動生成 容器間のSSH key相互複製とSSH非密登録 MasterHAのセルフスタート 構築と起動
docker-compose.yml定義
ディレクトリとファイルの機能説明 account.Envは、MySQLレプリケーションアカウントreplのアカウントパスワード などのコンテナ間の共通環境変数を保存します. employees_db employees_master employees_slave_1 employees_Shareコンテナ間の共有データボリューム mha_managerは、docker-composeでDockerミラー mha_Nodeは、docker-composeでDockerミラー reset.shプロジェクトを停止し、すべてのデータベースのログとライブラリ(プロファイルを除く)を削除する shutdown.sh単純にプロジェクト を停止する start.sh プロジェクト を開始各容器においてssh key を生成する. ssh keyを他の容器にそれぞれコピーし、容器間でSSHを使用して にログインできるようにする.は、 に形成する.カスタムMySQLアカウントパスワードに基づいてMHAプロファイル を生成 masterha_check_ssh検出容器間のSSHの正確性 masterha_check_replレプリケーションの健康状態を検出する 起動masterha_managerログをemployeesに書き込みます.Shareの
開始最初の実行時にMySQLを初期化してください.そうしないと、コンテナは接続を受け入れません.
コンテナ受信可能ホストのMySQL接続代表初期化完了 予熱後startを運転する.shスクリプトによるMHAクラスタの構築
NOTE:初回運転時に予熱するstartを直接呼び出す.shスクリプトの場合、MySQLの初期化が完了していないため、構築元のレプリケーション・リンクにエラーが発生します.データベースが初期化されている場合は、ウォームアップは必要ありません.
注意事項初回実行時には を行ってください Docker Compose Serviceが1つのコンテナに対応することで、Docker Composeがデフォルトで構築したコンテナネットワークを楽しむことができ、service nameを直接使用してSSH通信 を行うことができる.本プロジェクトはMySQL MHAクラスタの学習にのみ使用され、同時にDockerの使用を練習する 仮想IPを使用する場合はKeepalive,LVSなど を自分で組み合わせることができる.
転載先:https://www.cnblogs.com/nongchaoer/p/6410929.html
Docker 1.13.1に基づいて構築されたMySQL MHA Docker Component Project
GTIDモードでMasterHAクラスタを素早く起動でき、主にMySQLとDockerの学習研究に使用される.
環境の構築
とくせい
docker-compose.yml定義
master
-Docker composeのmaster
というサービス、プライマリ・ライブラリ・コンテナのデフォルト・マッピング・ポート3406slave_1
-Docker composeのslave_1
という名前のサービスは、ライブラリのデフォルトのマッピングポート3407からmanager
-Docker composeのmanager
というサービスは、MHA managerとしてmha_share
-コンテナ間の共有データボリュームディレクトリとファイルの機能説明
master
起動時のMySQL初期化スクリプトmaster
メインライブラリコンテナのプロファイル、ログと在庫保管場所slave_1
ライブラリコンテナからのプロファイル、ログと在庫保管場所mha_manager
に必要なDockerfileとその依存ファイルの格納ディレクトリを構築する.yml定義mha_node
を構築するために必要なDockerfileとその依存ファイルの格納ディレクトリを構築する.yml定義master
とslave_1
とを複製リンクmha.log
開始
➜ mha git:(master) docker-compose up -d
Creating network "mha_default" with the default driver Creating mha_mha_node_1 Creating mha_mha_share_1 Creating mha_mha_manager_1 Creating mha_master_1 Creating mha_slave_1_1 Creating mha_manager_1
コンテナ受信可能ホストのMySQL接続代表初期化完了
➜ mha git:(master) ./start.sh
>>> Docker Compose starting...
Starting mha_mha_manager_1
Starting mha_mha_share_1
Starting mha_mha_node_1
mha_master_1 is up-to-date mha_slave_1_1 is up-to-date mha_manager_1 is up-to-date >>> Setting ssh... fd9686976e61 initializing SSH... fd9686976e61 change the password of root successfully. fd9686976e61 SSH service has been restarted. fd9686976e61 succeed in generating ssh key. ... fd9686976e61 copy ssh key to manager successfully. fd9686976e61 copy ssh key to master successfully. ... >>> Creating mysql user for replication named 'repl' on master container... mysql: [Warning] Using a password on the command line interface can be insecure. >>> Configuring replication with GTID mode... configuring slave_1 754214d5bdfc ... mysql: [Warning] Using a password on the command line interface can be insecure. >>> Initializing MHA configuration... mha configuration "/mha_share/application.cnf" is not initialized. added host "master" to mha configuration file. added host "slave_1" to mha configuration file. ********************************************** checking mha ssh... Wed Feb 15 11:04:08 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. ... Wed Feb 15 11:04:08 2017 - [debug] ok. Wed Feb 15 11:04:09 2017 - [info] All SSH connection tests passed successfully. ********************************************** checking mha repl to mysql... Wed Feb 15 11:04:09 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. ... MySQL Replication Health is OK. ********************************************** starting mha manager with file "/mha_share/application.cnf"... nohup: redirecting stderr to stdout >>> Done!
NOTE:初回運転時に予熱するstartを直接呼び出す.shスクリプトの場合、MySQLの初期化が完了していないため、構築元のレプリケーション・リンクにエラーが発生します.データベースが初期化されている場合は、ウォームアップは必要ありません.
注意事項
docker-compose up -d
を実行してMySQLの初期化転載先:https://www.cnblogs.com/nongchaoer/p/6410929.html