Posts Tagged ‘mysql’

mysqlでテーブル名を指定し、かつgzip形式で圧縮バックアップする

データベースの一括バックアップは、当然ですがサーバの負荷も高くなるため、サーバリソースに余裕がある(あるいはデータベースが十分小さい)場合でないと躊躇してしまいます。少なくとも本番環境などではあまり現実的ではない選択肢なので、普段はmysqldumpコマンドで該当テーブルのみピンポイントでバックアップして不慮の事態に備えるようにしています。

# mysqldump -u [username] -p [password] -t [database] [table] | gzip > [filename].gz

パイプ使ってgzipに渡してあげれば、圧縮する手間も省けて便利。
ただ圧縮にはそれなりにCPUの負荷がかかりますので、ディスク容量に余裕があるなら無圧縮でダンプを吐き出すのもあり。

# mysqldump -u [username] -p [password] -t [database] [table] > [filename]

まあVMware Server とか ESXiとか使ってるのであれば、VMのスナップショット取っちゃうのが一番簡単なんですけどね。スナップショットのリストアが高負荷なのでアレですが、それに勝るお手軽さが魅力です。

 

文字化けしないmy.cnf設定 (MySQL5.0.x)

とりあえずウチのmy.cnfそのまま貼り付けてみます。手抜きとか言わない。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
default-character-set=utf8
skip-character-set-client-handshake

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

[mysql]
default-character-set=utf8

デフォルトの文字コードはUTF-8に統一。skip-character-set-client-handshakeを宣言してクライアントにも暗黙的にUTF-8を使わせる仕様。Centos5あたりで新しくMySQLサーバ立てるならこの設定で鉄板です。

ちなみにMySQL3.xから4.xにバージョンアップさせた場合、old_passwordsがデフォルトで0に設定されているので注意が必要です。Centos3.xのサーバにWordpress入れた時ここで見事にハマりました。 orz

 

MySQLで作成したデータベースが見えない

localhostにrootとしてログインして、Create Databaseして新規データベース(スキーマ)を作ってあげたのに他のユーザから見えない。あれ?

どうやら作成したDBに対する権限を割り当ててあげないといけないらしい。

(1) 権限割り当て
> GRANT ALL PRIVILEGES ON (作成したDB名).* TO [ユーザ名]@localhost IDENTIFIED BY ‘パスワード’ WITH GRANT OPTION;

(2) 権限の変更を反映させる
> flush privileges;

こんな感じ。上記(1)の例だとフルアクセス割り当てる事になるので、そこは空気を読んでください。ローカルホスト以外のPC/サーバから呼び出すなら[ユーザ名]後のlocalhost部分も変更ね。

以前こんな作業必要だった覚えはないのですが。ボケたか。ついにか。