スキップしてメイン コンテンツに移動

MySQL-MMM を利用したMulti-Master HA構築

ググッてみながらいろいろしてみたが、

結論、

「とっちでもいつものマニュアルでしか見えない」

ということはたぶんページのオーナーは自分なりの一番分かりやすい方法で書いているからだろう。
一応、やってみながら必要な部分に関して誰も言わなくて結構苦労したのでこれから書いてみる。
大体DBサーバはグローバルIPとローカルIPをもって、グローバルIPは外部とのConnectionはOSパッチなど以外にはFWにブロックされているはず。
MySQL-MMMの特徴上、Monitor用のIPセットがもう一セット必要だった。
ローカルIPにしてみたらIPがL2側で変わったりして接続ができない危険性があった!
サーバ4台を利用してmulti-master設定をするには次のIPが必要。

Global IP 4.. -> 設定には要らない。
Local IP 4 -> Replication及び接続用
Monitor IP 4 -> 4つ全て要らないかもしれないが、用意したほうが・・・・

そしてモニター用のサーバは必ずほかのサーバーを用意する必要はないが、設定変えたりするためにはあったほうをお勧めします。
障害発生時IPが勝手に変わるけど、そのときpingを投げたら変わったサーバからpingがくるのでご注意!
本当に設定通りのサーバからpingが帰ってきたのかを確認するためには
ping後にarp -aを利用して正しいMAC Addressが登録されていたのかを確認。
mmm_control showから割り当ててサーバに接続して

ip addr show

を入れてみる。
設定の覚えがないIPが登録されたりするのはMMMのやつがいじってたからだ。
この場合IPが返却できないので次の手順で解除する。

1. mmm monitorサーバから
root@mon> service mysql-mmm-monitor stop

2.変なIPが割り当てられたサーバからは

root@db02> service network restart

3. 正常のIPが入っているはずのサーバからping check..
 もしリブートなどをしてしまい、IPがなくなった場合は1,2の作業後、このサーバのネットワークをリスタート

root@db01> service network restart

4. モニター再起動

root@mon> service mysql-mmm-monitor start

そして基本設定は次の通り。(ほかのウェブサイトがもっと詳しく説明されているだろう)

1.my.cnfに Replication設定を行う。

(http://www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html?page=2 設定だけ参考)

2.ユーザー権限追加

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.10.40.%' IDENTIFIED BY 'monitorpwd';
mmm_monitor 用のアカウント

GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.10.40.%' IDENTIFIED BY 'agentpwd';
mmm_agent用

GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.10.30.%' IDENTIFIED BY 'replicationpwd';
replication用アカウント

mmm_agentとmmm_monitor用IPを区分した理由は障害時勝手にagent用IPが変わってしまうからReplicationと同じネットワークを持っているとReplicationが切れてしまうからだ。

たまにsame-server-idなちゃらするのも全てこの設定のせいだ。

3.Replication設定
一般的なリプリケーションのため省略

4.Multi-master Replication設定

5.MMMインストール

6.mmm_common.conf ファイルの修正

7.mmm_agent.confファイル修正

8.mmm_mon.confファイル修正

コメント

このブログの人気の投稿

コピペができないときチェックすべきこと! :: よく迷うUiPathのコツ

UiPath( https://uipath.com )はMicrosoft社のWWFを改良した製品なのでVisual Studioより初心者向けに使いやすくなっている。 しかし、初心者がそのまま使うにはかなりのハドルがある。 理由は基本開発者向けの開発ツールを無理やり便利に作ってみたとしても開発の概念と考え方がないと結構躓くことが多い。 そのなかで私もよく迷ったりしていることの一つを整理しとく。 基本Activityはすぐコピぺができるので多数のUiPath Studioを開いて開発してたりする。 ここでコピペをしても反応ないときがよくある。 この場合はこれをチェックすること! 1.Sequenceがなく一つのActivityしかないところにはペーストできないのが多い。 例えば、ifの処理ボックスにはSequenceが最初はない。 そのボックスに一つのActivityはペーストできるのに2個目からはなぜか反応ない。 それで分からないまま新しいActivityを追加してたりしたが、 あそこにSequenceを入れたら解決ができるのだ! 2.正常にペーストできるはずのところに反応ない。 この場合はPackageが合わなくペーストが効かないケースが多い。 DESIGN>Manage Packagesをクリックしてコピー元のパッケージにインストールされているのにコピー先にインストールされてないパッケージを探す! パッケージを一々見るのが難しい!と思ったら メモ帳からファイルがあるフォルダにあるproject.jsonファイルを開いてみる! あそこにJSONの形式でインストールされたパッケージが見えるので比較しやすくなる! ちなみにコピペをすると変数の宣言が大変だと思うが、 そこでもコツがあるのだ! 変数の宣言はなるべく細かくしてSequence単位で管理できるようにする。 全てに影響がある変数はしょうがないから一番広く宣言するけど。 初心者向けの説明だと、 Variablesというところをクリックして変数を開いたらScopeという範囲が見える! 大体Sequenceボックスの名前を変えてないのでSequenceがすらりと表示されてるはずが、Sequenceボックスの名前を付けてたら見やすくなる。 あ

面倒くさいORACLEの文字化け状況

ORACLEはそもそもUTF-8をサポートしてほかの言語はサポートはしているって書いてますが親切ではないようです。 現在サーバー側は昔からUS7ASCIIに設定して日本語を入れてしまい、データは7ビットASCIIモードで読み取りながら日本語のコートがOS側とクライアント側で変換しない必要があります。 クライアント側で文字化けの解決にはNLS_LANGの設定が効くクライアントが必要ですが、一部の有料クライアントにはサポートするようです。 接続構造は参考に https://www.oracle.com/technetwork/jp/content/charcterset-250314-ja.pdf の19スライドのように クライアントからNLS_LANGをUS7ASCIIに設定しても その設定した言語にもらったUTF-8のデータをクライアントが変換すると NLS_LANGを設定しても意味がないようです。 ORACLE SQL Developerがこの様です。 ODBCと直接接続は必ずUTF-8に変換してしまうのでUS7ASCIIになっているDBからはクライアントをいくら変換しても文字化けのままです。 必ずOCI接続を通じてクライアント側から読み取らないとUS7ASCIIは勝手に変換されますね。 この全ての条件が満たした無料クライアントはA5mk2の2.9.1バージョンだけですね。 A5MK2 ver.2.9.1 : https://a5m2.mmatsubara.com/download/a5m2_2.9.1_x64.zip 2.9.1 バージョンでサーバーを設定する場合Uicode変換を強制に無視するオプションがあります。 多分このバージョンの時点ではUTF-8をメインにして設計したDBが少なかったから文字化け対応のためできたオプションでしょう。 しかし、A5mk2の新しいバージョンにもまた結果の変換をしないオプションがなくなって文字化けしてしまいます。開発者はもうUTF-8ではないDBはないと思ってるでしょう。まだまだ残ってますよ~。 クライアント側からの変換などに参考になればと思います! まだ直接お仕事になさってますか? もう遅いです!ソフトウェアロボットにお仕事を任せてどの位自分の作業分量が減ってるかをご確認ください! https://talklowy-jp.b

UiPathではWeb.HttpUtilityが使えない!

UrlEncodeを使いたい! HttpRequest Activityを使ったら文字のせいで途中で切れてしまうケースが発生! .NetにもともとあったUrlEncode関数を使えばいいかなと思って調べたら、 System.Web.HttpUtilityを使えってUiPathコミュニティから言われたけど 実際に入れてみると HttpUtilityはWebに属してないとか言われました。 それで調べたら var webencode = System.Net.WebUtility.UrlEncode(test); var httpencode = System.Web.HttpUtility.UrlEncode(test); このように2種類があるって、 それでSystem.Net.WebUtility.UrlEncodeを使ってみると成功! ではでは~ Orchestratorなしで多数のUiPathを楽しむ! Full RPA Manager. https://giipasp.azurewebsites.net/