IDCFクラウド RDBを使ってみた
IDCFクラウドで、待望のマネージドRDBサービス(AWSのRDSに相当)がリリースされました。
・IDCF Cloud RDB
https://www.idcf.jp/cloud/rdb/
データベースは、MySQL Community Edition 5.7のみの提供です。
細かい機能仕様やベンチマークテストの結果などは、FAQや仕様書(PDF)で開示されています。
・RDB FAQ
https://www.faq.idcf.jp/app/answers/list/c/89
・RDB 仕様書(PDF)
https://www.idcf.jp/cloud/rdb/
↑「仕様書(PDF)」のリンクより。
AWSのRDSを使っていれば、機能はほぼ同じですので、理解しやすいと思います。
2018年7月末までは無料で使用できるとのことで、さっそく使ってみました。
以下に気づいた点をまとめます。
良い点
以下の点は、使ってみて、良いと感じました。
- 起動が速い
- バックアップはオブジェクトストレージに保存される
- 既存のプライベートネットワーク内にインスタンスが作成される
- 無停止でスペックアップ、ディスクサイズ増加が可能
起動が速い
サービスダッシュボードでRDBを作成してから、ステータスが「Running」となり利用可能となるまでの時間が2~3分で、「AWS RDSよりも速いな」と感じました。
※AWS RDSも今は速いのかも。
バックアップはオブジェクトストレージに保存される
IDCFクラウドのオブジェクトストレージの料金は50GBまで無料、50GB以上は、7.8円/GB,月です。
RDBのバックアップは圧縮して保存されるとのことで、無料でバックアップできる範囲が大きいと思います。
※オブジェクトストレージ側の操作で削除してしまったときは、不整合が発生するような。。
既存のプライベートネットワーク内にインスタンスが作成される
デフォルトがプライベートネットワーク内の起動で、インターネットからの直アクセスが不可、というのはセキュリティ的に好ましい状態だと思います。
一方で、外部システムとのDB連携や、MySQL Workbenchでアクセスしたい、という要件がある場合は、プロキシーサーバーなどを用意する必要があり、少し面倒です。
無停止でスペックアップ、ディスクサイズ増加が可能
無停止でスペック変更ができるのはうれしいですね。
ただし、現時点では、1CPUのLightタイプから他のタイプへは変更はできません。
また、CPU数・CPUクロック・メモリサイズが元のスペック以上になるときのみ変更可能とのことで、たとえば、highCPU.M4(2CPU, メモリ4GB)からM8(2CPU, メモリ8GB)は、CPUクロックが下がるので変更不可となります。
最小スペックでスモールスタートしてからサービスの成長に合わせてスペックを上げることや、逆に大きめのスペックでラージスタートしてから運用状況に応じてスペックを下げるなど、スペック変更の柔軟性はクラウドならではのメリットです。
無停止にはこだわらなくてもよいので、柔軟に変更できるようになってほしいと思います。
MySQLパラメータ
MySQLパラメータはチューニングされているとのことで、mysqlコマンドの ‘SHOW VARIABLES’ で確認したところ、主なパラメータ設定値は次のようになっていました。
パラメータ | 設定値 |
join_buffer_size | 262144 (256KB) |
sort_buffer_size | 262144 (256KB) |
read_buffer_size | 131072 (128KB) |
read_rnd_buffer_size | 262144 (256KB) |
max_connections | 151 |
slow_query_log | ON |
long_query_time | 10.000000 |
query_cache_type | OFF |
query_cache_size | 1048576 (1MB) |
wait_timeout | 28800 |
tmp_table_size | 16777216 (16MB) |
max_heap_table_size | 16777216 (16MB) |
- 最大同時接続数は151
- スロークエリログは有効、閾値は10秒
- クエリキャッシュは無効
- tmp_table_size, max_heap_table_size は16MB
といったところです。
innodb_buffer_pool_size と、innodb_log_file_size は、マシンタイプによって調整しているとのことで、マシンタイプ light.S1(1CPU, メモリ1GB), light.S2(1CPU, メモリ2GB), highcpu.M4(2CPU, メモリ4GB)では次のようになっていました。
パラメータ | light.S1 設定値 |
light.S2 設定値 |
highcpu.M4 設定値 |
innodb_buffer_pool_size | 671088640 (640MB) | 1073741824 (1GB) | 2147483648 (2GB) |
innodb_log_file_size | 134217728 (128MB) | 134217728 (128MB) | 268435456 (256MB) |
light.S1だけ少し違いますが、
innodb_buffer_pool_size は、サーバーメモリの1/2
innodb_log_file_size は、サーバーメモリの1/16
と考えてよいでしょう。
機能制限
現時点(2018年7月)では、まだ機能が少なく、特に以下の点は、本番環境で使用する上では、問題になると考えます。
- 手動再起動ができない
- 冗長構成のとき、手動フェイルオーバーはできない
- パラメータを変更できない
- 作成時の設定を変更できない
- RDBを削除するとバックアップデータがすべて削除されてしまう
手動再起動ができない
何らかのトラブル発生時や、使用メモリをいったんクリアしたいときに、「とりあえず再起動してみる」ができません。
AWS RDSを使っていて、手動で再起動をかけたいときがたまにあります。
何かトラブルが発生していても、ユーザーがOSレイヤの調査や対処をできるわけではないので、サポートに依頼しなくても、ユーザー側で再起動できるようにしてほしいです。
冗長構成のとき、手動フェイルオーバーはできない
フェイルオーバーの動作確認ができません。
おそらく、フェイルオーバーが発生することはレアケースだとは思いますが、本番環境で使用するうえでは、フェイルオーバーが発生してスタンバイノードに切り替わって、もアプリケーションが問題なく動作することは確認しておきたいところです。
パラメータを変更できない
いちおう、「mysqlコマンドの ‘SET GLOBAL’ で変更できる」とされていますが、変更が反映されるのは動的変数に限られますし、何らかの原因でMySQLサーバープロセスが再起動した場合は、パラメータが元に戻ってしまいます。
冗長構成の場合は、変更内容がスタンバイ側に反映されていないので、フェイルオーバー発生後に、mysqlコマンドで変更する必要があります。
また、パラメータグループ機能は今後提供予定とのことですが、そのときに、提供以前に作成したRDBインスタンスに適用できるのか?という不安があります。
(新規作成したインスタンスにしか、パラメータグループを適用できない、となるような。。)
作成時の設定を変更できない
RDB作成時に指定した以下の設定は、変更できません。
- バックアップをする、しない
- バックアップ世代数
- 冗長構成する、しない
- FQDN(エンドポイント)
これらを変更したいときは、RDBを作成しなおす必要があります。
RDBを削除するとバックアップデータがすべて削除されてしまう
AWS RDSとは違い、手動で作成したバックアップも削除されるのは痛いところです。
稼働中のRDBについて、上記のように設定を変更したいときや、スペックダウンしたいときは、いったんバックアップをとってから、それをもとにRDBを作成する流れになりますが、そのときに同じFQDNではRDBを作成できません。
FQDNが同じRDBを作成するために、やむを得ずRDBを削除すると、バックアップも削除されてしまうので、元のデータ・設定を復元できません。
しょうがないので、元のRDBを起動したまま、バックアップから別のFQDNで新しいRDBを作成するしかなく、そうすると、アプリケーション側でDB接続先設定を変更する必要があります。
上記のようなケース以外でも、RDBを削除しても将来的に復元できるようにバックアップを残しておきたい、というニーズはあると思います。
おわりに
現時点では、本番環境で使うには足りない機能が多く、採用は難しいのですが、今回の正式リリースは大きな一歩だと思います。
RDB機能がないことが、サーバー複数台構成の場合に、お客様にIDCFクラウドをおすすめしにくい大きな要因でした。
過去のIDCFクラウドの利用経験から、品質・性能面は全く心配していません。
今後の機能追加、改善を期待します!