CloudSQLの環境設定
ここではGCPのCloudSQLに、イベントスケジューラーを使った擬似テーブルを構築する。そして、MySQLワークベンチやTableauなどから確認する手順をまとめておく。書きを参考にしている。
インスタンスの作成
まずはインスタンスを作成する。
ここではデータ連携のテストするためのデータベースなので、インスタンスはMySQLの一番安いものを使っている。
MySQL第2世代のインスタンス料金は、インスタンスが実行されている間、1分ごとに課金される。ここでは、アイオワのus-central1
のdb-f1-micro*
を使用する。料金はこんな感じ。詳細はドキュメントを参照。他には「ストレージとネットワークの料金」もかかる。
設定はこんなかんじ。
event_scheduler
はここでONにする。CloudSQLは、MySQLのSUPER権限が制限された条件付きのrootユーザーなので、event_scheduler
をコンソールからアクティブにできないが、ここで設定できる。
このあとはユーザーパネルからユーザーを作っておく。
- user:
user01
- pass:
******
次には接続パネルからローカルからMySQLワークベンチで接続できるようにIPアドレスを許可する。下記でIPアドレスは調べられる。
これでローカル環境のMySQLワークベンチからCloudSQLに接続できるようになったので、コネクションを作る際に必要なIPアドレスを、概要のところからコピーしておく。
MySQLワークベンチのコネクションでは下記の通り入力する。
あとはMySQLワークベンチからイベントスケジューラーの設定を行う。動画のように、Cloud Shellからgcloud beta sql connect
コマンドを使うと、今はproxyの設定をしないと行けないので、めんどくさいのでやめた。もしくは管理画面のCloud Shellからであれば簡単に操作できると思う。起動すると、gcloud sql connect cloudsql-mysql --user=root --quiet
がデフォルトで入力されていると思われる。
create database event_auto_insert; use event_auto_insert; CREATE TABLE event_auto_insert.logs ( id INT AUTO_INCREMENT, datetime DATETIME NOT NULL, value1 INT NOT NULL, value2 INT NOT NULL, category varchar(1) NOT NULL, flg INT NOT NULL, PRIMARY KEY (id) ); create event logs on schedule every 60 SECOND starts now() do INSERT INTO event_auto_insert.logs(datetime, value1, value2, category, flg) VALUES ( NOW(), CASE WHEN MONTH(NOW()) IN (1,2,3) THEN FLOOR(RAND() * (100 * -1)) WHEN MONTH(NOW()) IN (4,5,6) THEN FLOOR(RAND() * (10 * -2)) WHEN MONTH(NOW()) IN (7,8,9) THEN FLOOR(RAND() * (100 * 1)) ELSE FLOOR(RAND() * (10 * 2)) END, FLOOR(RAND() * 100), SUBSTRING(MD5(RAND()), 1, 1), floor(rand() * 2) );
こんな感じで自動でインサートされる。
Tableauでもコネクションできるか確認しておく。
問題なさそう。
以上でおしまい。検証し終わったら、課金対象になるので、インスタンスは停止しておく。あとはいろんなシステムと連携させるためにデータ供給元として利用する。ちなみにテストなので、料金はこんな感じになるかと。