PostgreSQL から MariaDB(MySQL)へのマイグレで知っておきたかった事
DBの移行なんて二度とやりたくねンだわ。
redmineのDBをPostgreSQL から MariaDB(MySQL)に切り替えたときいろいろ調べたので供養。
DB間の違い
文字コード - MariaDBにテーブルを作る前に知っておきたいこと
MySQL系で言う utf8 は utf8 じゃない。
何を言ってるかわからないだろう。
つまりこれを読めということです。
じゃあ実際どうすんのよという話はこれらを読むとよい。
一応ドキュメントも載せておくが、何を言っているのかよくわかっていない。
文字列の扱い - dumpファイルの修正時に知っておきたいこと①
PostgreSQLとMariaDBはどちらも、文字列を扱う場合に使えるデータ型としてvarcharとかtextとかがある。
しかしPostgreSQLとMariaDBでは、同じtext型でも性質が異なるので注意されたい。
具体的な話は以下の記事が詳しい。
また、公式のドキュメントも確認しておくとよろしい。
英語読むのがだるい人はdeeplでも使ってください。
過去記事でdeeplのchrome拡張の導入と使い方の紹介してます。
MySQLでのvarchar型についてもっと深堀りしている方もいました。
連番を付ける - dumpファイルの修正時に知っておきたいこと②
- PostgreSQLではSEQUENCE/MariaDBではAUTO_INCREMENT
- と言いつつも、MariaDBでもSEQUENCEは使える(らしい)
- AUTO_INCREMENTは…
- 主キーかユニークキーが設定されたカラムにしか使えない
- データ型は整数か浮動小数点数。text型はNG
- 1つのテーブルに対して1つだけ指定できる(しなくてもいい)
PostgreSQLとMariaDBでは連番の付け方が異なる。
以下の記事では MySQL と PostgreSQL で連番の設定をするならそれぞれこんな感じになるよねということが書いてある(2012年の記事のため参考程度に)
ただ、MariaDB 10.0以降はSEQUENCEが使えるようになったらしく、PostgreSQLと同じような使い方ができるのかもしれない(未検証)
ちなみにPerconaだとシーケンスは使えない。
以下はそれぞれどんな感じで使うのか調べたもの。
一応、有償ソフトもある
いろいろリンクを貼ったが、有償ソフトを使って変換してしまう方法もある。
一例としてDBConvertというソフトがある。
これについてはeasyredmine(redmineの有償拡張パッケージ)の開発元がPostgreSQLからMySQLの移行に良いよ!と太鼓判を押している。
しかし値段が10万円を超えるため、個人で買うのは厳しいところ。