SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

はじめましてMySQL!

誰でも簡単!MySQLのインストールと初期設定(初期設定編)

本連載では、MySQLのインストールと初期設定手順をステップ・バイ・ステップで分かりやすく解説します。初心者の方でも簡単にインストールが出来るよう、基礎的な内容を中心に構成しています。

MySQLに必要な初期設定

 前回はtar.gzのバイナリを使ってMySQLのインストールを行いました。ファイルをダウンロードして展開するだけなので、短い時間で簡単にインストールできたのではないでしょうか。

 インストールが完了したら、続いてMySQLの初期設定を行います。インストールはあくまでもファイルをサーバー上に展開しただけなので、環境に合わせて最適に動作するための設定が必要になります。一見難しく感じるかもしれませんが、作業は簡単なので初心者の方でも心配ありません。

 第2回目となる今回は、MySQLの初期設定手順について解説します。

オプション設定ファイルの作成

 MySQLには表や索引をキャッシュするために使用するメモリサイズやキャラクタ・セットといった様々なオプションがあり、環境に合わせてカスタマイズしながら使うことができます。オプションはMySQLの起動時やクライアントからの接続に使用するコマンドラインの引数として渡すことができますが、複数のオプションをその都度コマンドラインで指定するのは面倒ですし、抜け漏れが発生する恐れがあります。

 そのため、MySQLにはmy.cnfというオプション設定ファイルが提供されています。このテキストファイルにオプションを記述しておき、MySQLの起動時に自動で読み込ませることで、コマンドラインからオプションを指定する手間を省くことができます。

 ①サンプルファイルの選択
 tar.gzのバイナリを使用してインストールした直後はmy.cnfファイルが存在しないので、support-filesディレクトリにあるサンプルをコピー(リネーム)して使います。サンプルは複数用意されているため、サーバーのメモリ量を基準にどれを使用するか判断します。

オプション設定ファイルのサンプル
my-small.cnf 64MB以下のメモリを持つ環境向け
my-medium.cnf 128MB程度のメモリを持つ環境向け
my-large.cnf 512MB程度のメモリを持つ環境向け
my-huge.cnf 1~2GB程度のメモリを持つ環境向け
my-innodb-heavy-4G.cnf 4GB程度のメモリを持ち、InnoDBストレージエンジンのみを使用する環境向け

 今回用意したサーバーは16GBのメモリを搭載しているため、my-huge.cnfを使用します。

②サンプルファイルのコピー
 使用するサンプルが決まったら、続いて配置場所を考えます。my.cnfを配置できる場所は複数あり、あらかじめ決められた順序に従って読み込まれます。

my.cnfの配置場所と読み込み順序
1 /etc/my.cnf
2 /etc/mysql/my.cnf
3 SYSCONFIGDIR(コンパイル時に指定)/etc/my.cnf
4 $MYSQL_HOME(環境変数)/my.cnf
5 --defaults-extra-fileオプションで指定したファイル
6 ~/.my.cnf

 配置場所は自由に決めて構いませんが、複数の場所にmy.cnfを配置すると後から読み込まれたオプションの値が優先されます。また、複数のMySQLをインストールする場合は、/etc/my.cnfや/etc/mysql/my.cnfを使用すると全てのMySQLが同じ設定ファイルを参照することになるため注意してください。今回はmy-huge.cnfを/usr/local/mysql/my.cnfとしてコピー(リネーム)して使用します。

rootユーザで実行
# cd /usr/local/mysql
# cp support-files/my-huge.cnf my.cnf

③my.cnfの確認と編集
 コピーが完了したら、my.cnfの中身を確認してみましょう。my.cnfは通常のテキストファイルなので、OSのコマンドで参照/更新することができます。

rootユーザで実行
# view my.cnf

 my.cnfの記述方法は非常にシンプルで、[client]や[mysqld]といったグループのあとにオプション名と値を書くだけです。例えば、[mysqld]グループにはデフォルトで以下のようなオプションが設定されているので、この値を変更するか新しいオプションを追記すれば、MySQL起動時に設定が反映されます。

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
...(以下省略)

 サンプルとして書かれているオプションをそのまま使用しても構いませんが、最低限以下のオプションについては見直しを行ってください。

InnoDBストレージエンジン関連のオプション
 サンプルのmy.cnfでは、MySQL 5.5のデフォルトストレージエンジンであるInnoDB関連のオプションがデフォルトでは全てコメント化(無効化)されています。従って、InnoDBを使用する場合は、以下のようにコメントを解除してください。

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

 また、InnoDBストレージエンジンのデータをキャッシュするために使われるメモリサイズであるinnodb_buffer_pool_sizeが小さめの値に設定されているため、my.cnf内のコメントにある通り物理メモリの50%~80%程度まで大きな値に変更します。実際にはinnodb_buffer_pool_sizeに指定した値より若干多めのメモリが割り当てられるため、同じサーバー内で複数のMySQLが稼働する場合や、MySQL以外のデータベースやアプリケーションが稼働する場合は、あまり大きな値にしすぎないよう注意してください。InnoDBのREDOログサイズを指定するinnodb_log_file_sizeもinnodb_buffer_pool_sizeの25%程度に設定しておきます。

日本語のデータを扱う場合のオプション
 MySQLのデフォルトキャラクタセットはlatin1になっているので、このままでは日本語のデータを扱うことができません。日本語を使用する場合は、[mysqld]と[client]に以下のオプションを追加します。

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

次のページ
MySQLの起動

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
はじめましてMySQL!連載記事一覧

もっと読む

この記事の著者

岸和田 隆(キシワダ タカシ)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

関 俊洋(セキ トシヒロ)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/4116 2012/08/15 00:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年6月28日(火)13:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング