Vagrant + MySQL データは外に置きたい

Filed in Linux | MySQL | MySQL | Vagrant Leave a comment

Windowsで使っています。
VagrantのVM上にデータまで置いちまうと何かと不便なので、vagrant氏が勝手に作ってくれる/vagrantディレクトリを通して、ホストOS上にmysqlのdatadirを持ってきちゃおうと思いました。

まずmysql停止。

んでmy.cnfを編集

[mysqld]
#datadir=/var/lib/mysql
#↓こうしてみました
datadir=/vagrant/MYSQL_DATA_DIR
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

んで、
/var/lib/mysql/mysql
にあるファイルをまるっと
/vagrant/MYSQL_DATA_DIR
にコピー。
#実際のとこ/var/lib/mysql/mysqlの中身だけ移し替えてもだめで、他にも必要ぽかった。
#あたしのばあいは空っぽから始めても差し支えなかったので、まるっと作りなおしちゃった。移行するケースの場合はいろいろ考えてあげないとだめぽ。

こう書き換えて、mysqlをスタート。ハイ失敗。まあそうだろうと思っていた。
/vagrantにあるファイルは所有者がユーザvagrantになっちゃうので、ユーザmysqlでは見られない。
あくまでローカルの開発環境の話なので、さしあたり動けばいい。

usermod -G vagrant mysql

というわけでvagrantグループにmysql氏を追加して、再度mysqldのスタート。
OKでーす。ありがとうございましたー。
あれ、

user=mysql

こいつをvagrantユーザにしても良かったのではないか。どっちも違和感あるけどどっちがマシかな。

/var/lib/mysqlに、ibdata1とかいう巨大なファイルがある。

innodb_file_per_tableを有効にしていると、テーブルのデータはそれぞれのテーブルスペースに格納される。しかし共有テーブルスペースには次のようなInnoDBの内部データが格納されている。
データディクショナリ(InnoDBテーブルのメタデータ)
チェンジバッファ
ダブルライトバッファ
UNDOログ

引用元:MySQL ibdata1が肥大化する理由(記事の意訳) | Ore no homepage

へー。知りませんでした。ほっとくとおっかないなあ。こっちはVM上にあるから、知らないうちに圧迫して死ぬとかありそう。

MySQL – 肥大化したibdata1を縮小する – Qiita

, ,

ERROR 1030 (HY000): Got error 28 from storage engine

Filed in Database | MySQL Leave a comment

disk fullの時にクエリ動かす余裕もねえよとMySQLサーバさんが仰る。
ははあ。

du -k / | sort -n | tail -20

重たいファイル消して再確認。

#自分のサーバじゃないよ(´・ω・`)

/etc/mysql/my.cnf

Filed in MySQL Leave a comment

覚えないと死ぬようなことでもない限り覚えないわたくしは、当然mysqlの設定やcreate文の書き方なんて毎回ググってるわけです。
そんなしょっちゅうDBの設定なんてしてたまるか。

覚書。
題名のとこに定義ファイルがあるので、以下を追記。

[client]
default-character-set = utf8

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

latin1とか出てきてうあーってなるからなー。あぶないよなー。
restartを忘れてうあーってなるのも気をつけたい。

MySQLでテーブルの複製をしたい

Filed in MySQL Leave a comment

MySQL テーブルの複製(コピー)を作成する
役に立った記事。likeってそこでの用途もあるのか―と驚きました。
テーブルのコピーあんまやった記憶なかった。

ブログのテーマを試してCSS調整ようという時、じっさいに投稿済のpostでテストしたかったと。
そんなんで久しぶりにクエリを叩く羽目になりましたまる

TOP