MySQL

Snow Leopard に MySQL 再インストール

Snow Leopard に PHP4 の環境が必要になったときに、configure出来なくてmysql5じゃだめでmysql5-develを入れ直した時のメモ。

※結果的にはmysql5-devel入れてもconfigureは出来なかったんだけど・・・

バックアップ

[suusuke@macbook ~]$ mysqldump5 -u root -x --all-databases > ~/Desktop/mysql_dump.sql

portsでインストールしたmysql5をアンインストール

[suusuke@macbook ~]$ sudo port uninstall mysql5
[suusuke@macbook ~]$ sudo port installed | less ← 確認

portsでmysql5-develをインストール

[suusuke@macbook ~]$ sudo port search mysql5
mysql5 @5.1.56 (databases)
    Multithreaded SQL database server

mysql5-devel @5.5.2-m2 (databases)
    Multithreaded SQL database server

mysql5-server @5.1.56 (databases)
    Multithreaded SQL database server

mysql5-server-devel @5.5.2-m2 (databases)
    Multithreaded SQL database server

Found 4 ports.

[suusuke@macbook ~]$ sudo port install mysql5-devel
[suusuke@macbook ~]$ sudo port install mysql5-server-devel

[suusuke@macbook ~]$ sudo port load mysql5-server-devel ← 自動起動

ダンプリストア

[suusuke@macbook ~]$ mysql5 -u root -p < ~/Desktop/mysql_dump.sql [/bash]

MySQLのキャッシュサイズ変更で重いSQLを高速化

MySQLパフォーマンスチューニングのためのクエリの基礎知識
パフォーマンスチューニングについては↑が非常に参考になります。

ただ、いくらパフォーマンスチューニングをしてもMySQLの設定がデフォルトでは限界が有るので、設定も変更する必要が有ります。

InnoDBをメインストレージエンジンとしている場合は、

innodb_buffer_pool_size
 ⇒InnoDBのインデックスやレコードをキャッシュするメモリ領域のサイズ

innodb_log_file_size
 ⇒InnoDBの更新ログを記録するディスク上のファイルサイズ
 ⇒innodb_buffer_pool_sizeのサイズを増やしたらinnodb_log_file_sizeも合わせて調整する必要が有る。

が重要。

SHOW VARIABLESコマンドで現状の設定をまず確認。

mysql > SHOW VARIABLES LIKE "innodb_%_size";
+---------------------------------+---------+
| Variable_name                   | Value   |
+---------------------------------+---------+
| innodb_additional_mem_pool_size | 1048576 |
| innodb_buffer_pool_size         | 8388608 |
| innodb_log_buffer_size          | 1048576 |
| innodb_log_file_size            | 5242880 |
+---------------------------------+---------+
4 rows in set (0.00 sec)

innodb_buffer_pool_sizeはデフォルトでは8Mに割り当てられています。
変更するにはWindowsの場合はmy.ini、Linux系の場合はmy.cnfを編集します。

innodb_buffer_pool_size = 16M
innodb_log_file_size = 2M

MySQLを再起動して、確認。

mysql > SHOW VARIABLES LIKE "innodb_%_size";
+---------------------------------+----------+
| Variable_name                   | Value    |
+---------------------------------+----------+
| innodb_additional_mem_pool_size | 1048576  |
| innodb_buffer_pool_size         | 16777216 |
| innodb_log_buffer_size          | 1048576  |
| innodb_log_file_size            | 2097152  |
+---------------------------------+----------+
4 rows in set (0.00 sec)

開発環境ではデフォルトの設定で開発していたので、本番環境からデータを取ってくるとSQLが重すぎる!ってことがありましたが、これで解消されました。

[参考にさせて頂いたサイト]
5分でできる、MySQLのメモリ関係のチューニング!
MySQL 初めてのチューニング

Windows7でmy.iniの編集について

my.iniをsakuraエディタで変更して、再起動しても全然設定が反映されない・・・。

何の事は無い、管理者権限で開いたら設定が変更できました。

設定変更したら、確認はしないと駄目ですね。

今回設定変更した箇所

# Set the SQL mode to strict
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

確認方法はコンソールから

SELECT @@sql_mode;

MySQLの削除について

Windows7でMySQLをアンインストールするとゴミデータとサービスがそのまま残った状態になってしまう(サービスに登録している場合)。
データは手動で削除出来るが、サービスは以下の方法で削除できる。

sc delete mysql

※mysqlという名前でサービスが登録されていた場合

Windows7、Vistaの場合は管理者権限でコマンドプロンプトを起動しないと「アクセスを拒否されました」となってしまうので注意。

ServersMan@VPS契約

仕事の方も余裕が出てきたのでServresManのVPSを契約してみました。

http://dream.jp/vps/

導入〜WordPress設定まで

VPS、ドメイン契約

VPSはServersManのスタンダードプランを契約して、ドメインはお名前.comで取得しました。

スタンダードプランで固定IPが2つ使えるので、取り合えず一つはWordPress用(blog.suusuke.info)に割り当ててもう一つは勉強用(www.suusuke.info)に。

お名前.comで「レンタルDNSレコード設定」、「ネームサーバーの変更」して無事ドメインでアクセスできるようになりました。

サーバー初期設定

  1. ユーザー追加、パスワード設定
  2. ssh設定
  3. PHP、MySQLインストール
  4. バーチャルホスト設定

ユーザー追加、パスワード設定

管理ユーザー(suusuke)追加とパスワードの設定。

useradd suusuke // ←管理ユーザー
passwd suusuke // ←パスワード設定
usermod -G wheel suusuke // ←whellに追加

ssh設定

昔はてなで書いた記事そのまま実行して設定

http://d.hatena.ne.jp/suusuke/20080724/1216828604

  • rootでログイン禁止
  • パスワード認証禁止
  • 公開鍵と秘密鍵で認証

あと、macだとOpenSSHなので秘密鍵をOpenSSH用にPuttyGenでコンバートして完了。

PHP、MySQLインストール

ネット探すと沢山情報が載ってるので参考に

リポジトリ追加

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-7.el5.remi.noarch.rpm
rpm -Uvh remi-release-5-7.el5.remi.noarch.rpm epel-release-5-3.noarch.rpm
vi /etc/yum.repos.d/remi.repo
# この行の下に priority=1 を追記
failovermethod=priority
priority=1

PHP インストール

yum --enablerepo=remi install php-devel php-mbstring php-mysql

確認

php -v

phpinfo(); // ←phpinfoで環境確認

MySQLインストール


yum --enablerepo=remi info mysql-server // ←バージョン確認

yum --enablerepo=remi install mysql-server // ←インストール

MySQL設定


vi /etc/my.cnf

[mysql]

default-character-set=utf8

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

default-character-set=utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


chkconfig mysqld on // ←自動起動する場合

WordPress用にDB作成


/etc/init.d/mysqld start // ←mysql起動
mysql> delete from mysql.user where user = ''; // ←不要ユーザー削除

mysql> update mysql.user set password=password('任意のパスワード') where user = 'root'; // ←rootパスワード設定
mysql> create database wp; // ←WordPress用データベース作成
mysql> grant all privileges on wp.* to blog@localhost identified by 'パスワード'; //←WordPress用にユーザー追加(blog)

バーチャルホスト設定

自分ルールとして公開するWEBサイトはサイト毎にユーザー(サーバーの)を追加して


/home/[user名]/public_html/

をバーチャルホストでドキュメントルートにする。

バーチャルホストの設定ファイルは


/etc/httpd/conf.d/

にWEBサイト毎にファイルを作成する。


useradd blog // ←WordPress用にユーザー追加

passwd blog

mkdir ~/public_html

バーチャルホスト設定ファイルを作成する。


vi /etc/httpd/conf.d/httpd-vhosts-blog.conf

<VirtualHost *:80>
ServerName blog.suusuke.info
DocumentRoot /home/blog/public_html
ErrorLog logs/blog.suusuke.info-error_log
CustomLog logs/blog.suusuke.info-access_log combined env=!no_log
<Directory "/home/blog/public_html">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

hostsファイル追記


vi /etc/hosts

182.163.74.64 suusuke.info
182.163.74.66 blog.suusuke.info

WordPressのインストールはファイルダウンロードして、DBの設定ファイル書き換えてアップするだけ。

これでOKだと思ったんだけど、上手く行かなかった。


chown -R apache.apache /home/blog/

WordPress用のディレクトリのオーナーをapacheに変更したら上手く行きました。

(これやんなくても上手く行くと思ったんだけどな・・・)

設定変更後はapache再起動。

取り合えず、ブログ公開まで出来ました。

でも、この記事書くのに3時間くらいかかった。(書いてる途中にWordPressのプラグイン探したりいろいろしすぎ!)

やっぱり書くのは時間かかるです。