Linux
MySQL

1台のサーバに複数のまたは旧いmysqlを入れたい場合の選択肢の備忘録

備忘録です。
以下のような選択肢がある気がします。

・工夫して複数いれる1(パッケージとソースと入れてわけて設定)
http://bokuibi.blogspot.jp/2012/04/mysql-for.html
もしくは両方ソースから場所変えて入れるなど

ちなみに旧いパッケージが転がっていてもOS的にサポート終わってて準備が不可能だったりすると準備可能なOSにソースアーカイブからmakeして入れないといけなかったりします。

・工夫して複数いれる2(kamipoさん作のmysqlbuild)
http://blog.kamipo.net/entry/20111208/1323356185
https://github.com/kamipo/mysql-build
昔勉強会でエゴサーチしてると言ってたのでエラーでたらブログかいたり呟いたりすると本人が登場してくれそう
5.0いれてみたけどncurses-develというパッケージを入れないとビルド時にエラーでました。
http://d.hatena.ne.jp/rx7/20081031/p3
(ちゃんと入りましたので移行とバージョンアップ検証に手軽でいいですね。ありがとうございます。)

・mysqlsandboxで頑張ってみる(mysqlの中の人のnippondanjiさんより試験環境としておすすめ)
http://mysqlsandbox.net/
http://nippondanji.blogspot.jp/2010/07/mysql.html

・mysqld_multiで頑張る
http://sawara.me/mysql/1398/
パッケージで入れてるやつ同じバージョン(違うバージョンは無理)でポートとデータディレクトリと起動スクリプトほかを設定ファイルでセクション区切ってパラメータ変えてつかうやつですね。

・virtualboxとvagrantで頑張る
ローカルPCでテスト用でVM2つ入れるやつですね。
https://qiita.com/keita_watari/items/54833f7ccb05fbc4a18f

・コンテナで頑張る
最近だとdocker入れればコンテナからホストへのポートフォワーディングのポートを変えればいけそう。
ただし公式サポートはEOL迎えてないバージョンだけみたいですね。
個人的な注意点はデータディレクトリのvolumeはホストにマウントしないとコンテナ消すと消えるけどそのマウントポイントはNFSやCIFS的な共有ストレージは無理な挙動だったこととbinlog_format=ROWだとバイナリログの肥大化が早めでディスクフルでコンテナが止まることなどです。あとコンテナは普通のパッケージで入れるのとだいぶ勝手が違うので慣れてないとバージョンアップ用のクラスタ別に立てずにそのまま上げて詰んだりしそうです。コンテナは基本BGデプロイ(新旧挿げ替える運用)っぽいです。
https://hub.docker.com/_/mysql/

まあこんなかんじで。
ホスト1台にMySQLサーバ同居さすのには、
メモリの食い合いやCPUリソースの食い合いや
ポートとデータディレクトリとログと起動スクリプトとプロンプトなど色々な位置を変えたり
気にするところは多いのでもし万が一縮退する先もサービス利用するのは結構手間暇かかるかと。