メニューを閉じる

テクノモバイルグループ

メニューを開く

2018.11.20

プログラミング

SpringでMaster/Slave構成のMySQLに接続する(with Kotlin)

こんにちは、MTです。
今回は、Master/Slave構成のMySQLに接続する方法についてです。
(具体的には、クエリの発行先をMasterとSlaveで切り替える方法について)

環境

■言語
・Kotlin 1.3.0
■アプリケーション
・SpringBoot 2.1.0
・mysql-connector-java 5.1.45
■MySQL 5.6
・Masterのホスト : localhost:3306
・Slave のホスト : localhost:3307

なお、MySQL自体のレプリケーション設定については触れていません。

urlのスキームは jdbc:mysql://ではなく、jdbc:mysql:replication://を使用する。

通常はurlに指定するのは jdbc:mysql://スキームですが、Master/Slave構成の場合は jdbc:mysql:replication:// スキームを使用します。
そして jdbc:mysql:replication:// スキームに続けて、Masterのホストアドレス、Slaveのホストアドレスの順にカンマ区切りで記載していきます。

こんな感じ。(末尾の /dev はデータベース名。) Slaveの指定は複数でもOKです。

Master or Slave の向き先を切り替える

宣言的トランザクションを利用している場合、readOnly オプションに true を指定すれば Slave に向きます。

明示的トランザクションを利用する場合は、 java.sql.Connection インタンスを取得し、setReadOnly メソッドに true を設定してください。

実際に動かして確認してみる。

事前に以下の user テーブルを作成し、MasterとSlaveで異なるデータを登録しておきます。

次にデータを取得するサービス層で、宣言的トランザクションを利用して、読み取り専用とするかを定義しておきます。

ユーザ情報を取得するためのエンドポイントは以下のようにしました。

/master : Master側に登録されたユーザ情報を取得する。
/slave : Slave側に登録されたユーザ情報を取得する。

ではアクセスしてみます。

ちゃんと向き先が変わってますね。

今回のプログラムとか

application.yml

MysqlReplicationSandboxApplication.kt

docker-compose.yml


【テクノモバイルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』
https://qangaroo.jp/

最近の記事

SNS共有

X CLOSE
X CLOSE
X CLOSE