1
1

More than 1 year has passed since last update.

SchemaSpyを使って、RDSのTable情報をER図まで自動的に作って欲しい

Last updated at Posted at 2021-08-25

概要

SchemaSpyを使って、接続先のDBのTable情報を綺麗に抜き取り、あわよくばER図にしてくれるところまでしてほしい

SchemaSpy

GitHub - schemaspy/schemaspy: SchemaSpy code home

やった事

  1. EC2にDockerを追加
  2. SchemaSpy Dockerイメージの取得
  3. schema生成
  4. ローカルにSchemaデータをDL

EC2にDockerを追加

$ sudo yum install -y docker
$ sudo service docker start
# ec2-userがdockerコマンドを実行できるように、ec2-userをdockerグループに入れる
$ sudo usermod -a -G docker ec2-user

SchemaSpy Dockerイメージの取得

$ docker pull schemaspy/schemaspy
# インストール確認
$ docker images

このまま稼働させると、以下のエラーが発生

WARN - Connection Failure
Failed to connect to database URL [jdbc:mysql://mysql:3306/hoge] Unknown system variable 'query_cache_size'

MySQLJDBC ドライバのバージョンを上げれば解決するとのことなので、MySQL手に入れる

$ mkdir -p drivers
$ curl -L https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.16.tar.gz |
    tar xvzf - -C drivers --strip=1 mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar

schema生成

まずはDBの各環境変数をexport

$ export DB_HOST={HOST名}
$ export DB_PORT={Port番号}
$ export DB_NAME={DB名}
$ export DB_PASS={DBPass}
$ export DB_USER={DBUser}

Docker起動

$ docker run --rm --net="host" -v "$PWD/schema:/output" -v "$PWD/drivers:/drivers" -u root:root schemaspy/schemaspy:latest -t mysql -host ${DB_HOST}:${DB_PORT} -db ${DB_NAME} -u ${DB_USER} -p ${DB_PASS} -connprops useSSL\\=false -s ${DB_NAME}

ローカルにSchemaデータをDL

まずはEC2先で、SchemaファイルをZip化

$ zip -r schema.zip schema

ローカルに戻り、EC2上のschema.zipを入手する

$ scp -i "$HOME/.ssh/{秘密鍵のPath}" ec2-user@{ipアドレス}:/home/ec2-user/schema.zip ./

Zipファイルを展開し、index.htmlをブラウザで開く

スクリーンショット 2021-08-24 17.42.51.png

各コード

なるべくシェルでよしなににしたかったので、Gitsでまとめてみた

install_docker.sh: EC2上にDockerを入れる

https://gist.github.com/kaionn/96056d2033d2b4ce409616e526a18388

create_schema.sh : SchemaSpyを用いてSchemaデータを作り、Zip化する (変数入力必須)

https://gist.github.com/kaionn/4d15cbc7ba40e54699c548c84d6cbc31

download_schema.sh:ローカル上からSchemaデータをカレントディレクトリにDL・解凍・index.htmlを展開するところまでやってくれる

https://gist.github.com/kaionn/a796f63811ea5d49b3e30faa2eec0c593

参考サイト

DockerでサクッとDBからER図を作成する - Qiita
【SchemaSpy】手間をかけずにRDS(MySQL)からER図を生成したい - Qiita
Docker でサクッと MySQL 8 からER図を作成する - Qiita

1
1
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
1
1