OracleやPostgreSQLに比べて、今までMySQLは触る機会が少ない状態でした。しかし、WordPressのバックエンドで動いていたり、業務上も必要性はあるので、簡単なメモですが備忘録的に記録しておきたいと思います。
バージョン確認方法
RedHatやCentOSでrpm管理している場合は、どのバージョンのパッケージが入っているかをrpmコマンドで確認できます。
# rpm -qa|grep MySQL MySQL-devel-5.5.23-1.el6.x86_64 MySQL-shared-5.5.23-1.el6.x86_64 MySQL-server-5.5.23-1.el6.x86_64 MySQL-embedded-5.5.23-1.el6.x86_64 MySQL-client-5.5.23-1.el6.x86_64 #
また、MySQLは、DBエンジン部分である「mysqld」とコンソール接続用の「mysql」で構成されています(その他、ライブラリなどもありますが割愛)。よって、インストールバイナリからバージョンを確認する事もできます。
# /usr/bin/mysql --version /usr/bin/mysql Ver 14.14 Distrib 5.5.23, for Linux (x86_64) using readline 5.1 # /usr/sbin/mysqld --version /usr/sbin/mysqld Ver 5.5.23-log for Linux on x86_64 (MySQL Community Server (GPL)) #
なお、MySQL Community Editionは、自由にダウンロードして無償で利用できるエディションです。
設定ファイル
MySQLの設定ファイルは、/etc/my.cnf です。このファイルでは、MySQLの利用ポートや、メモリ設定以外にも実に様々な設定が行われます。
なお、MySQLではストレージエンジンを選択できます。InnoDBやMyISAMなどがありますが、トランザクションに対応したInnoDBがMySQL5.5からはデフォルトになりました。
詳細は、MySQL事始 ストレージエンジン が参考になると思います。
バックアップ
MySQLにはバックアップ用コマンド「mysqldump」が付属しています。データベースの内容をsql形式でファイルバックアップを行えます。シンプルなバックアップコマンドは以下になります。
# mysqldump -u root -p バックアップ対象DB名 > backup_dump.sql
また、様々なオプションがありますので、必要性に応じて設定を行う事が可能です。以下はごく一部のオプションを抜粋しています。
–single-transaction | 一貫性を保持したバックアップを取得する事が出来る。 |
–default-character-set | デフォルトのキャラクタセットを指定できる。 |
–all-databases | 全データベースをDumpする。 |
–add-drop-table | mysqldumpコマンドでデフォルトで設定される(※) |
–add-locks | mysqldumpコマンドでデフォルトで設定される(※) |
–create-options | mysqldumpコマンドでデフォルトで設定される(※) |
–disable-keys | mysqldumpコマンドでデフォルトで設定される(※) |
–extended-insert | mysqldumpコマンドでデフォルトで設定される(※) |
–lock-tables | mysqldumpコマンドでデフォルトで設定される(※) |
–quick | mysqldumpコマンドでデフォルトで設定される(※) |
–set-charset | mysqldumpコマンドでデフォルトで設定される(※) |
※ MySQL5.1以降、デフォルトで有効化された。
詳細は、mysqldump(データベースバックアッププログラム)、もしくは、コマンド「mysqldump –help」を参照してください。
リストア
バックアップ対象データベースの、バックアップファイルからデータをリストアする際には、以下のコマンドで実現できます。
# mysql -u root -p < backup_dump.sql
リカバリ
上記載のリストア作業で最新のバックアップファイルを用いた場合は、バックアップファイルを取得した日時までの状態に戻す事が出来ます。しかし、障害が発生した時点までに戻す事は出来ません。障害が発生した時点までリカバリするには、インクリメント バックアップであるバイナリ ログ ファイルや、クラッシュするまでのログを用いてリカバリ(クラッシュした時点までのデータ変更を失うことなく、最新のデータ変更をリストア)を行う事も可能です。
データベース情報の確認
- 存在しているデータベースの確認
mysql> show databases;
- データベースへ接続する
mysql> use データベース名;
- 接続しているデータベースの確認
mysql> select database();
- サーバ変数を確認
mysql> show variables;
※ 様々な設定値が確認できる。
- 登録されているユーザのリストを確認
mysql> select host,user,password from mysql.user;
- テーブル一覧
mysql> show tables;
- テーブル情報の一覧表示
mysql> show table status;
- 指定テーブルのカラム表示
mysql> desc テーブル名; mysql> show columns from テーブル名; mysql> show fields from テーブル名;
- インデックス情報の表示
mysql> show index from テーブル名;
参考情報
http://dev.mysql.com/doc/refman/5.1/ja/index.html
※ 私が調べたかったバージョンは、5.5 ですが、まだ存在しないようでした。5.1 の情報となりますが、記載しています。