memo.xight.org

日々のメモ

カテゴリ : MySQL

1ページ目 / 全2ページ

gzip な SQL を直接 mysql にインポートする

Summary

gunzip してからインポートするのは面倒臭い。
file.sql.gz をワンライナーでインポートしたい。

$ zcat /path/to/file.sql.gz | mysql -u 'username' -p your_database

Reference

Server Fault - mysql - How do I load a sql.gz file to my database? (importing)
http://serverfault.com/questions/137965/how-do-i-load-a-sql-gz-file-to-my-database-importing

homebrew で nginx + phpmyadmin

Install

brew install phpmyadmin

/usr/local/etc/nginx/sites-available/phpmyadmin.localhost

server {
	listen       8000;
	server_name  phpmyadmin.localhost;

	root  /usr/local/share/phpmyadmin;
	index index.php;

	access_log /usr/local/var/log/nginx/phpmyadmin.localhost/access_log;
	error_log  /usr/local/var/log/nginx/phpmyadmin.localhost/error_log;

	location ~ \.php$ {
		fastcgi_pass   127.0.0.1:9000;
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include        fastcgi_params;
	}
}

パスワード無しでログインしたい場合

cd /usr/local/share/phpmyadmin
cp config.sample.inc.php config.inc.php

/usr/local/share/phpmyadmin/config.inc.php

$cfg['Servers'][$i]['AllowNoPassword'] = true;

MySQL5.1からMySQL5.5への移行

Summary

MySQL5.1からMySQL5.5へ移行する手順。

/etc/mysql/my.cnf

mysqldセクションの
default-character-set の名前が character-set-serverに変更。
language が lc-messages-dir でローカライズ用のディレクトリを指定するように変更。

[mysqld]
#default-character-set=utf8
character-set-server=utf8

#language   = /usr/share/mysql/english
lc-messages-dir = /usr/share/mysql

# ignore_builtin_innodb
# plugin-load=innodb=ha_innodb_plugin.so

DBのupdate

[ERROR] Native table 'performance_schema'. ... といったエラーが出ていたら、
mysql_upgrade で解決する。

% sudo mysql_upgrade -uroot -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
This installation of MySQL is already upgraded to 5.5.17, use --force if you still need to run mysql_upgrade

MyISAM から InnoDB への移行

/etc/mysql/my.cnf

# InnoDB plugin enable
ignore_builtin_innodb
plugin-load=innodb=ha_innodb_plugin.so

default_storage_engine = InnoDB
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

MySQLの再起動

/etc/init.d/mysql restart

InnoDBが有効になっているか確認

mysql> SHOW VARIABLES LIKE 'innodb%';
| innodb_file_format        | Barracuda     |
| innodb_file_format_check  | ON            |
| innodb_file_format_max    | Barracuda     |
| innodb_file_per_table     | ON            |
| innodb_flush_method       | O_DIRECT      |

ALTER TABLE の実行

ALTER TABLE tablename ENGINE InnoDB ROW_FORMAT=Compressed;

MySQLでデータベースの最適化

Summary

mysql版 postgresql のバキューム (vacuum)のようなコマンド。

% mysqlcheck -A -o -u root -p


myisamchkはこのサーバが作動していない時に使用しなければいけません。
mysqlcheckを使用することの利点は、テーブルのチェックや修復時にサーバを停止させなくてすむことです。


Reference

MySQL :: MySQL 5.1 リファレンスマニュアル :: 7.11 mysqlcheck ? テーブル メンテナンスと修復プログラム
http://dev.mysql.com/doc/refman/5.1/ja/mysqlcheck.html

variable.jp - mysqlcheck
http://variable.jp/?tag=mysqlcheck

MySQLのデータベースのバックアップ方法

Summary

MySQLのデータベースのバックアップ方法についての備忘録

DBを停止してよい場合 (ファイルのコピー)

# /etc/init.d/mysqld stop
# cp -r /var/lib/mysql /path/to/backup/mysql-backup
# /etc/init.d/mysqld start


DBを停止したくない場合 (オンラインバックアップ)

mysqlhotcopy, mysqlsnapshot, mysqldump などを利用する。

mysqlhotcopy

ISAMテーブルやMyISAMテーブルをそのままの形でオンラインバックアップするPerlスクリプト

# mysqlhotcopy -u user -p password dbname /path/to/backup


mysqlsnapshot

サーバ上のすべてのISAMテーブルまたはMyISAMテーブルを、
データベースごとに1つのtarファイルにまとめてバックアップ

mysqlsnapshot -u user -p password -s /path/to/backup --split -n


mysqldump

指定されたデータベースおよびテーブルのSQLを生成する。

mysqldump -u user -ppassword -x dbname | gzip > /path/to/mysql.dump.gz


すべてのデータベースおよびテーブルのSQLを生成する。

mysqldump -u user -ppassword -x --all-databases | gzip > /path/to/mysql.dump.gz


Reference

MySQLデータのバックアップ方法 - SourceForge.JP Magazine
http://sourceforge.jp/magazine/07/05/31/0155233

mysqlでテーブル名やカラム名を補完する方法

Summary

mysqlコマンドを--auto-rehashオプションをつけて起動する

% mysql --auto-rehash


my.cnfの[mysql]セクションにauto-rehashと書いておく

[mysql]
auto-rehash

Reference

mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法 - (ひ)メモ
http://d.hatena.ne.jp/hirose31/20080122/1200974354

MySQLの高速化 Tips

Summary

my.cnf

[client]
# セキュリティ面から変更すべき
port = 3306

[mysqld]
# インデックスをバッファに保存する際のメモリサイズ
# MyISAMならOSキャッシュも使用するため,全メモリの30-40%を当てると良い.
key_buffer = 256M

# InnoDBはOSキャッシュを使用しないため,全メモリの70-80%を当てると良い.
innodb_buffer_pool_size =512M 

# データのキャッシュサイズ.I/Oを減らす.
# 数百のテーブルであれば,1024が良いらしい.
table_cache = 256

# スレッドの作成,削除は負荷が大きい.
# Threads_Createdの動きを見ながら変更.
thread_cache = 16

# あまり効果は無いらしい.
#innodb_additional_pool_size = 20M

# ログファイルのサイズ.
# 増やすとパフォーマンスが良くなるが,復旧に時間がかかる.
# 64-512M程度まで.
innodb_log_file_size = 64M

# ログのバッファサイズ
# 8-16Mまで.
innodb_log_buffer_size = 8M

# flush logをディスク,メモリに記録するか,記録しないかを設定する.
# 必ずメモリに記録するよう設定すること.
# 0 : flush log を記録しない.
# 1 : flush log をディスクに記録する.
# 2 : flush log をメモリに記録する.
innodb_flush_logs_at_trx_commit = 2

# 入力データ保持のための最大バッファサイズ
# 大きいファイルを扱う際に必須.
max_allowed_packet = 1M

# ORDER BYやGROUP BYのクエリ速度を上げる.
# メモリが多くない限り増やしても意味ないらしい.
sort_buffer = 1M

# インデックスを使わない際のクエリ速度向上
record_buffer  1M

# この秒数を超えるとslowクエリと認識される
long_query_time = 1

# join用バッファ
join_buffer = 131072

# クエリのキャッシュ量.
# 増やしすぎると更新が反映されない場合がある
# 32M-512Mくらいが良い.
query_cache = 32M

Reference

TechKnowledge - mysql を高速化したいときに読むメモ
http://tech.media-index.jp/2006/11/mysql_1.html

@IT - Linux Square - MySQLの高度な管理とチューニングテクニック(1/2)
http://www.atmarkit.co.jp/flinux/rensai/mysql11/mysql11a.html

All About - データベース - MySQLのチューニング
http://allabout.co.jp/internet/database/closeup/CU20040722A/

MySQL Performance Blog - What to tune in MySQL Server after installation
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/

phpMyEdit - データベースのメンテナンス画面を生成

Summary

phpMyEditSetup.phpにアクセスしウィザード形式で進んでいくと,
最終的に指定したテーブルの操作用ライブラリが出来上がる.

Reference

phpMyEdit: Instant MySQL Table Editor and PHP Code Generator
http://www.phpmyedit.org/

via

phpspot開発日誌 - 2005-11-07 - phpMyEdit: DB操作コード自動生成
http://phpspot.org/blog/archives/2005/11/phpmyedit_welco.html

MOONGIFT - phpMyEdit - データベースのメンテナンス画面を生成
http://oss.moongift.jp/intro/i-2816.html

MOONGIFT - phpMyEdit レビュー
http://oss.moongift.jp/review/i-2817.html

ZMR for MySQL (Zmanda Recovery Manager for MySQL) - MySQLのバックアップを自動化

Reference

Download ZRM for MySQL and Amanda Network Backup
http://www.zmanda.com/downloads.html

Zmanda, Inc. - Press Release - 2006-09-22
http://www.zmanda.com/press-release-zrm-mysql.html

AMANDA, The Advanced Maryland Automatic Network Disk Archiver
http://www.amanda.org/

via

MOONGIFT - Zmanda Recovery Manager for MySQL - MySQLのバックアップを自動化
http://oss.moongift.jp/intro/i-2642.html

MOONGIFT - Zmanda Recovery Manager for MySQL レビュー
http://oss.moongift.jp/review/i-2643.html

IMPRESS Enterprise Watch - 米Zmanda、オープンソースのMySQL用バックアップソフトをリリース
http://enterprise.watch.impress.co.jp/cda/foreign/2006/09/28/8729.html

mysqldump2email - MySQLのダンプファイルをzipアーカイブしてメール送信

Summary

以下のモジュールが必要
MIME::Lite
DateTime
YAML

Usage

% mysqldump2email --conf /path/to/config.yaml


config.yaml sample

mysqldump:
  command: /usr/bin/mysqldump
  username: your-mysql-username
  password: your-mysql-password
  #host: localhost

zip:
  command: /usr/bin/zip
  # if encryption needed
  #password: your-zip-password

mail:
  from: user@example.com
  to:   user@example.com
  route:
    via:  smtp
    host: localhost:25
  #route:
  #  via:  sendmail

gspace:
  enable: 0
  directory: /

tmpdir: /tmp
#time_zone: Asia/Tokyo


Reference

Ogawa::Memoranda - 2006-07-24 - mysqldump2email公開
http://as-is.net/blog/archives/001149.html

via

オレンジニュース - 2006-07-28
http://secure.ddo.jp/~kaku/tdiary/20060728.html#p04

mysqlreport - MySQL のステータスを表示

Sample

$ ./mysqlreport --user dbuser --password dbpasswd
MySQL 4.0.24_Debian-10s  uptime 30 2:35:55      Thu Jul  6 20:08:32 2006

__ Key _________________________________________________________________
Buffer usage  644.00k of  16.00M  %Used:   3.93
Write ratio      0.31
Read ratio       0.00

__ Questions ___________________________________________________________
Total         424.72k    0.16/s
Slow                1    0.00/s  %Total:   0.00  %DMS:   0.00
DMS            79.04k    0.03/s           18.61

__ Table Locks _________________________________________________________
Waited              0    0.00/s  %Total:   0.00
Immediate      85.09k    0.03/s

__ Tables ______________________________________________________________
Open              183 of  256    %Cache:  71.48
Opened            930    0.00/s

__ Connections _________________________________________________________
Max used            6 of  100      %Max:   6.00
Total           4.12k    0.00/s

__ Created Temp ________________________________________________________
Disk table        519    0.00/s
Table             692    0.00/s
File                3    0.00/s

詳細な表示

% ./mysqlreport --user dbuser --password dbpasswd --all
MySQL 4.0.24_Debian-10s  uptime 30 2:40:16      Thu Jul  6 20:12:53 2006

__ Key _________________________________________________________________
Buffer usage  644.00k of  16.00M  %Used:   3.93
Write ratio      0.31
Read ratio       0.00

__ Questions ___________________________________________________________
Total         424.73k    0.16/s
  QC Hits     322.68k    0.12/s  %Total:  75.97
  DMS          79.04k    0.03/s           18.61
  Com_         19.02k    0.01/s            4.48
  COM_QUIT      4.01k    0.00/s            0.95
  -Unknown         23    0.00/s            0.01
Slow                1    0.00/s            0.00  %DMS:   0.00
DMS            79.04k    0.03/s           18.61
  SELECT       71.11k    0.03/s           16.74         89.97
  UPDATE        4.18k    0.00/s            0.98          5.28
  INSERT        2.67k    0.00/s            0.63          3.38
  DELETE        1.08k    0.00/s            0.25          1.37
  REPLACE           0    0.00/s            0.00          0.00
Com_           19.02k    0.01/s            4.48
  change_db    15.55k    0.01/s            3.66
  set_option    1.99k    0.00/s            0.47
  create_tabl     377    0.00/s            0.09

__ SELECT and Sort _____________________________________________________
Scan            2.55k    0.00/s %SELECT:   3.59
Range           1.32k    0.00/s            1.85
Full join          18    0.00/s            0.03
Range check         0    0.00/s            0.00
Full rng join       0    0.00/s            0.00
Sort scan       1.12k    0.00/s
Sort range      6.03k    0.00/s
Sort mrg pass       0    0.00/s

__ Query Cache _________________________________________________________
Memory usage    2.37M of  16.00M  %Used:  14.80
Block Fragmnt  20.60%
Hits          322.68k    0.12/s
Inserts        70.73k    0.03/s
Prunes              1    0.00/s
Insrt:Prune  70.73k:1    0.03/s
Hit:Insert     4.56:1

__ Table Locks _________________________________________________________
Waited              0    0.00/s  %Total:   0.00
Immediate      85.09k    0.03/s

__ Tables ______________________________________________________________
Open              183 of  256    %Cache:  71.48
Opened            930    0.00/s

__ Connections _________________________________________________________
Max used            6 of  100      %Max:   6.00
Total           4.12k    0.00/s

__ Created Temp ________________________________________________________
Disk table        519    0.00/s
Table             692    0.00/s
File                3    0.00/s

Reference

mysqlreport :: Make easy-to-read MySQL status reports
http://hackmysql.com/mysqlreport

PHPにmysql.soをコンパイルして追加

Summary

# rpm -ivh php-5.0.4-10.src.rpm
# cp /usr/src/redhat/SOURCES/php-5.0.4.tar.gz .
# tar xzvf php-5.0.4.tar.gz
# cd php-5.0.4
# ./configure --with-mysql=shared
# make build-modules
# cp modules/mysql.so /usr/lib/php/modules/

# cp mysql.ini /etc/php.d/

Reference

XooNIps Official Site - B-Wiki - fedoracore4
http://xoonips.sourceforge.jp/modules/bwiki/?fedoracore4