Google Cloud PlatformでMySQLを動作させる
Google Cloud Platformで、MySQLを使用していきます。
最終的には、GAEにRuby on Railsをデプロイしてプロダクション環境で動作させますが、
その前段階として、まずはDBの構築から行います。
MySQLの立ち上げ自体はかなり簡単な作業なのですが、
抜けがないように、丁寧に手順を記載していきたいと思います。
Google Cloud Platformについて
これは相当数の説明がありますので、わざわざ書くまでもないですね。
公式ページを見るのが早いと思います。
AWSやAzure、さくらのクラウド辺りと競合してくるサービスです。
Google Cloud Platformのイニシャルで、GCPと呼ばれるのが一般的かと思います。
GCPのデータベースについて
GCPには2017年5月現在で、3つのデータベースが存在します。
ざっくりまとめると、以下の感じです。
Cloud Datastore
KVS型DB。プログラムから使用する場合、Google提供のライブラリーを導入し、
GCPのドキュメント見ながら、DB操作のコーディングが必要。
Railsの場合(多言語でも聞いた事はないが)、当然ORMは存在しない。Cloud SQL
RDB。一般的に使用されているRDBのホスティングサービスで、
MySQLとPostgreSQLに対応している。
MySQL用のORMで使えるし、ローカルから各種ツールを使ってデータ操作も可能。
今回はこれを使用します。Cloud Spanner
KVSのスケーラビリティと、RDBの整合性をトレードオフする事なく実現させた、
夢のようなDB。今現在はGo、Java、Node.js、Python用のクライアントライブラリーがある。
その他の言語にも順次対応予定との事。
MySQLの構築なので、今回はCloud SQLを実行します。
Cloud SQLの有効化
まずはプロジェクトを作成し、選択した状態にして下さい。
今回はアプリケーションをデプロイするプロジェクトにて、Cloud SQLを同居させます。
※IAMを調整すれば、プロジェクトを跨いでアプリケーションとDBを接続する事も可能です。
- 左のメニューから、ストレージのSQLを選択します。
- インスタンス作成をクリックします。
- DBエンジンの選択にて、MySQLを選択します。
- MySQLの世代選択で第2世代を選択します。
世代の違いとしては、第2世代の方がパフォーマンスが良く、たいていの場合安価になります。⇒公式ページ - インスタンスの詳細を入力していきます。
項目 | 内容 |
---|---|
インスタンスID | インスタンス名です。アプリからDB接続の指定などの文字列に含まれます |
データベースのバーション | 5.6か5.7で選択出来ます。 |
場所 | インスタンスを立てるリージョンです。DBに接続するアプリをデプロイするApp EngineやCompute Engineと同じ場所が無難でしょう |
マシンタイプ | スペックです。トラフィックなどを考えて、適切な物を選びます。共有コアマシンは安いですが、SLAの対象外ですし、実運用では避けた方が良いです。 |
ストレージの種類 | ディスクIOがどの位あるかで決まってきます。あまり高速アクセスの必要ないアプリであれば、HDDでも十分動作します。 |
自動バックアップを有効にする | バックアップする時間帯です。 |
バイナリログを有効にします | 高可用性を使用する場合、バックアップと併せてONにしてください。 |
高可用性 | フェイルオーバーレプリカの有無です。 |
メンテナンスの時間枠 | パッチ当てと再起動が行われる曜日選択です。 |
メンテナンスのタイミング | パッチをリリースからどのタイミングで当てるかの選択です。検証環境の場合、早めを選択してパッチテストを行うなどの使い方が出来ます。 |
rootのパスワード | そのままです。 |
Cloud SQLフラグ | MySQLのパラメーターの設定が出来ます。良くあるlower_case_table_namesなどの設定もここで可能です。 |
承認済みネットワーク | 自分のPCのWorkbenchなど、GCP外から直接接続する際のグローバルIPアドレスのホワイトリストです。自宅、自社のグローバルIPアドレスを追加します。 |
作成をクリック それなりに時間がかかりますので、作成完了まで待ちます。
インスタンスを確認する
作成完了したインスタンスをクリックします。
Cloud Shellからコマンドで一通り実行できますが、色々機能を使ってみるよう、
今回はWEBページとローカルから行います。
※使っているネットワークのグローバルIPがわからない場合はローカル接続できないので、
Cloud Shellを使用して下さい。
MySQLに慣れている方は、Cloud Shellでコマンドでユーザー追加したりする方が早いです。アクセス制御タブをクリックし、ネットワーク追加をクリックします。
アクセス制御、承認にローカル接続する環境のグローバルIPアドレスを追加します。
※使用しているPCのIPアドレスではありません。念のため…アクセス制御タブ内のユーザー、ユーザー アカウントを作成をクリックします。
メンテナンスやアプリでMySQLを使用するユーザーを追加します。
rootとrootのパスワードはインスタンス作成時に作成されております。
このままrootを使っても構いません。
CREATE USER
と同じ作業です。データベースタブ内の新しいデータベースをクリックします。
データベースを作成します。
CREATE DATABASE
と同じ作業です。
これでDBの準備は整いました。
今回、MySQLを使ったRailsアプリをデプロイする事を目標にしていますので、
ローカルからテーブル作成等ができるように設定していきます。
ローカルからMySQLの接続をする
左上のメニューから、API Manager→ライブラリをクリックします。
SQLのAPIを有効化します。GCP内のみで完結する場合は必要ないのですが、
ローカルから接続する場合は必須になります。Google Cloud APIメニューの中の、Cloud SQL APIをクリックし、遷移した画面で有効化します。
これでローカルからCloud SQLに接続する準備が整いました。ローカルからの接続情報の確認
Cloud SQLに移動し、概要タブをクリックします。
グラフの下にプロパティというセクションが有り、その中のIPv4 アドレスをメモします。
これがローカルから接続する際のサーバーIPになります。
ローカルから接続する
今回はMySQL Workbenchを使用して接続します。
接続先追加にて、Hostnameに前手順で確認したIPv4 アドレスを設定します。
Usernameはrootでも良いですし、前に追加したユーザーでも構いません。
後はパスワードを入力すれば、接続完了です。
ここまで設定ができていれば、ローカルのアプリケーションのDB設定にCloud SQLを追加する事で、 開発環境でCloud SQLを使用する事も可能です。
これでGCPでのMySQL導入は完了しました。
次はこれを使ったRuby on Railsのアプリケーションの導入したいと思います。