mysql
出典: wiki.nodoka.org
目次 |
MySQL-5.0.51のインストール
mecab, openssl, sennaが既にインストールされている前提。
全文索引にsenna、通信用にSSLが使えるように設定する。
cd /usr/local/src wget http://osdn.dl.sourceforge.jp/tritonn/31597/tritonn-1.0.10-mysql-5.0.51a.tar.gz tar xvzf tritonn-1.0.10-mysql-5.0.51a.tar.gz cd tritonn-1.0.10-mysql-5.0.51 export LD_LIBRARY_PATH=/usr/local/mecab/lib ./configure \ --prefix=/usr/local/mysql \ --with-charset=ujis \ --with-extra-charsets=all \ --with-senna=/usr/local/senna \ --with-mecab=/usr/local/mecab \ --enable-assembler \ --enable-local-infile \ --with-mysqld-user=mysql \ --with-pic \ --enable-thread-safe-client \ --with-ssl=/usr/local/openssl \ --with-readline make make install
設定ファイル作成
vi /usr/local/mysql/etc/my.cnf
[mysqld] default-character-set = ujis report-host = db1 server-id = 1 #log-bin #log-slave-updates #expire-logs-days = 3 log=sql.log log-warnings log-error log-slow-queries long-query-time = 1 #log-queries-not-using-indexes senna-log #skip-network #skip-slave-start skip-name-resolve skip-character-set-client-handshake wait-timeout = 100 max_connect_errors = 10000 max_connections = 200 thread_cache = 200 thread_concurrency = 8 table_cache = 400 key_buffer_size = 256M sort_buffer_size = 1M myisam_sort_buffer_size = 64K read_buffer_size = 1M [mysql] default-character-set = ujis [mysqldump] default-character-set = ujis |
データ作成
cd /usr/local/mysql mkdir data chown -R root:mysql . chown -R mysql data /usr/local/mysql/bin/mysql_install_db --user=mysql
起動停止試験
/usr/local/mysql/bin/mysqld_safe --user=mysql & /usr/local/mysql/bin/mysqladmin -u root shutdown
起動ファイル作成
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql chkconfig --add mysql chkconfig --list mysql service mysql start
TIPS
- パスワードの変更
set password for root@localhost=PASSWORD('PASSWORD');
- ログファイルに書き出す
mysql -uUSER -pPASS --tee=update.log
- データディクショナリの確認
use information_schema; SELECT * FROM tables WHERE table_schema='DATABASE';
- 変数の確認と変更
show global variables like '%timeout'; set global wait_timeout=100;
- 権限の付与
grant all on testdb.* to writer@localhost identified by 'XXXXXXXX'; grant all on testdb.* to writer@'192.168.0.%' identified by 'XXXXXXXX'; grant select on testdb.* to reader@localhost identified by 'YYYYYYYY'; grant select on testdb.* to reader@'192.168.0.%' identified by 'YYYYYYYY';
- SELECT INTO ... OUTFILEやLOAD DATA INFILEの権限付与
※GLOBAL PRIVILEGESなのでDB単位での権限付与は不可。
grant file on *.* to writer;
- バックアップとリストア
mysqldump -u root -p -A > mysql.dmp mysqldump -u root -p NEWDB > newdb.dmp mysql -u root -p NEWDB< newdb.dmp
- 特定のテーブルのみmysqldump
mysqldump -u root -t newdb newtable > newtable.dmp;
- create table文の確認
show create table newtable;
- エンジンの一覧
show plugins;
- binlogの削除
purge binary logs to 'mysql-bin.000006';
- slow.logの解析
処理時間順にソートする。
mysqldumpslow -s t mysqld-slow.log
実行回数順にソートする。
mysqldumpslow -s c mysqld-slow.log
- binlogの確認
binlogを頭から確認する。
mysqlbinlog /data/mysql/db1-bin.000093
binlogを特定ポジションから確認する。
mysqlbinlog --position=699128200 /data/mysql/db1-bin.000093
- レプリを1つ進める
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
SQL
- 日付加算
SELECT ADDDATE(NOW(),-30);
- 時間の差分を取得
SELECT TIMEDIFF(end_date,start_date) FROM test_data WHERE TIMEDIFF(end_date,start_date)>'00:05:00';
- UNIXTIMEへの変換
SELECT UNIX_TIMESTAMP('2010-07-07 16:00:00');
- UNIXTIMEからの変換
SELECT FROM_UNIXTIME(start) FROM test_data;
- 日付フォーマット
SELECT DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s');
- 変数の使用
set @target_id=10000; SELECT * FROM test WHERE id=@target_id;
- 行番号の付与
set @i=0; SELECT @i:=@i+1 row,id FROM test_data limit 100;
- idを1から振り直す
set @i=0; UPDATE test_data SET id=@i:=@i+1;
- 複数の索引を削除
ALTER TABLE test_data DROP INDEX ind1, DROP INDEX ind2, DROP INDEX ind3;
- ファイルへtsv出力
SELECT * FROM test_data INTO OUTFILE '/tmp/test.tsv';
- tsvファイルからデータロード
LOAD DATA INFILE '/tmp/test.tsv' INTO TABLE test_data;