hacks/DB/MySQL
2011年11月04日
信頼性はどうであれ、共有ディスクを使ったMySQL
nfsマウント領域にmysql datadirを配置し、mysqlを起動させる。
検証環境
- RHEL 6.0 / CentOS 6.0
- nfs-utils 1.2.2-7.el6
- mysql-server 5.1.52-1.el6_0.1
要件定義
- 隣のノードの/var/lib/mysqlをdatadirとしてMySQLを起動
作業概要
- nfsサーバ
- /var/lib/mysql を公開領域として設定
- nfsクライアント, mysqld
- nfsサーバの/var/lib/mysqlを、自身の/var/lib/mysqlにnfsマウント
- mysqlを起動
環境定義
| 用途 | IPアドレス | nfsディレクトリ |
|---|---|---|
| nfsクライアント | 192.0.2.12/24 | /var/lib/mysql/ |
| nfsサーバ | 192.0.2.13/24 | /var/lib/mysql/ |
事前作業
NFSの設定作業は ファイルサーバ構築 を参照の事。公開ディレクトリとマウントポイントを、それぞれ /var/lib/mysql に置き換えれば良い。
- 共通
-
# yum -y install mysql-server
- nfsサーバ
-
# echo '/var/lib/mysql 192.0.2.0/24(rw)' >> /etc/exports # exportfs -ra
作業内容
事前作業にて、nfsサーバの設定が終わってるものとする。
SELinuxを無効化
mysql datadirがnfsマウントされているとmysqldが起動しない。
# /etc/init.d/mysqld start chown: changing ownership of `/var/lib/mysql': Operation not permitted chmod: changing permissions of `/var/lib/mysql': Operation not permitted MySQL Daemon failed to start. Starting mysqld: [FAILED]
nfsマウントしたmysql datadir領域でもmysqlが起動する様にSELinuxを設定するのが良いのだろうが、本題はmysqlを起動させる事なのでSELinux無効化で済ませる。
# cp -pi /etc/sysconfig/selinux /etc/sysconfig/selinux.0 # diff /etc/sysconfig/selinux.0 /etc/sysconfig/selinux 7c7 < SELINUX=enforcing --- > SELINUX=disabled
システム再起動
# reboot
SELinuxが無効化さていればmysqlが起動するはず。
mysql datadirをnfsマウント
mountコマンドでnfsマウント。
# mount -t nfs 192.0.2.13:/var/lib/mysql /var/lib/mysql
必要に応じて/etc/fstabにマウントエントリを追加しておく事。
mysql起動
mysqlを起動
# /etc/init.d/mysqld start
mysqlが起動してる事を確認
# mysqladmin -uroot ping mysqld is alive
mysql接続して内容を確認
# mysql -uroot mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.06 sec)
必要に応じてmysqlをサービス起動対象に追加しておくこと。
# chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
あとがき
疑わしい挙動をする時はSELinuxを無効化か
Linuxで作るアドバンストシステム構築ガイド (18Network Server Construction Guide)
posted with amazlet at 11.11.04
デージーネット
秀和システム
売り上げランキング: 190665
秀和システム
売り上げランキング: 190665
2008年07月19日
High Performance MySQL
posted with amazlet at 08.07.19
Baron Schwartz Peter Zaitsev Vadim Tkachenko Jeremy D. Zawodny Arjen Lentz
Oreilly & Associates Inc
売り上げランキング: 3436
Oreilly & Associates Inc
売り上げランキング: 3436
Amazonさんから届いた。
- MySQL 5.1対応
- ページ数は初版の2倍強
- 管理者だけでなく開発者向けの内容
この本でしばらく楽しめそうだ。
この夏、オススメの1冊。
2008年06月12日
読み込まれる順番
忘れてたのでメモ
- /etc/my.cnf
- DATADIR/my.cnf
- ~/.my.cnf
接続して各種確認出来ない状態…。
psコマンドの実行結果があるだけでも大分違う。
さて困ったぞ。
現場で使える MySQL (DB Magazine SELECTION)
posted with amazlet at 08.06.12
松信 嘉範
翔泳社
売り上げランキング: 32833
翔泳社
売り上げランキング: 32833
2008年05月23日
レプリケーション・マスターの書き込みが遅過ぎる
IOに問題があるのかどうかを切り分ける為にbonnie++で性能評価してみた。
これと言って問題の無い数値が出て来た。
MySQLの設定に問題があるに違いない
my.cnfのパラメタを色々見比べてみた。
その中に気になるパラメタがあった。
sync_binlog = 1
試しにコメントアウトしてみたら速くなった…。
135倍速かった。
しかし、、、
条件が変わってしまうので設定は元のまま。
そのまま性能評価項目を埋めないと行けない。
時間だけが過ぎて行く。
実践ハイパフォーマンスMySQL
posted with amazlet at 08.05.23
ジェレミ・D. ザウドニ デレク・J. ベリング
オライリージャパン
売り上げランキング: 138677
オライリージャパン
売り上げランキング: 138677
2008年05月13日
特定情報に特化したスレーブ
理由は色々あるだろう。
- 全テーブルをレプリケーション対象にしたくない
- 全テーブルだとI/O負荷が高いので、過負荷テーブル別にスレーブを分散したい
slave側のmy.cnf変更
[mysqld]セクションに設定追加。
テーブルが複数ある場合は、テーブル数分の設定が必要。
slave$ sudo vi /etc/my.cnf [mysqld] replicate-do-table=dbname.table0 replicate-do-table=dbname.table1 replicate-do-table=dbname.table2 ....設定反映
slave$ sudo /etc/init.d/mysql restart
検証
slaveでtable0の存在を確認できれば成功
- masterにtable0が無い事を確認
- slaveにtable0が無い事を確認
- masterでtable0を作る
- slaveでtable0が作成されている事を確認
- masterにignore0が無い事を確認
- slaveにignore0が無い事を確認
- masterでignore0を作る
- slaveでignore0が作成されてない事を確認
複数テーブルを指定しても意図した動作になった。



