all

MySQLのオーバーヘッドの確認、最適化手順

MySQL 説明 [#g4f6bb11] MySQLでMyISAMを使用している場合に、INSERT,UPDATE,DELETEをしていると、オーバーヘッドに出くわし、パフォーマンスが落ちてきます。 その確認方法と、最適化方法です。 手順:オーバーヘッド(フラグメンテーション)の確認と最適化 [#a4a394ae] mysql> show table status \G; *************************** 100. row *************************** Name: dtb_domain Data_free: 9328 mysql> optimize table tdtb_domain; +—————————+———-+———-+———-+ | Table | Op | Msg_type | Msg_text | +—————————+———-+———-+———-+ | testdatabase.dtb_domain | optimize | status | OK | +—————————+———-+———-+———-+ 1 row in set (0.16 sec) mysql> show table status \G; *************************** 100. row *************************** Name: dtb_domain Data_free: 0 これらはphpMyAdminでも確認、最適化可能なようです。
One minute to read

MySQLのスレーブでカウンターをスキップ

MySQL 説明 [#r44a3f7a] なにかしらの理由でカウンターをスキップさせなければいけない時のSQLです。 SQL [#d2d1608f] mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; mysql> START SLAVE; mysql> show slave status \G; Seconds_Behind_Master: バイナリログ確認 [#ff25e375] # mysqlbinlog /var/lib/mysql/db.000352 > /tmp/mysql-bin.log.date +%Y%m%d
One minute to read

MySQLのデフォルトの文字コードを指定

MySQL mysqlではデフォルトの文字コードが「latin1」に設定されています。 「latin1」の場合、日本語が文字化けして表示されてしまうため、下記設定変更を行うことで、文字化けしないようにすることが可能です。 デフォルトで設定される文字コードを確認 [#ee30b4c5] mysql>status 設定変更 [#y88e5871] # vi /etc/my.cnf [client] default-character-set=utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 DB作成時に文字コードを指定する [#m152321c] mysql> CREATE DATABASE データベース名 CHARACTER SET utf8; DB作成後に文字コードを変更する手順 [#f6a6dab5] mysql> CREATE DATABASE データベース名; mysql> ALTER DATABASE データベース名 DEFAULT CHARACTER SET=utf8; DBの文字コードを確認 [#v2b83be2] mysql> show create database データベース名;
One minute to read

MySQLのバックアップとリストア(復元)方法

MySQL 全データベースのバックアップ/リストア(復元) [#k3db8da0] MySQLのデータをバックアップするには下記コマンドを入力します。

mysqldump -u root -p -x –all-databases > dump.sql これで全部のデータベースがバックアップ可能です。 -xで全テーブルをロックします。 テーブルをロックしない場合は–single-transactionをオプションで指定します。 –all-databases でも-Aでも同じ意味です。 データベースのバックアップをリストア(復元)する [#ueb4e0eb] # mysql -u root -p < dump.sql 特定のデータベースのみのバックアップ [#xb78595b] # mysqldump -u root データベース名 > dump.sql 特定データベースのみのリストア(復元) [#d65a961f] # mysql -u root データベース名 < dump.sql 特定のデータベースのみのバックアップをリストア(復元)する [#nb985511] # mysql -u root -p リストア先のDB名 < バックアップしたSQLデータ dump時に-BつけるとCREATE DB文が発行されるので付けないほうが良い。 別名ではall-databasesで取得したdumpファイルからはリストアできないので注意。 allで取得したファイルからリストアさせたい場合は、dumpファイルのCREATEを書き換える必要があります。 mysqldump –all-databasesで全データベースを取得している場合 [#vb30a5d1] # mysql -u root -p –one-database DB名 < バックアップしたSQLデータ http://nippondanji.

2 minutes to read

MySQLのパラメータ一覧

MySQL 一覧 [#c1f01817] query_cache_size(8M) [#xf0ea6b2] MySQLクライアントからのクエリとその実行結果をキャッシュし、次回から同じ内容のクエリが要求された場合にキャッシュから応答します。そのキャッシュの容量。 thread_cache_size(4) [#od95e53e] MySQLは接続終了後のサーバスレッドをいきなり解放せず、次の接続時に再利用できるようにキャッシュできます (切断後の再接続時のオーバーヘッドを軽減できる)。そのデータ容量。 query_cache_limit(8M) [#tc8496eb] キャッシュするクエリ結果の最大値の指定です。 tmp_table_size、max_heap_table_size(8M) [#za0b6303] メモリ上に一時テーブルを作ります。このサイズを超えるとディスク上の/tmpディレクトリに一時テーブルのファイルを作るようになります。 thread_cache_size(4) [#r1580b03] 通常、MySQLのスレッドはクライアント接続ごとに生成・破棄されるますが、このパラメータを設定すると、設定した値の数だけスレッドが破棄されず、他のクライアント接続で再利用することができます。 table_cache(1024) [#k36dcceb] 1度開かれたテーブルをメモリ上に維持しておき、再利用します。 innodb_buffer_pool_size(16M ※メモリが潤沢であればデータベースのデータ容量に応じて大きくします) [#rd3f139b] InnoDBのデータやインデックスをキャッシュするためのメモリ上の領域です。 table_definition_cache [#y3e1f17a] キャッシュに保存できるテーブル数 グローバルステータス [#d13cf7f9] Open_tables [#v0800496] 現在開かれているテーブル数 Opened_tables_definition [#i5650db8] 今までに開かれたテーブル数の累積 参考URL [#y8efd5b2] http://www.powercms.jp/blog/2012/10/mysqlinnodb.html
One minute to read

MySQLの基本操作

MySQL ウェブアプリケーション用DB作成の手順 [#z2c16d0c] 1.MySQLへログイン 2.DBの作成 3.ユーザーの追加 4.ユーザーが追加されたか確認 5.完了 MySQL基本操作 [#z255f36a] ログイン [#qafd35bc] # mysql -u root -p パスワード データベース作成 [#sb2e4472] mysql>create database データベース名 ; 作成済みデータベース表示 [#i1b57cd9] mysql>show databases ; データベース削除 [#a51f35b3] mysql>drop datatbase test_db ; データベースの表示 [#a4ab5bb4] mysql>use データベース名; <--データベースを指定 mysql>show tables; <--作成されているテーブル名を表示 mysql>describe テーブル名; <--テーブルにあるカラム名を表示 テーブル操作 [#pb7c7955] テーブル作成 [#me8d298a] mysql> create table テーブル名(フィールド名01 タイプ,フィールド名02 タイプ); ※例 mysql> create table test01(id text); テーブルの確認 [#u6de41e4] mysql> show tables テーブルの状態確認 [#ba9f3103] mysql> show table status; フィールド操作 [#aa28667b] フィールドの設定確認 [#w5a000af] mysql> show columns from テーブル名; 既存テーブルへフィールドの追加 [#fafe604b] mysql> alter table t_name add request_time text; 指定したフィールドで並べ替え表示 [#occ3d48d] mysql> select * from t_name order by request_time; フィールドのデータ型を確認 [#g346b979] mysql> describe test01; +————–+——+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +————–+——+——+—–+———+——-+ | id | text | YES | | NULL | | | name | text | YES | | NULL | | | request_time | text | YES | | NULL | | +————–+——+——+—–+———+——-+ フィールドのデータ型を変更 [#k5c3f499] mysql> alter table t_name change column request_time request_time char(28); <– change column 既存フィールド名 新フィールド名 データ型 Query OK, 13 rows affected, 13 warnings (0.
3 minutes to read

MySQLの権限

MySQL 各権限 [#hb672ab4] ALL PRIVILEGES –> 全ての権限を与える WITH GRANT OPTION –> 権限の書き換えを許可 一覧 [#h23b71ab] ・all ユーザ管理(grant)以外の全ての権限を付与 ・usage なんの権限も付与しません) ・create テーブル作成(create table)の権限を付与 ・alter テーブル変更(alter table)の権限を付与 ・drop テーブル削除(drop table)の権限を付与 ・index インデックス作成/削除(create index、drop index)の権限を付与 ・file ファイルアクセス(select … into outfile、load data infile)の権限を付与 ・select、insert、update、delete テーブルに対する操作の権限を付与 参考にさせていただいたURL:http://wind-master.dip.jp/soft-info/item/9 mysqldumpを許可する権限 [#o1f1bf21] mysql > GRANT RELOAD,FILE,SELECT,SHOW VIEW,EVENT,LOCK TABLES ON . TO ユーザー名@localhost IDENTIFIED BY 'パスワード'; MySQL上のユーザー権限の確認 [#h1508d90] mysql> show grants for ユーザー名@localhost; <=ホストを指定しない場合"%"がデフォルトとなるので注意 MySQL上のユーザーの権限の削除 [#g98e21e7] mysql> revoke ALL PRIVILEGES ON データベース名.
One minute to read