Help us understand the problem. What is going on with this article?

ニフティクラウドRDBを構築してみる

More than 3 years have passed since last update.

はじめに

RDBの構築手順を備忘録的にまとめてみました。

前提条件

特になし。強いて言うなら@niftyアカウント登録済みであること。

手順

  • FW作成
  • RDB作成
  • ログ出力設定
  • Timezone変更
  • フェールオーバー

詳細

FW作成

  • コントロールパネルより[RDB] -> 左ペイン[DBファイアウォール] -> [DBファイアウォールグループ作成]
    image.png

  • FW名、ゾーン、メモ(任意)入力
    image.png

  • 接続元CIDRを入力し追加
    image.png

    インスタンス(WEBサーバー、APサーバー等)との通信が発生する場合は、プライベートIPを接続元として指定する方がセキュリティ的に良いかも。

  • 作成完了
    image.png

RDB作成

  • 続いて左ペイン[DBサーバー] -> [DBサーバー作成]
    image.png
  • エンジンを選択
    今回はMySQL5.6系を選択しているが、適宜好みに合わせる。 image.png
  • サーバー名、ゾーン、タイプ、ディスク等を入力
    冗長化についてはこちらを参照 image.png
  • DB名、マスタユーザー/パスワードを入力
    image.png
  • バックアップ、メンテナンス時間を設定
    image.png
  • 最後、設定内容を確認し作成
    image.png
  • 作成開始
    完了するのに数分要する。 image.png
  • 作成完了
    image.png

ログ出力設定

コントロールパネルからログを閲覧できるようにするため、パラメータを変更する。

  • 左ペイン[DBパラメーター]から[DBパラメーターグループ作成]をクリック
    image.png
  • パラメーター名、エンジンを入力
    image.png
  • 検索窓から「log_output」を入力し設定値を確認
    「FILE」になっていれば、閲覧可能。 image.png
  • 次に検索窓から「slow_query_log」を入力し検索
    プルダウンから「1」を選択。スロークエリの設定はトラブルシューティング時に役立つので極力やった方がいいかも。 image.png
  • 次に検索窓から「general_log」を入力し検索
    プルダウンから「1」を選択。こちらは任意です。 image.png
    完了後、[保存する]をクリックし、パラメーターを作成
  • 保存後、それぞれ確認。
    image.png

image.png

設定反映

先程作成したパラメーターグループを反映する。

  • 左ペイン[DBサーバー]から対象サーバーを選択し、[選択したDBサーバーの操作]からプルダウンで設定変更を選択
    image.png
  • DBパラメーターグループのプルダウンから先程作成したパラメーターグループを選択し、設定変更
    image.png
  • 設定後確認
    image.png

Timezone変更

TimezoneをUTCから変更する。これによりタイムスタンプが日本時間に合わせられる。

  • 現在のTimezoneを確認
    mysqlコマンドでログインする。※MySQLクライアント(Webサーバーなど)で操作
mysql
mysql -h [RDB IPアドレス] -u [ユーザー名] -p
Enter password:
~
show variables like '%time_zone';

+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
  • ストアドプロシージャの作成
    ニフティクラウド側が作成したrdbadmin以外のユーザについては、Asia/Tokyoを適用させる。
MySQL
mysql> CREATE DATABASE shared;
Query OK, 1 row affected (0.00 sec)

mysql> DELIMITER |
mysql> CREATE PROCEDURE shared.`store_time_zone`()
    -> IF NOT (POSITION('rdbadmin@' IN CURRENT_USER()) = 1) THEN
    -> SET SESSION time_zone = 'Asia/Tokyo';
    -> END IF |
Query OK, 0 rows affected (0.29 sec)

mysql> DELIMITER ;

マスターユーザー以外の新規に追加したユーザーでストアドプロシージャを作成するにはマスターユーザーでログインし下記のような権限付与を行う必要がある。

MySQL
GRANT ALL ON shared.* to ユーザー名@'%' identified by 'パスワード';
  • パラメータを修正

スクリーンショット 2017-08-30 12.49.22.png

  • 検索窓で「init_connect」を検索し、以下入力
init_connect
CALL shared.store_time_zone

image.png

  • 保存後、DBサーバーを再起動

image.png

image.png

  • 再起動後反映されているか確認
MySQL
mysql> show variables like '%time_zone';
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| system_time_zone | UTC        |
| time_zone        | Asia/Tokyo |
+------------------+------------+
2 rows in set (0.00 sec)

フェールオーバー

余力があれば追記

最後に

1から冗長構成のDBを作成するよりだいぶラクです。
もうちょっとこうした方がいいなどご意見ありましたらコメントお願いします。

参考

MySQLエンジンでタイムゾーンをUTCから他のものに変更することは可能ですか?
コントロールパネルからDBログを閲覧できるようにしたいのですが、どのようにすればいいでしょうか?
DBパラメータグループ
DBログ

hir0110
主にバックエンドを中心にみているエンジニアです。
https://github.com/pir0000w
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした