ホスティングサービスにおけるDB(データベース)メンテナンスに関する集中連載の第2回として、今回はメンテナンス手法を解説します。あまり身構えず、基本のおさらいから始めましょう。
メンテナンス方法は大きく分けて3種類
MySQLのメンテナンスには、ホスティングサービスが提供するツールを利用する方法、シェルでアクセスする方法、管理ツールを利用する方法があります。
ホスティングサービス提供のMySQL、とりわけ共有サーバでは、大半の場合サービス側で管理ツールを用意しています。提供される管理ツールで設定可能な内容はサービスにより異なりますので、ヘルプなどで確認しましょう。
シェルが利用できる場合は、MySQLのクライアントプログラムでメンテナンスします。PHPやPerl、pythonなどのスクリプトやプログラムからMySQLの構文を利用してのメンテナンスも可能です。ただし、MySQLの起動や停止などはMySQLのサーバプログラムmysqldに対して操作します。
サービスによっては、phpMyAdminなどの管理ツールを利用できる場合があります。
ここではシェルでの操作を中心に、基本的なポイントを解説します。
MySQLの起動・停止・再起動
通常MySQLは自動起動されるため、手動での起動や停止はあまり必要ありませんが、メンテナンスなどで起動や停止、再起動する場合の方法を紹介します。
LinuxでMySQLを手動で起動するには、シェルのコマンドプロンプトで“/etc/init.d/mysqldstart”と実行します。終了するにはstartの代わりにstop、再起動するにはrestartと入力します。
mysqlコマンドプロンプト
シェルからMySQLをメンテナンスするには、MySQLのコマンドプロンプトから構文を入力するか、mysqladminなどの管理コマンドを使用する方法があります。MySQLのコマンドプロンプトを起動するには、シェルのコマンドプロンプトから“mysql-u root”と入力します。この他、mysqlの主なオプションを列記します。[]内は省略可のパラメータ、()内は短縮形です
表 mysqlコマンドのオプション
--help (-?) | ヘルプの表示 |
--column-names | 結果にコラム名を表示する |
--skip-column-names(-N) | 結果にコラム名を表示しない |
--debug[={ ログのパス}], -# [{ ログのパス}] | デバッグログの書き込み |
--line-numbers | エラー時に行番号を出力する |
--skip-line-numbers(-L) | エラー時に行番号を出力しない |
--verbose (-v) | より詳細な結果の出力 |
MySQLのオプションファイル
MySQLは起動時に通常、my.cnfというオプションファイル(設定ファイル)を読み込みます。Windowsの場合は、my.cnfではなくmy.iniとなる場合があります。定義ファイルを読み込んでいるかどうかは、シェルのコマンドプロンプトから“mysql--help”または“mysqld--help--verbose”を実行して調べられます。定義ファイルは読み込み順が決まっていて、Linuxでは、
- ① /etc/my.cnf
- ② $MYSQL_HOME/my.cnf
- ③ defaults-extrafile(起動時に同盟オプションで指定したファイル)
- ④ ~/.my.cnf
の順になります。
記述内容はmysqldの起動オプションとほぼ同じですが、先頭の“--”を省略することに注意しましょう。
主なMySQL構文
ユーザの定義やDB/テーブルの作成には、MySQL構文を用います。これはmysqlのコマンドプロンプトや、PHPなどのスクリプト/プログラムから実行します。
主な構文を簡単に紹介します。
ユーザ関連
CREATE USER | ユーザの作成 |
GRANT | ユーザの権限設定(存在しないユーザ名を指定すると自動的に作成) |
DROP USER | ユーザの削除 |
DB関連
CREATE DATABASE | DBの作成 |
SHOW DATABASES | DB名の一覧 |
DROP DATABASE | DBの削除 |
テーブル関連
CREATE TABLE | テーブルの作成 |
ALTER TABLE | テーブル定義の変更 |
SHOW TABLES | テーブル名の一覧 |
RENAME TABLE | テーブル名の変更 |
SHOW COLUMNS | テーブルのカラム情報の一覧 |
DROP TABLE | テーブルの削除 |
Webサーバとの連携
MySQLではC/C++、Java、PHP、Python、Ruby、PerlなどのAPIを用意しており、これらの言語で記述したプログラムやスクリプトからMySQLを利用可能です。WebサーバとMySQLを連携するには、WebサーバでMySQLがサポートする言語のいずれかに対応させ、その言語で適切なクエリを送信するスクリプトやプログラムを作成します。