Docker 上で MariaDB Community Server を Primary / Replica 構成でデプロイ

本記事は MariaDB Corporation より寄稿された記事となります

はじめに

MariaDB Comunity Server の公式 Docker イメージは以下のURLで Docker Hub 上で公開されています。

https://hub.docker.com/r/mariadb/server

なお,以下の URL で公開されているイメージは Docker, Inc. でビルドしているものです。

https://hub.docker.com/_/mariadb

今回は Docker 上で Primary / Replica 構成で MariaDB Community Server をデプロイしてみます。

テスト環境

  • Docker 18.06.3-ce, build d7080c1
  • MariaDB Community Server 10.4.10
  • MariaDB MaxScale 2.4.4

docker-compose.yml

GitHub の maxscale-docker レポジトリにある docker-compose.yml を元に以下の docker-compose.yml を作成しました。

docker-compose.yml 等のファイル一式は こちらの GitHub レポジトリで公開しております。

MariaDB Server / MaxScale コンテナのデプロイ

Docker 実行環境で以下のコマンドを実行し,各コンテナをデプロイします。

docker service ls で各サービスの稼働状態が確認できます。

docker ps で各コンテナのIDを確認します。

MaxScale コンテナ上で maxctrl list servers を実行,各 MariaDB Server インスタンスの状態を確認します。
(docker service ls で表示される サービスID/サービス名は docker exec で利用できません)

正常に primary の status が Master, running となっています。

自動フェイルオーバのテスト

Master(Primary)となっている server1 を 稼働停止し,自動フェイルオーバするか確認してみます。

このときの MaxScale のログは以下のようになりました。

今回テストのために MariaDB Monitor の monitor_interval をデフォルトの 2000 ms ではなく,200 ms に変更していますので,2 秒ほどで server2 (replica1) が 新たな Master(Primary) に昇格しています。

しばらくして server1 のコンテナが自動再起動し,Slave Running というステータスになりました。

ここで,maxctrl list servers を実行すると,

のようになりました。server2 が Primary(Master) となり,その他のコンテナが Replica(Slave)となっていることが確認できます。

まとめ

今回は Docker 上で MariaDB Communty Server を Primary / Replica 構成でデプロイしてみました。非常に簡単に MariaDB Server のテスト環境が構築可能なことが確認頂けたかと存じます。
なお,MaxScale の最新版 2.4 は 2023-10-29 に GPL v2 に移行する BSLライセンスされています。
テスト環境ではライセンス購入は必要ありませんが,プロダクション環境で MariaDB Server インスタンスが 3 以上であると有償となりますので留意願います。

 

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃オープンソースデータベースのサポート業務に従事している有資格者で構成された技術サポートチームがMariaDBに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次