すぐ影響されるブログ

アニメやマンガにすぐ影響されるミーハーのブログ

PostgreSQL から MariaDB(MySQL)へのマイグレで知っておきたかった事

DBの移行なんて二度とやりたくねンだわ。


redmineのDBをPostgreSQL から MariaDBMySQL)に切り替えたときいろいろ調べたので供養。

PostgreSQLからMySQL系に移行した先人たち

PostgreSQLでdumpしたファイルをMySQL用に書き換えた人たちの記録。

基本的にはこれらを見ながら試行錯誤していく感じになると思う。

www.rectus.co.jp

qiita.com

qiita.com

qiita.com

www.miloweb.net

DB間の違い

文字コード - MariaDBにテーブルを作る前に知っておきたいこと

MySQL系で言う utf8 は utf8 じゃない。

何を言ってるかわからないだろう。

つまりこれを読めということです。

penpen-dev.com

じゃあ実際どうすんのよという話はこれらを読むとよい。

qiita.com

www.karakaram.com


一応ドキュメントも載せておくが、何を言っているのかよくわかっていない。

dev.mysql.com

文字列の扱い - dumpファイルの修正時に知っておきたいこと①

PostgreSQLMariaDBはどちらも、文字列を扱う場合に使えるデータ型としてvarcharとかtextとかがある。

しかしPostgreSQLMariaDBでは、同じtext型でも性質が異なるので注意されたい。

具体的な話は以下の記事が詳しい。

style.potepan.com

また、公式のドキュメントも確認しておくとよろしい。

PostgreSQLの文字型(公式ドキュメント)

MMariaDBのtext型(公式ドキュメント/英語)

英語読むのがだるい人はdeeplでも使ってください。

過去記事でdeeplのchrome拡張の導入と使い方の紹介してます。

nagoyanofes.hatenadiary.jp

MySQLでのvarchar型についてもっと深堀りしている方もいました。

www.utakata.work

連番を付ける - dumpファイルの修正時に知っておきたいこと②

  • PostgreSQLではSEQUENCE/MariaDBではAUTO_INCREMENT
  • と言いつつも、MariaDBでもSEQUENCEは使える(らしい)
  • AUTO_INCREMENTは…
    • 主キーかユニークキーが設定されたカラムにしか使えない
    • データ型は整数か浮動小数点数。text型はNG
    • 1つのテーブルに対して1つだけ指定できる(しなくてもいい)


PostgreSQLMariaDBでは連番の付け方が異なる。

以下の記事では MySQLPostgreSQL で連番の設定をするならそれぞれこんな感じになるよねということが書いてある(2012年の記事のため参考程度に)

www.softel.co.jp

ただ、MariaDB 10.0以降はSEQUENCEが使えるようになったらしく、PostgreSQLと同じような使い方ができるのかもしれない(未検証)

blog.s-style.co.jp

ちなみにPerconaだとシーケンスは使えない。

以下はそれぞれどんな感じで使うのか調べたもの。

PostgreSQL: SEQUENCE

SEQUENCE(シーケンス)の使われ方の参考に。

qiita.com

PostgewSQLのdumpファイルと比較しながら調べてみると良さげ。

MariaDB: AUTO_INCREMENT

style.potepan.com

👆ステップバイステップで説明されていてわかりやすい。テーブル作成時と作成後のそれぞれのタイミングで設定する方法が書いてある。

blog.doli.jp

👆さくっと手順を確認したいときに見る(テーブル作成後に追加する方法のみ)

phpjavascriptroom.com

👆詳細な手順が書いてある(テーブル作成後に追加する方法のみ)


関連:既にあるテーブルやインデックスをいじる

一応、有償ソフトもある

いろいろリンクを貼ったが、有償ソフトを使って変換してしまう方法もある。

一例としてDBConvertというソフトがある。

これについてはeasyredmine(redmineの有償拡張パッケージ)の開発元がPostgreSQLからMySQLの移行に良いよ!と太鼓判を押している。

www.easyredmine.com

しかし値段が10万円を超えるため、個人で買うのは厳しいところ。

PostgreSQL 小ネタ

テーブルのサイズとかレコード数とか

全部移行できてるかの確認とかで使うかもしれない。

www.t3a.jp

列を縦に表示

\x ←こいつ

たまに便利。

lets.postgresql.jp

SQL構文

後からテーブルやインデックスをいじる - ALTER TABLE

名前や定義を後から変更したいときに。

www.javadrive.jp

redmine 関係

以下の記事が役に立った。

mseeeen.msen.jp

  • postgresql に外部からログインする方法
  • redmine のチケットに関連する主なテーブル


について記載がある。