7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Compute Engine (GCE)からCloud SQLを使ってみる

Last updated at Posted at 2016-01-24

Google Compute Engine (GCE)上でTiny Tiny RSSを動かしてみるの続きです。前回はCompute EngineのVMインスタンス上でLighttpdとMySQLを動かしましたが、今回はMySQLの代わりにCloud SQLを使ってみます。基本的に自分用の備忘録です。

Cloud SQLとは

要はMySQLをGoogle Cloud Platform用に超カスタマイズしたVMインスタンスということのようです。

Cloud SQLインスタンスを起動

2016年1月の時点ではCloud SQL Second Generation (beta)がお勧めのようです。まだベータ版ですが、SLA(Service Level Agreement)も必要ないし、値段もこちらの方が安いようなので、こちらを使ってみます。

Machine typeはとりあえずdb-f1-microを選択。Enable daily backupsをチェックして時間を適当に設定。Advanced optionsのMySQL flagscharacter_set_serverutf8mb4に、default_time_zone-08:00(America/Los_Angelesの冬時間の場合)にセットして起動します。

起動直後の初期状態で、Storage usageが約1GB、CPU usageがほぼ0、Memory usageが約550MBでした。db-f1-microのメモリが614.4MBなので、結構ぎりぎりな感じです。

Cloud SQLの設定

まずはWebからAccess ControlのUserのところで'root'@'%'ユーザのパスワードを設定します。

それから、Access ControlのAuthorizationのところでTiny Tiny RSS用に起動したVMインスタンスのIPアドレスからのアクセスを許可します。IPアドレスはVMインスタンスのExternal IPを使えばいいようです。
試しにVMインスタンスからmysqlコマンドで接続してみます。

$ mysql -h (Cloud SQLインスタンスのIPアドレス) -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
...
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-01-22 20:20:20 |
+---------------------+
1 row in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

現在時刻をチェックしてタイムゾーンの設定ができているか確認しておきます。

Creating DatabasesCreating Usersを見るとWebからデータベースやユーザを作れそうですが、どうやらSecond Generation (beta)ではまだサポートされていないようです。ということで、mysqlコマンドからデータベースとユーザを作成します。

mysql> CREATE DATABASE ttrss_db CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'ttrss_user'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON ttrss_db.* TO 'ttrss_user'@'%';
Query OK, 0 rows affected (0.00 sec)

データの移行

Importing and Exporting Dataを参考に、VMインスタンスのttrss_dbデータベースのデータをダンプしてインポートします。

$ sudo service tt-rss stop
$ mysqldump --databases ttrss_db -u ttrss_user -p --hex-blob --default-character-set=ut
f8 > ttrss_db.sql
Enter password: 
$ ls -l
total 504
-rw-rw-r-- 1 z80 z80 513801 Jan 22 22:22 ttrss_db.sql
$ gcloud auth login
...
$ gsutil cp ttrss_db.sql gs://mybucket
Copying file://ttrss_db.sql [Content-Type=application/x-sql]...
Uploading   gs://mybucket/ttrss_db.sql:                              501.76 KiB/501.76 KiB    
$ gsutil ls -l gs://mybucket
    513801  2016-01-22T22:22:22Z  gs://mybucket/ttrss_db.sql
TOTAL: 1 objects, 513801 bytes (501.76 KiB)
$ gcloud sql instances import ttrss-db gs://mybucket/ttrss_db.sql
Importing Cloud SQL instance...-ERROR: (gcloud.sql.instances.import) UNKNOWN

むむ、UNKNOWNな理由でエラーになってしまいました。試しにFirst GenerationのCloud SQLインスタンスを起動してインポートしてみたら問題なくインポートできたので、Second Generation (beta)ではまだサポートされていないのでしょう。
普通にmysqlコマンドからリストアします。

$ mysql -h (Cloud SQLインスタンスのIPアドレス) -u root -p < ttrss_db.sql 
Enter password: 

問題なくリストアできました。

Tiny Tiny RSSの設定

Tiny Tiny RSSの設定を変更します。

$ sudo service tt-rss stop
$ sudo service mysql stop
$ cd /var/www/tt-rss
$ sudo mv config.php config.php.backup

ブラウザで http://(IPアドレス)/tt-rss/install/ にアクセスしてインストールします。

$ diff -u config.php.backup config.php
...
$ sudo vi config.php
# DAEMON_SLEEP_INTERVALの設定を追加
$ sudo service tt-rss start

ブラウザで http://(IPアドレス)/tt-rss/にアクセスます。

バックアップとリストア

一日経ったら、バックアップがとれているか確認します。試しにリストアしてみると、データは元に戻ってTiny Tiny RSSも普通に動いています。

まとめ

Tiny Tiny RSSのデータベースを、Compute EngineのVMインスタンス上のMySQLからCloud SQLに移行して、問題なく動くことが確認できました。Cloud SQLのSecond Generation (beta)は、MySQL本体は問題なく動いているようですが、Webからの設定やgcloudコマンドからの操作はもうちょっとのようです。2016年1月の時点では、Cloud SQLの機能を活用するならFirst Generationの方がお手軽そうです。

ToDo

MySQLのcharacter setについて調べていたら、utf8utf8mb4というのがあるようです。schema/ttrss_schema_mysql.sqlではDEFAULT CHARSET=UTF8としていますが、絵文字などを扱うにはutf8mb4にする必要があるようです。
追記: Google Compute Engine (GCE)上でTiny Tiny RSSを動かしてみるを更新しました。

参考

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?