Google Dataportal(Datastudio)でMySQL8のRDSを使う方法メモ
※注意点
試行錯誤の結果色々変なことになっている箇所があるので、得た情報をつなぎ合わせたものを先に書いて、"動かなかった場合"として自分の環境も載せようと思います。
はじめに
google dataportalでは、MySQL8に対応していないらしく、そのままでは接続できませんでした。 公式のcommunityスレッドにとても有益な情報があったのでそれを参考にした結果接続できたのでそれを載せます。
引用元: https://support.google.com/datastudio/thread/4115506?hl=en&msgid=34547134
ざっくりまとめると、RDSに直接接続するのではなくProxySQLという色々よしなにやってくれるミドルウェアを間に挟むそうです!
前提
DB:RDS MySQL8.0.16 (色々試行錯誤したのでリードレプリカでpublicから接続できるDBを使っています。同じVPCの中に環境立てるのでpublicなDBでなくてもいけると思います。)
手順
1. ProxySQLの準備
EC2インスタンスの作成
- AMI:Amazon Linux 2(他では試していません)
- VPC:RDSと同じ
- セキュリティグループ
- port:22 ソース:myIP(proxysql設定の為)
- port:6033 ソース:Google Dataportalのヘルプに書いてあるip一覧(カンマ区切り) 下記参照
64.18.0.0/20,64.233.160.0/19,66.102.0.0/20,66.249.80.0/20,72.14.192.0/18,74.125.0.0/16,108.177.8.0/21,173.194.0.0/16,207.126.144.0/20,209.85.128.0/17,216.58.192.0/19,216.239.32.0/19
引用元: MySQL に接続する - データポータルのヘルプ
ProxySQLの設定
以下を実行
sudo vi /etc/yum.repos.d/proxysql.repo
以下を記入
[proxysql_repo] name= ProxySQL YUM repository baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever gpgcheck=1 gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key
以下を実行
sudo yum install proxysql
- proxysqlの設定
以下このファイルを触っていきます
sudo vi /etc/proxysql.cnf
~ 略 ~ admin_variables= { admin_credentials="DBマスターユーザーパスワード or DBマスターユーザーパスワードをハッシュ化したもの" # mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock" mysql_ifaces="127.0.0.1" ←変更 # refresh_interval=2000 # debug=true } ~ 略 ~
DBマスターユーザーパスワードのハッシュ化は、該当DBに接続し、
SELECT CONCAT("*", UPPER(SHA1(UNHEX(SHA1('DBマスターユーザーパスワード'))))) AS password;
上記のsqlを実行することで取得できるそうです。
~ 略 ~ mysql_variables= { ~ 略 ~ default_schema="DB名" stacksize=1048576 server_version="8.0.16" ←変更 ~ 略 ~ mysql_servers = ( { ~ ここから address = "RDSエンドポイント" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain port = 3306 # no default, required . If port is 0 , address is interpred as a Unix Socket Domain hostgroup = 0 # no default, required status = "ONLINE" # default: ONLINE weight = 1 # default: 1 compression = 0 # default: 0 ここまでをコメントアウト~ # max_replication_lag = 10 # default 0 . If greater than 0 and replication lag passes such threshold, the server is shunned }, ←ここもコメントアウト ~ 略 ~ mysql_users: ( { username = "DBマスターユーザー名" # no default , required password = "DBマスターユーザーパスワード or DBマスターユーザーパスワードをハッシュ化したもの" # default: '' default_hostgroup = 0 # default: 0 active = 1 # default: 1 }, ~ 略 ~ mysql_query_rules: ( ~ ここから { rule_id=1 active=1 match_pattern="\@\@query_cache_size" replace_pattern="null" apply=0 }, { rule_id=2 active=1 match_pattern="\@\@query_cache_type" replace_pattern="null" apply=0 }, { rule_id=3 active=1 match_pattern="\@\@tx_isolation" replace_pattern="null" apply=0 }, ここまで 追加~ ) ~ 略 ~
MySQLのインストール
※引用元には載っていませんでしたが、接続確認の為インストールしました。 不要かもしれません。
以下を実行
sudo yum -y install mysql mysql-devel
2. RDSの設定
セキュリティグループの設定
インバウンドルールに
port 3306 ソース:上記で作成したEC2のセキュリティグループ
を追加
3. ProxySQLの実行
以下を実行
sudo service proxysql start
4. Google Dataportal側での設定
新規レポート→データを追加→MySQL
- ホスト名:上記で作成したProxySQLを実行しているEC2のパブリックIP
- ポート:6033
- データベース:接続したいDB
- ユーザー名:DBマスターユーザー名
- パスワード:DBマスターユーザーパスワード
を記入し 追加 をクリック
参考文献
ProxySQL公式 GitHub - sysown/proxysql: High-performance MySQL proxy with a GPL license.
Google Dataportal 公式スレッド https://support.google.com/datastudio/thread/4115506?hl=en&msgid=34547134