記事:
SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM performance_schema.events_stages_current;
例:
CSVPATH="./zabbix-files"; util.exportTable("history_old", CSVPATH + "/history.csv", { dialect: "csv" }); util.importTable(CSVPATH + "/history.csv", {"dialect": "csv", "table": "history" });
SELECT @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 ROW IN SET (0.00 sec)
他にもたくさんのツールが入っている:
注記 それぞれの MySQL Server は、サーバー独自のバイナリロギング形式のみを設定できます (binlog_format がグローバルスコープまたはセッションスコープのいずれで設定される場合にも当てはまります)。これは、レプリケーションマスターのロギング形式を変更しても、スレーブがそのロギング形式を一致するように変更するわけではないことを意味しています。(STATEMENT モードを使用中の場合、binlog_format システム変数はレプリケーションされず、MIXED または ROW ロギングモードを使用中の場合、レプリケーションされますが、スレーブによって無視されます。)レプリケーションの進行中にマスター上のバイナリロギング形式を変更したり、スレーブ上でそれを変更しなかったりすると、予期しない結果を招いたり、レプリケーションの失敗を招くことがあります。
mysql --help | grep my.cnf ... /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
mysql -ureadonly -h localhost -e "show global variables like 'ssl_%'\G;"
MySQL client 5.6以降で使用可能。
mysql_config_editor set --login-path=local --host=localhost --user=root --password Enter password: *** # remote用 mysql_config_editor set --login-path=remote --host=remote.example.com --user=remoteuser --password Enter password: *** # ~/.mylogin.cnf が出来る
mysql --login-path=local
mysql_config_editor print --all [client] [local] user = root password = ***** host = localhost [remote] user = remoteuser password = ***** host = remote.example.com
# 一部削除 mysql_config_editor remove --login-path=remote # すべて削除 mysql_config_editor reset
SQLから値や、改行等を除いて正規化する。
SQLをtd-agentで集めたり、ログとして残したいが、値はマスクしたい等にも使える。
sudo yum install https://www.percona.com/downloads/percona-toolkit/2.2.20/RPM/percona-toolkit-2.2.20-1.noarch.rpm
echo "SELECT name, password FROM user WHERE id='abc12823' and password='k#eyAW37';" | pt-fingerprint select name, password from user where id=? and password=?
innodb_file_per_table=1の時、DELETEでデータ削除後に「OPTIMIZE TABLE」実行でOS上のディスクサイズを小さくできる。
5.6.17 より前はALTER TABLEと同様にテーブルロックがかかる。
5.6.17以後はオンライン DDLが有効で処理前後に短いロックがあるだけと書いてあるが、細かい制限も多いので注意。
slow queryのテスト等で使える
mysql> SELECT sleep(5); +----------+ | sleep(5) | +----------+ | 0 | +----------+ 1 ROW IN SET (5.01 sec)
mysql -u readonly -p -h localhost information_schema mysql> select table_schema, table_name, engine from tables where engine = 'MyISAM'; +--------------------+---------------------------+--------+ | table_schema | table_name | engine | +--------------------+---------------------------+--------+ | information_schema | COLUMNS | MyISAM | | information_schema | EVENTS | MyISAM | ...
sudo yum update mysql-libs postfix
sudo yum install compat-mysql51
スロークエリのログは数が多すぎて見難い。平均クエリー時間でソートしたり、件数をまとめてくれるコマンドがある。
分析後のファイルはvalueの値も隠してくれる。
mysqldumpslow -s t mysql-slow.log > mysql-slow.analytics.log
zcat mysql-slow.zip | mysqldumpslow -s t - > mysql-slow.analytics.log
/.my.cnf : ユーザー固有のオプションの指定
[client] user = user01 password = ***** [mysqldump] user = root password = *****
service mysqld stop service mysqld startsos
--skip-grant-tables --skip-networking
mysql> select * from user limit 1\G *************************** 1. row *************************** id: 1 name: xMlc9XNzqu age: 249 description: MGSaPuSA3dtPUS7o77FaO1XN9UPNwxBEQAEKpeEJfVOspqtKgU created_at: 2013-07-05 13:14:12 1 row in set (0.00 sec)
mysql> pager less -i -S +----+------------+------+----------------------------------------------------+---------------------+ | id | name | age | description | created_at | +----+------------+------+----------------------------------------------------+---------------------+ | 1 | xMlc9XNzqu | 249 | MGSaPuSA3dtPUS7o77FaO1XN9UPNwxBEQAEKpeEJfVOspqtKgU | 2013-07-05 13:14:12 | +----+------------+------+----------------------------------------------------+---------------------+ # 元に戻す mysql> nopager # コマンドラインから指定する場合 mysql test --pager='less -i -S'
mysql> tee output.log # 停止 mysql> notee
mysql> system date '+%Y-%m-%d' 2013-08-01
nohup ./mysql-insert-test.sh mysql-host user password 3600 1>result.csv 2>result.error.log & tail -f result.csv datetime,function,is_up,is_down,down time(sec) 2016-11-24T16:42:45+0900,tearDown 2016-11-24T16:42:45+0900,setUp 2016-11-24T16:46:33+0900,write_loop,0,1,1 2016-11-24T16:46:34+0900,write_loop,0,1,2 ...
[mysqld] ... character-set-server=utf8 default-storage-engine=InnoDB innodb_log_file_size=128M innodb_data_file_path=ibdata1:1G innodb_file_per_table=1 innodb_file_format=Barracuda innodb_stats_on_metadata=0
mysql -u root -p test CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) DEFAULT NULL, age int(11) DEFAULT NULL, description text, created_at datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; ll /var/lib/mysql/test/ ... -rw-rw---- 1 mysql mysql 8700 7月 5 12:40 2013 user.frm -rw-rw---- 1 mysql mysql 98304 7月 5 12:40 2013 user.ibd mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 0
mysql -u root -p -D test -e "load data local infile 'dummy.csv' into table user fields terminated by ',';" ll /var/lib/mysql/test/ ... -rw-rw---- 1 mysql mysql 8700 7月 5 12:40 2013 user.frm -rw-rw---- 1 mysql mysql 29360128 7月 5 12:45 2013 user.ibd mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 4194304
mysql -u root -p test -e "delete from user;" ll /var/lib/mysql/test/ ... -rw-rw---- 1 mysql mysql 8700 7月 5 12:40 2013 user.frm -rw-rw---- 1 mysql mysql 29360128 7月 5 12:45 2013 user.ibd mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 25165824
mysql -u root -p test -e "alter table user engine innodb;" ll /var/lib/mysql/test/ ... -rw-rw---- 1 mysql mysql 8700 7月 5 12:53 2013 user.frm -rw-rw---- 1 mysql mysql 98304 7月 5 12:53 2013 user.ibd mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 0
mysql -u root -p test CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) DEFAULT NULL, age int(11) DEFAULT NULL, description text, created_at datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; ll /var/lib/mysql/ ... -rw-rw---- 1 mysql mysql 18874368 7月 5 13:06 2013 ibdata1 mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 10485760
mysql -u root -p -D test -e "load data local infile 'dummy.csv' into table user fields terminated by ',';" ll /var/lib/mysql/ ... -rw-rw---- 1 mysql mysql 44040192 7月 5 14:23 2013 ibdata1 mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 13631488
mysql -u root -p test -e "delete from user;" ll /var/lib/mysql/ ... -rw-rw---- 1 mysql mysql 44040192 7月 5 14:31 2013 ibdata1 mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 27262976
mysql -u root -p test -e "alter table user engine innodb;" ll /var/lib/mysql/ ... -rw-rw---- 1 mysql mysql 44040192 7月 5 14:31 2013 ibdata1 mysql -u root -p test -e "show table status where name = 'user'\G" | grep Data_free Data_free: 27262976
root@localhost[test]> show table status \G *************************** 1. row *************************** Name: test Engine: InnoDB Version: 10 Row_format: Compact Rows: 5 Avg_row_length: 3276 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2013-01-01 15:00:00 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment:
mysql -u root -p mysql -BNe "select concat(User, '@',Host) as User from mysql.user;" root@127.0.0.1 root@::1 @localhost root@localhost
service mysqld stop service mysqld startsos echo "UPDATE mysql.user SET Password=PASSWORD('new password') WHERE User='root';FLUSH PRIVILEGES;" | mysql -u root -h localhost mysql service mysqld restart
service mysqld stop service mysqld startsos mysql -u root -h localhost mysql mysql> INSERT INTO `user` VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'',''); mysql> flush privileges; service mysqld restart
mysql -u root -p -h mysql.example.com mysql mysql> CREATE DATABASE `test_db` DEFAULT CHARACTER SET utf8; mysql> GRANT ALL PRIVILEGES ON `test_db`.* TO 'user1'@'%'; mysql> flush privileges;
絵文字等の4バイトUTF8を扱いたい場合、MySQL5.5以上で、"utf8mb4"を指定する。
DBの再構築が必要のため、ダンプ/インポート。
[mysqld] ... character-set-server=utf8mb4 [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb4 [mysqldump] default-character-set=utf8mb4
mysql -uroot mysql mysql> grant select on db1.* to 'user1'@'%' identified by 'password'; mysql> flush privileges; mysql -u user1 -p db1 ERROR 1045 (28000): Access denied for user 'user1'@'localhost' (using password: YES)
mysql -uroot mysql mysql> grant select on db1.* to 'user1'@'localhost' identified by 'password'; mysql> flush privileges;
mysqladmin ping -u username -p -h mysql.example.com Enter password: mysqld is alive
echo "" | mysql -A -u username -p -h mysql.example.com dbname Enter password: echo $?
大きな結果セット用のメモリが足りないことで問題が発生している場合、--quickオプションを使用してください。これにより、mysqlは全結果セットを取得、メモリ内でバッファ後表示といった一連の作業を一気にこなさず、サーバから1行ずつ結果を取得します。
update mysql.user set Grant_priv='Y' where user='root'; FLUSH PRIVILEGES;" | mysql -uroot -p mysql
# 1行目にヘッダ行、カラムは「"」で括ってあるcsvをインポートする mysql -u$db_user -p$db_password -h $db_host $db_database \ -e "LOAD DATA LOCAL INFILE 'hoge.csv' INTO TABLE hoge CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES;"
# test DB, table01だけをチェック mysqlcheck -c test table01 -u root -p # test DB丸ごとチェック mysqlcheck -c test -u root -p # 全てのDBをチェック mysqlcheck -c -u root -p --all-databases
tail -f /var/log/mysqld.log ---- 111215 21:57:03 [Note] Slave: received end packet from server, apparent master shutdown: 111215 21:57:03 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysqld-bin.000277' at position 106
vi /etc/my.cnf ---- server-id=3 ---- service mysqld restart
CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) DEFAULT NULL, age int(11) DEFAULT NULL, description text, created_at datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
time bash ./create_dummy.sh 100 > dummy.csv mysql -u root -p -D test -e "load data local infile 'dummy.csv' into table user fields terminated by ',';"
mysql -u root mysql
MYSQL_HOST=<mysql host> MYSQL_PASSWD=$(mkpasswd -l 16 -s 0) echo "GRANT SELECT, REPLICATION CLIENT, SHOW DATABASES, PROCESS ON *.* TO 'readonly'@'%' IDENTIFIED BY '$MYSQL_PASSWD';flush privileges;" | mysql -A -u root -p -h $MYSQL_HOST mysql mysqladmin status -u readonly -p -h $MYSQL_HOST
GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED BY ''; FLUSH privileges;
GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,DROP,file,ALTER,INDEX,CREATE ROUTINE,CREATE VIEW,LOCK TABLES ON *.* TO 'demo'@'%' IDENTIFIED BY ''; FLUSH privileges;
REVOKE ALL privileges ON * . * FROM demo; FLUSH privileges;
DELETE FROM mysql.user WHERE USER='demo'; FLUSH privileges;
cat >> update.sql << EOS REVOKE ALL PRIVILEGES ON * . * FROM demo; GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,DROP,file,ALTER,INDEX,CREATE routine,CREATE VIEW,lock tables ON *.* TO 'demo'@'%' IDENTIFIED BY ''; FLUSH privileges; EOS mysql -u root mysql < update.sql
./mysql-show-db-size.sh host user passwd > output.tsv
SELECT TABLE_NAME, engine, table_rows, avg_row_length, FLOOR((data_length+index_length)/1024/1024) AS all_MB, FLOOR((data_length)/1024/1024) AS data_MB, FLOOR((data_free)/1024/1024) AS data_free_MB, FLOOR((index_length)/1024/1024) AS index_MB FROM information_schema.tables WHERE table_schema=DATABASE() ORDER BY (data_length+index_length) DESC LIMIT 10;
SELECT table_schema, FLOOR(SUM(data_length+index_length) /1024 /1024) AS MB FROM information_schema.tables GROUP BY table_schema ORDER BY SUM(data_length+index_length) DESC;
InnoDBのテーブルスペース(/var/lib/mysql/ibdata1)が肥大し続ける。
※innodb_file_per_table追加して再起動後、innodb_file_per_tableを削除して再起動すると、データが全て消えるので注意
[mysqld] innodb_data_file_path=ibdata1:1G innodb_file_per_table
/var/lib/mysql/ibdata1 /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1
#master, slave上でmysqld停止 service mysqld stop # slave上でmasterからコピー rsync -avz -e "ssh -i db01.example.com.pem" db01.example.com:/var/lib/mysql/ /var/lib/mysql/
service mysqld restart mysql -e "show master status\G" ************ 1. row *************************** File: mysqld-bin.000238 Position: 106 Binlog_Do_DB: Binlog_Ignore_DB:
mysql mysql> CHANGE MASTER TO MASTER_HOST='db01.example.com', MASTER_USER='repl', MASTER_PASSWORD='', MASTER_PORT=3306, MASTER_LOG_FILE = 'mysqld-bin.000238', MASTER_LOG_POS = 106; mysql> slave start; mysql> show slave status\G レプリケーションが正常に可動しているか確認 Slave_IO_Running: Yes Slave_SQL_Running: Yes
mysql -u root mysql> show slave status\G mysql> Master_Log_File: mysqld-bin.000366
mysql -u root mysql> purge master logs to 'mysqld-bin.000365'; 日付で指定したい場合 mysql> purge master logs before '2011-01-01';
vi /etc/my.cnf ---- [mysqld] # バイナリログを自動削除する日数 expire_logs_days=7 ---- service mysqld restart
mysql mysql> set global expire_logs_days=14; mysql> show global variables like 'expire_logs_days';
vi /etc/my.cnf ---- [mysqld] # slow logの設定 slow_query_log=1 slow_query_log_file = /var/log/mysql-slow.log # 指定秒以上かかったクエリは上記ログファイルに出力 long_query_time = 3 # n行以上の行をテーブルから読み込んだクエリをスロークエリログに記録する(1000ならそれ未満のクエリは出力しない) #min_examined_row_limit=1000 # INDEXを使用しないクエリをスロー クエリ ログに記録 #log-queries-not-using-indexes # 管理用コマンドの実行が遅かった場合もログを出力 #log-slow-admin-statements ---- service mysqld restart
vi /etc/my.cnf ---- [mysqld] # slow logの設定 slow_query_log = /var/log/mysql-slow.log # 指定秒以上かかったクエリは上記ログファイルに出力 long_query_time = 3 # INDEXを使用しないクエリをスロー クエリ ログに記録 #log-queries-not-using-indexes # 管理用コマンドの実行が遅かった場合もログを出力 #log-slow-admin-statements ---- service mysqld restart
数万件のレコードがあるテーブルに大して、rand()を使うと非常に遅い。これを解決するには?
SELECT my_table.COLUMN1, my_table.COLUMN2 FROM ( SELECT my_table.ID FROM my_table ORDER BY RAND() LIMIT 0, 10 ) AS random WHERE my_table.ID = random.ID LIMIT 0, 10
yum install perl-DBI perl-DBD-MySQL perl-TermReadKey --enablerepo=rpmforge wget "http://downloads.sourceforge.net/project/innotop/innotop/1.6.0/innotop-1.6.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Finnotop%2Ffiles%2Finnotop%2F1.6.0%2Finnotop-1.6.0.tar.gz%2Fdownload%3Fuse_mirror%3Djaist&ts=1293523599&use_mirror=jaist" rpmbuild -tb --clean innotop-1.6.0.tar.gz rpm -ivh RPMS/noarch/innotop-1.6.0-0.noarch.rpm innotop -d 1 vi .innotop/innotop.ini ---- [connections] default=user=root have_user=root have_pass= dsn=DBI:mysql:database=:host=localhost:port=3306 savepass= dl_table= ----
mysql> CREATE TABLE item ( name text comment 'item name');
mysql> SHOW FULL COLUMNS FROM item; +-------+------+-----------------+------+-----+---------+-------+---------------------------------+-----------+ | FIELD | TYPE | Collation | NULL | KEY | DEFAULT | Extra | Privileges | Comment | +-------+------+-----------------+------+-----+---------+-------+---------------------------------+-----------+ | name | text | utf8_general_ci | YES | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | item name | +-------+------+-----------------+------+-----+---------+-------+---------------------------------+-----------+
mysqladmin variables | grep -e tmpdir -e datadir
vi /etc/my.cnf ---- tmpdir=/tmp/ ---- service mysqld restart
#log-bin skip_innodb_doublewrite innodb_flush_log_at_trx_commit=0
mysqldump -u [ユーザ名] -h [ホスト名] [DB名] | gzip > [DB名].gz # 全データベースをロックせずにバックアップ(MySQL5.1以降、--optはデフォルト) mysqldump --opt --all-databases --single-transaction --no-autocommit --flush-logs --hex-blob | gzip > mysql.`date +%Y%m%d`.gz # マスターの状態(binary log filename, log position)も保存する場合 mysqldump --opt --all-databases --single-transaction --no-autocommit --flush-logs --hex-blob --master-data=2 --order-by-primary | gzip > mysql.YYYYMMDD.gz
sudo renice -n 10 $(pgrep gzip)
zcat [DB名].gz | mysql -u [ユーザ名] -h [ホスト名] [DB名] # または zcat [DB名].gz | mysql -u [ユーザ名] -h [ホスト名] [DB名] # リストア後mysqldを再起動しないとユーザ情報が適切に読み込まれなかった service mysqld restart
mysqldump -uroot -pxxxxxxxx --opt --single-transaction --flush-logs --no-autocommit --master-data=2 --default-character-set=utf8 --hex-blob <database>
vi /etc/my.cnf ---- #log-bin skip_innodb_doublewrite innodb_flush_log_at_trx_commit=0 ---- service mysqld restart
mysql -u root -e "set sql_log_bin=0;SOURCE dump.sql;set sql_log_bin=1;"
vi /etc/my.cnf ---- log-bin #skip_innodb_doublewrite #innodb_flush_log_at_trx_commit=0 ---- service mysqld restart
mysql -uroot mysql mysql> SHOW VARIABLES LIKE 'max_connections'; mysql> SHOW global VARIABLES LIKE 'key_buffer_size';
mysql -uroot mysql mysql> SET global max_connections = 1000; mysql> SET global table_cache = 1024; mysql> SET global sort_buffer_size = 2097152; mysql> SET global query_cache_size = 33554432; mysql> SET global thread_cache_size = 500; mysql> SET wait_timeout = 3600; mysql> SET interactive_timeout = 3600; mysql> SET global key_buffer_size = 32*1024*1024;
mysql -uroot -e "show variables like 'innodb_log%'" +---------------------------+---------+ | Variable_name | Value | +---------------------------+---------+ | innodb_log_arch_dir | | | innodb_log_archive | OFF | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | +---------------------------+---------+
通常の手段 service mysqld stop プロセスリストの表示 mysqladmin processlist 該当プロセスを停止 mysqladmin kill プロセスID1,プロセスID2,プロセスID3 -u root -p 停止を試みる service mysqld stop それでも止まらない(最終手段) ps aux | grep mysql kill -9 mysqldのプロセスid
# $F[1] : ID # $F[3] : User # $F[5] : Host # $F[7] : DB # $F[9] : Command # $F[11] : Time mysql_user=hoge mysql_pw=hogehoge mysql_host=localhost mysqladmin processlist -u $mysql_user -p$mysql_pw -h $mysql_host | perl -ane 'if($F[1]!="" && $F[7]=="example" && $F[9]=="Sleep"){printf "$F[1]\n";}' | xargs -i mysqladmin kill {} -u $mysql_user -p$mysql_pw -h $mysql_host
yum install mysql-server mysql-devel service mysqld start cd /usr/local/src wget -O mysqlbench-0.1.tgz "http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&refer=Contrib&openfile=mysqlbench-0.1.tgz" tar xvfz mysqlbench-0.1.tgz cd mysqlbench-0.1 make mysqladmin create mysqlbench ./mysqlbench -i -U root mysqlbench 100クライアント(-c)が100トランザクション(-t)を実行した場合のベンチマーク ./mysqlbench -U root -E innodb -c 100 -t 100 mysqlbench mysqladmin drop mysqlbench
vi Makefile ---- MYSQL_LFLAGS= -L/lib -L/usr/lib64/mysql --- flush privileges; mysql -u user1 -p db1 ERROR 1045 (28000): Access denied for user 'user1'@'localhost' (using password: YES)
mysql -uroot mysql
mysql-
記事:
create table item ( id INT UNSIGNED AUTO_INCREMENT NOT NULL , name CHAR(30) NOT NULL, normalprice int default 0, saleprice int default 0, PRIMARY KEY(id) ); insert into item (name, normalprice, saleprice) values ('item1', 100, 100); insert into item (name, normalprice, saleprice) values ('item2', 200, 10); insert into item (name, normalprice, saleprice) values ('item3', 300, 5); select item.*, tmp.price from item , ( select id, if (saleprice < normalprice, saleprice, normalprice) as price from item ) tmp where item.id = tmp.id order by tmp.price ---- +----+-------+-------------+-----------+-------+ | id | name | normalprice | saleprice | price | +----+-------+-------------+-----------+-------+ | 3 | item3 | 300 | 5 | 5 | | 2 | item2 | 200 | 10 | 10 | | 1 | item1 | 100 | 100 | 100 | +----+-------+-------------+-----------+-------+ 3 rows in set (0.00 sec)
常に低速の DNS と多数のホストがある場合は、--skip-name-resolve で DNS ルックアップを無効化するか、HOST_CACHE_SIZE の定義(デフォルト値: 128)を拡張し、mysqld を再コンパイルすることで、パフォーマンスを改善できます。
クエリーを投げる前に、設定してやると良い。
SET CHARACTER SET SJIS
デフォルトでは、mysqldump実行中はテーブルにロックがかかってしまいます。 mysqldump中はDB操作が一切できない状態になります。(テーブル単位ではなく DB全体)ので注意が必要。
[mysqldump] lock-tables=false create table item ( name text comment 'item name');