PostgreSQL から MySQL への移行メモ
Redmine のバックエンドを PostgreSQL から MySQL へ移行しました。 ググってもあまり情報がありませんでしたので知見の蓄積も兼ねて記載しておきます。
今回使用したツールは以下:
このツールってリポジトリ名を見る限り Pivotal が作ってる気がするんですが一切情報が無いんですよね。(非公式扱い?)
作業項目は以下の順序で行いました。
今回は 2. の部分を解説します。
- Golang のソースからビルドする場合は go get でビルドします。
go get github.com/pivotal-cf/pg2mysql/cmd/pg2mysql
バイナリだけ欲しい場合は↓から pg2mysql_linux をダウンロードしてください。
https://github.com/pivotal-cf/pg2mysql/releases
- リポジトリの Readme.md にも書かれていますが、まずデータベース接続用の config.yml を作ります。
cat > /tmp/config.yml <<EOF mysql: database: some-dbname username: some-user password: some-password host: 192.168.10.1 port: 3306 postgresql: database: some-dbname username: some-user password: some-password host: 192.168.10.2 port: 5432 ssl_mode: disable EOF
- 事前チェックを行います。
pg2mysql -c /tmp/config.yml validate
- 移行します (truncate を指定するとテーブル移行前にレコードを削除します)。
pg2mysql -c /tmp/config.yml migrate --truncate
このツールは接続失敗等のログを一切出力しないので、 config.yml の内容が誤っていると嵌ります(嵌りました)。 pg_hba.conf や GRANT の指定を今一度確認した方が良いかと思います。 スキーマ構造がシンプルだとこれで事足りてしまいますね。 (構造が少し複雑だと MySQL Workbench を使った方が良いと思いますが。)