MariaDB Galera Clusterで、クライアントとの接続にSSLを利用することができるようなので、設定してみることにした。
調べていると、Galera Clusterのバージョンが10.0系と10.1系で設定方法が違うようだったが、今回は10.1系での設定を行う。

1.鍵ファイルの作成

まずは、Galera Cluster側で以下のコマンドを実行し、公開鍵の作成を行う。

openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-...

Maxscaleについて調べていたところ、中継するSQL文の内容に応じて、指定したサーバにSQLを飛ばすように出来るフィルター機能(Named Server Filter)があるようなので、試してみる事にした。
なお、検証に用いたMaxscaleのバージョンは1.3.1を利用している。

今回は、SQL文に「five」という文字列があった場合は特定のサーバに行く、というような記述をしてみる。

●/etc/maxscale.cnf(Before)

[maxscale]
threads=4 # 同時処理数
log_messages=1
log_trace=1
logdir=/var...

MaxscaleでルーティングするSQLクエリの書き換えを行う

Maxscaleについて調べていたところ、中継するSQLクエリを正規表現で書き換えてDB側に伝える機能(Regex Filter)があるようだったので、少し触ってみる事にした。
※Maxscale 1.3.0以降で利用可能になったらしい。

書き換えルールについては、Maxscaleの設定ファイルに事前に書いておく必要があるので、以前書いたこちらの記事の設定を元にして記述していく。

●/etc/maxscale.cnf(Before)

[maxscale]
threads=4 # 同時処理数
log_messages=1
log_trace=1
logdir=/var/lo...

Maxscaleで特定のノードを優先的にマスターとして取り扱うようにする

※この設定は、Maxscale 1.3.1以降で利用可能。それ以前では動作しなかったので注意。
MariaDBのLBとして利用出来るMaxscaleだが、Read/Write Spliterとして動作させた場合、通常はwsrep_local_indexの値がもっとも若い番号(基本的には0)がマスター(書き込みノード)として扱われる。

で、このマスターに障害が発生した場合、Maxscale側でマスターを自動的に切り替えて書き込みを継続して出来るようにするのだが、Galera Clusterが復旧してwsrep_local_indexの値が変わると、自動的にMasterが切り替わってしま...


Maxscaleのチュートリアルを読んでいたら、Corosync & Pacemakerを用いてのMaxscaleのHA化についてあったので、試してみる事にした。
今回利用するOSはCentOS 7を用い、Maxscaleはインストール済、SELinuxとFirewalldは無効化済とする。

なお、同じHAのカテゴリとしてLsyncdを用いる手法も紹介されていたが、正直これは単にmaxscale.confを自動同期させるだけでそこまで役に立つものでもないので無視する。

1.Corosync & Pacemakerのインストール

まずは、HA化に必要となるCorosyn...


先日、MariaDBでテーブルの暗号化を行ってみたが、今回はそれをGaleraClusterで行ってみる。
前回でも触れたが、この機能はMariaDB 10.1.3以降である必要がある。GaleraClusterの設定方法が10.0系と10.1系で少し違っているので、少し注意しよう。
10.1系でのGaleraClusterの設定については、こちらを参照してもらいたい。

今回はMariaDB 10.1.11、GaleraClusterはすでに構成済として進めていく。

1.鍵ファイルの作成・配布

さて、まずは前回と同じく鍵ファイルを作成、そのファイルを各ノードに配布する。...


MariaDB 10.1系でGalera Clusterを使いたかったので、その方法について備忘。
地味に10.0系から結構変わっていて、少し手こずってしまった。

今回インストールするのは、2016年02月12日時点で最新版となる10.1.11とする。

1.インストール

まずはインストールから。
MariaDB 10.1系からはMariaDBにGalera Clusterが含まれているので、普通にそのままインストールを行う。

rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
cat << EOF > /etc/...

前回、前々回とMariaDB+Galera Clusterでのバックアップについて、記述してきた。
今回は、それらと同じくMariaDBのバックアップ・リストアを実施するツールであるPercona XtraBackupを使用してのバックアップを取得してみる。

  1. GaleraClusterの構成ノードを切り離しorLVMのスナップショットを使用し、ファイルをバックアップする
  2. mysqldumpを使用してオンラインバックアップ
  3. Percona XtraBackupを使用してオンラインバックアップ

このPercona XtraBackup、mysqldumpとくらべてコマンド側で差分...


さて、前回はGalera Clusterからノードを切り離しての、もしくはLVMスナップショットを用いてのバックアップ・リストアを紹介した。
で、次は以下の3つのうち2個目である、mysqldumpを用いてのオンライン・バックアップについて検証したいと思う。

  1. GaleraClusterの構成ノードを切り離しorLVMのスナップショットを使用し、ファイルをバックアップする
  2. mysqldumpを使用してオンラインバックアップ
  3. Percona XtraBackupを使用してオンラインバックアップ

1.バックアップ

まずはバックアップ。mysqldumpでは「--single-t...


仕事で、MariaDB+GaleraClusterのバックアップについて検討する事があったので、その備忘。
さて、当たり前の話として、業務で利用している大体のDBってクラスタ化した上で定期的にバックアップを取得していると思う。

バックアップの取り方としては何通りもあると思うが、MariaDB+GaleraClusterの組み合わせで取得する場合、以下の3通りが考えられる。

  1. GaleraClusterの構成ノードを切り離しorLVMのスナップショットを使用し、ファイルをバックアップする
  2. mysqldumpを使用してオンラインバックアップ
  3. Percona XtraBackupを使...

Maxscaleの設定ファイルに記述するパスワードを暗号化する

Maxscaleでは、設定ファイルにモニタリング・接続するGalera ClusterのID/PWを記述する必要があるのだけど、そのままの生パスワードだと、やはりセキュリティ的によろしくない。
というわけで、MaxscaleにはそのパスワードをHash化して記述することができるようになっている。

まず、以下のコマンドで鍵ファイルを設置する「/usr/local/maxscale」ディレクトリを作成し、maxscale用の鍵ファイル「.secrets」を生成する。

mkdir -p /usr/local/maxscale
maxkeys /usr/local/maxscale/

...


Maxscaleで設定ファイル編集後reloadを行う

systemctlでMaxscaleを使っていると、どうもreloadが利用出来ない状態になっている事に気づく。
こうなると、設定ファイルを編集した後、またいちいちrestartしないといけないのかなぁ…と思っていたのだが、どうやらreloadは出来るようだ。

Maxscaleには管理コマンドであるmaxadminというコマンドがあるのだが、これでreloadが行えるのだ。
以下、reloadコマンド。

maxadmin -p mariadb reload config

ただし、サーバの追加・削除に使うにはちょっと怖い挙動をしている。
サーバを追加したり削除すると、どうも上手...


Maxscaleで指定したサーバをメンテナンスモードにする

Maxscaleを使っていて、再起動などで後ろにいる特定のDBサーバに接続させないようにしたい時もあるだろう。
そんなときは、指定したDBサーバをメンテナンスモードにすればよい。

Maxscaleで特定サーバをメンテナンスモードにしたい場合は、maxadminコマンドで以下のように実行すればよい。

maxadmin -p パスワード(初期:mariadb) set server サーバ名 maintenance

[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
--------------...

MariaDB+GaleraCluster用のLBソフト『Maxscale』を使ってみる

MariaDB+GaleraClusterの場合、各ノードで書き込み・読込みがされるのだけど、そうなると同じ行に同時タイミングで複数ノードから書き込みをしようとしてデッドロックになる事がある。
これを防ぐため、MariaDBでは専用のロードバランサー用に『Maxscale』というものが用意されている。

実際、会社でも使っているソフトなので、今回はこれをインストールし、GaleraClusterに接続してみよう。

1.Maxscaleの概要

Maxscaleの概要についてだが、細かく説明するとすごく大変そうなので、とりあえず以下のようなイメージだけ覚えておくと良いだろう。

...

仕事でMariaDBによく触れるようになったので、自宅でも環境を構築しておくことにした。
で、当然DBなので中のデータが飛ぶと非常にまずいわけで、冗長性やバックアップを取得して備えておくわけなんだけど、MariaDBではGaleraClusterというクラスタが利用できる。

GaleraClusterは、マルチマスタで動作するクラスタで、組み込まれているノード全てで同じデータを保有、各ノードからデータベースの更新を行わせる事もできる。
だから、(極端な話)ディスク障害で3台中1台しかノードが生き残らなくても、そこからデータを復元させることも出来るのだ。

なお、各ノード間の連携はTC...