スタッフブログ

ローハイドのスタッフが、日常のこと、ネットで見つけた便利な情報、仕事に役立つとっておきのテクニックを紹介します。

Fight! the Rawhide

2007年5 月26日23:12

[mysql]5.1.x系 クラスタリングの機能紹介1

STAFF BLOG コメント (0)

おーた

mysqlclusterの導入手順 PART2

FAQ編 2

Q.わーいわーい、ndbクラスタが動いたよ!!!

でも・・・server1のmysqlで

create database hoge;を実行して

hogeスキーマを作ったんだ。

で、

hogesテーブルをNDB型でつくったんだけど、

server2から見るにはどうしたらいいんだろう?

そもそもserver2にhogeスキーマがないしさぁ。

 

A.ここはmysqlクラスタの力の見せ所だね。どれ・・・

カタッカタッ
(server2のmysqlを起動した音)
カタカタカタッ
(server2でcreate database hoge;を実行した音)

>show tables;
+—————-+
| Tables_in_hoge |
+—————-+
| hoges        |
+—————-+
Q.すっげー!!!hogesテーブルが勝手に出来たよ!!

A.クラスタリングではもともと同じデータストアを利用するわけ
だから、当然スキーマがあればテーブルは既に存在してるわけさ。

Q.じゃあさ、mysql clientをserver1で立ち上げて
insert into hoges values(”こんにちわー”);
ってやってね、server2でselectすれば当然

+—-+——————–+
| id | name           |
+—-+——————–+
|  1 | こんにちわー   |
+—-+——————–+
ってでるんだよね。
これならinsertとselectでチャットが出来るね!!!!!

mysqlマニア感激のチャットクライアントさ!

 

A.・・・・

 

 

o.t.a

22:58

[mysql]5.1.x系 クラスタ起動手順&設定

STAFF BLOG コメント (0)

おーた

mysqlclusterの導入手順 PART3
便利な設定へん

ndb_mgmdを起動するときに
ndb_mgmd –config-file=/hoge/hoge/config.ini &
みたいにいちいち書くのはだるい!

そんなときはmy.cnfに書いちゃおう!

my.cnfに以下の項目を追加

[ndb_mgmd]
config-file=/var/lib/ndb/config.ini
(configファイルのフルパス)

これでndb_mgmd &だけでconfigを
自動的にロードして動きます。

 

サーバ2からndbd(データノード)を接続するときに
ndbd –ndb-connctstring=server1
みたいに書くのもだるいんだけど・・・

[ndbd]
connect-string=server1
(ndb_mgmdが動いてるサーバのホスト名)

これでserver2からndbdって打つだけで
起動します。

 

おまけ
[ndb_mgm]
connect-string=server1
(ndb_mgmdが動いてるサーバのホスト名)

これを設定しておけば、ndb_mgmdが動いてる
サーバ以外からもndb_mgm(管理コンソール)
が実行できるよ。
(そんなのやらないよね・・・)

 

!!起動手順はこんなかんじ!!
想定構成
server1= ndb_mgmd、ndbd、mysqldが動いている場合
***server1で実行***
# ndb_mgmd
# ndbd
# mysqld_safe &

***server2で実行***
# ndbd
# mysqld_safe &

これだけで動きます。

o.t.a

 

22:45

[MySQL5.1系]MySQL Cluster(NDB Cluster)の設定memo Vol.2

STAFF BLOG コメント (0)

おーた

mysqlclusterの導入手順 PART2

FAQ編 1
Q.mysqld(APIノード)が立ち上がらないんだけど・・・?

A.ここはハマリどころなんだ!なぜかというと・・
ndb_mgmd(マネージメントノード)は、色んなところから
見られる目立ちたがり屋さんなんだ。

Q.それだけじゃわからないよ・・・

A.目立ちたがり屋さんだから、/etc/hostsをいじって
サーバ名とIPアドレスを対応付けなきゃダメなんだ。

Q.ふーん

A.つまりね・・127.0.0.1みたいなlocalipアドレスが
ndb_mgmdのホスト名に対応付けられてると動かないんだよ。

Q.うーん、ピンとこないなあ

A.ローカルアドレスでndb_mgmdが起動しても、他の
サーバから見たら当然見えないよね。
だから、他のサーバは当然どこにつないでいいか
わからなくなる。

Q.ndb_mgmdくんって、人に見られてないと仕事を
出来ないかわいそうな人だなあ・・・

A.そう。悲しい人なんだ。だから他人からわかる
アドレスとhost名を設定して、connectstringに
設定して繋いであげてね。
そうするとバリバリ働くよ!

Q.わかったよ、ありがとう!
(でもそれってハマリどころというか、設定
ミスっただけじゃん・・・)

A.それは言わないお約束です。

o.t.a

2007年4 月26日15:55

[MySQL5.1系]MySQL Cluster(NDB Cluster)の設定memo

STAFF BLOG コメント (0)

おーた

※.便宜上、クラスタリングに使用する2台のサーバを
「test1、test2」と記載しています。
これらのサーバ内で、既にmysql5.1系のインストールが
行われていることを前提とします。


1. データを入れておくディレクトリを作成します。(ここでは適当な場所につくってみます。)

***test1サーバ上にて***
shell# mkdir /home/hoge/ndb_mgmd-file
shell# mkdir /home/hoge/cluster-file

***test2サーバ上にて***
shell# mkdir /home/hoge2/cluster-file

2.mysqlルートに移動(test1,test2)

shell# cd /usr/local/mysql

3. my.cnfを設定します(test1,test2)

shell# cp support-files/my-large.cng /etc/my.cnf

shell# vi /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring=hoge1

4. config.iniを設定します(test1)

shell# cp /support-files/ndb-config2-node.ini /support-files/config.ini

shell# vi /support-files/config.ini

[ndbd default]※変更箇所
NoOfReplicas= 2 → NoOfReplicas= 1
→レプリカ数です。1にすると冗長性を失いますが、
複数のサーバを1つのDBとして使えます。

DataDir → コメントアウト
→特に必要ないので・・

[ndb_mgmd_default]
DataDir → コメントアウト
HostName= hoge1
→マネージメントノードを起動するサーバのhost名

[ndb_mgmd]
id=1
DataDir= /home/hoge/ndb_mgmd-file
→マネージメントノードファイル置き場

HostName= hoge1
→マネージメントノードを動かすサーバのホスト名

[ndbd]
id=2
DataDir= /home/hoge/cluster-file
→データの置き場所のパス
HostName= hoge1
→データノードを動かすサーバのホスト名

[ndbd]※データノードの数分だけ[ndbd]を書きます。
id=3
DataDir= /home/hoge2/cluster-file
HostName= hoge2

[mysqld]※sqlノードの設定。デフォルトのままでOKです。
こいつもノードの数だけ書きます。

5. host名とIPアドレスを対応付けます。(test1,test2)

shell# vi /etc/hosts
192.168.0.x test1
192.168.0.y test2

6. マネージメントサーバ[ndb_mgmd]を起動します(test1)

shell# ./bin/ndb_mgmd –daemon –config-file ./support-files/config.ini
※引数でconfig.iniを指定しています。

7. 環境に応じてファイアウォールのポートを空けます。(test1,test2)

1)マネージメントノードを動かすサーバのポートを空けます。(1186.※test1のみ)

2)クラスタリングで使用するtcpのポートを空けます。(defaultだと63132、test1とtest2で設定)
→config.iniの[tcp_default]で変更可能

3)mysqlノードのポートを空けます。(defaultだと3306、test1とtest2で設定)

8.ndbdを起動します(test1,test2)

***test1で実行***
shell# ./bin/ndbd –initial(初回のみ–initialをつけます。)

***test2で実行***
shell# ./bin/ndbd –ndb-connectstring=test1 –initial

9.mysqldをSQLノードとして起動します(test1, test2)

shell# ./bin/mysqld_safe &
(my.cnfの設定が行われていれば
自動的にsqlノードとして認識されます。)


10.ndb_mgmを起動して状態を確認します(test1)

shell# ./bin/ndb_mgm
ndb_mgm> show
※クラスタリングの停止はshutdownコマンドで。すべてのノードが停止します。

成功例)
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.x  (Version: 5.1.17, Nodegroup: 0, Master)
id=3    @192.168.0.x  (Version: 5.1.16, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.x  (Version: 5.1.17)

[mysqld(API)]   4 node(s)
id=4    @192.168.0.x  (Version: 5.1.17)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)

このように、5.1系であればバージョンが異なっても
動作自体はします。
(実運用上はバグフィックス等々ある為
バージョンをあわせたほうが良さそう)

11.早速クラスタリングしてみましょう!!

shell# ./bin/mysql -uxx -p
mysql> CREATE DATABASE hoge_development default char set=utf8
mysql> CREATE TABLE hoges (
id INT(10) NOT NULL AUTO_INCREMENT
, name VARCHAR(255)
, PRIMARY KEY (id)
)ENGINE=NDB;
※クラスタリングを行っているとcreate table,
create database等のddlは遅くなります

mysql> show table status where Name = “hoges” and Engine=”NDBCLUSTER”;
※レコードが取得されればNDBClusterの設定は完了です。

それでは良いクラスタリングライフを。

o.t.a

2007年4 月22日19:16

CoLinux&FedoraCore5によるWindows上開発環境の構築

STAFF BLOG コメント (0)

おーた

1.CoLinux 0.71のダウンロード
http://sourceforge.net/project/showfiles.php?group_id=98788&package_id=217177&release_id=497190
2.インストールで次のコンポーネントをチェックから外す
 →coLinux Virtual Ethenet Driver(TAP-Win32)
  coLinux Bridge Ethenet(WinPcap)
3.distributionの選択、Fedora Core5が推奨です。
4.ダウンロードが完了したらインストールしたディレクトリを開きます。
5.distributionのアーカイブをインストールディレクトリに解凍します。
(Fedora Core5ならFedoraCore5-2006.8-ext3-2gb.7z)
6.コマンドプロンプトからfsutilを使用してスワップファイル用の空イメージを作成します。
 →コマンド)fsutil file createnew swap.img 268435456
7.引き続きfsutilでデータ量域用の空イメージを作成します
 →コマンド)fsutil file createnew fslocal.ext3 2147483648
8.作成したファイルをCoLinuxインストールディレクトリに移しましょう。

–これで準備が整いました。あとは起動用のファイルを設定しましょう。

9.fedora5-start.batに以下の内容にします。
 →colinux-daemon.exe kernel=vmlinux initrd=initrd.gz
  mem=128 cobd0=Fedora5-2gb.ext3 cobd1=swap.img
  cobd2=fslocal.ext3
  cofs0=C:\Temp eth0=slirp,,tcp:22:22/tcp:23:23/tcp:80:80
root=/dev/cobd0 fastboot nogui -t nt
  ※これは編集都合の改行です。実際はすべて1行で記載してください。
10.fedora-star.batを起動してください
11.loginはrootで行ってください。
12.日本語キーボードに対応させます。
 →shell# loadkeys jp106
swap.imgの設定を行います。
 →shell# mkswap /dev/cobd1
  shell# swapon -a -e
  shell# free
  ※これでswap領域にswap.imgのサイズが表示されればokです。
13.あとは環境を作ってください
 1)ユーザを追加してください。
  →shell# adduser hoge(hogeは好きな名前で)
 2)ユーザをrootから変更します。
  →shell# su - hoge
 3)rubyをソースからdownloadします。
***必要ライブラリのインストールをします***
  →shell# su -
  shell# yum install make
  shell# yum -y update
  shell# yum install ‘gcc*’
  ※yumが動かない(Determining fastest mirrorsで落ちる)
場合は、ウィンドウズのエラー画面が出た後、送信しないを
クリックしてしばらくまってみる。
  しばらく待ってると、画面が動き出すので、
http://なんちゃらと表示されたらctrl+zでyumから抜ける。
  ps -efでyumのプロセスIDを確認した後、
kill -KILLでyumをkill。
  その後coLinuxを再起動するとなぜかyumが動くようになります・・・
  (問題ないけど意味不明。)
 
   shell# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
   shell# tar -xvzf ruby-1.8.6.tar.gz
   shell# cd ruby-1.8.6
   shell# ./configure
   shell# make
   shell# make install
   ***ruby gemsのインストール***
   shell# cd ../
   shell# wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz
   shell# tar -xvzf rubygems-0.9.2
shell# cd rubygems-0.9.2
shell# ruby setup.rb
***railsのインストール***
shell# gem install rails
***subversionのインストール***
shell# yum install subversion

これにてひとまず、windows上でrailsの開発環境(最低限)が整います。
それではよいColinux&railsライフを!
o.t.a

細かい設定に関しては つづく

2007年4 月20日13:51

[Rails]HyperEstraierのInstall

STAFF BLOG コメント (0)

おーた

RubyOnRailsでHyperEstraierをインストールする方法です。

1.qdbmをダウンロードしてインストールします。

$ su - ※スーパーユーザーで
$ wget http://qdbm.sourceforge.net/qdbm-1.8.75.tar.gz
$ tar -xvzf qdbm-1.8.75.tar.gz
$ cd qdbm-1.8.75.tar.gz
$ ./configure –enable-zlib
$ make
$ make install

2.HyperEstraierをダウンロードしてインストールします

$ su -
$ wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.10.tar.gz
$ tar -xvzf hyperestraier-1.4.10.tar.gz
$ cd hyperstraier
$ ./configure
$ make
$ make install

3.estmasterサーバを起動します

$ estmaster init /usr/local/share/hyperestraier
$ estmaster start /usr/local/share/hyperestraier &
→サーバをとめるときはestmaster stop /var/lib/hyperestraier
→ユーザの設定をミスったりしてログインできなくなったら、stopしたあとにもう一回initしてstart

4.管理画面でユーザの設定とノードの設定を行います。

1.http://[hyperestraierをインストールしたサーバ]:1978/を開きます
2.administrationをクリックするとid/passを求められるので、defaultのadmin/adminを入力します。
3.Manage Usersでadminのpassをかえます。(Editを押す)※セキュリティ対策
4.defaultのadminではなく他にユーザを作っておくほうが良さそうなので、もう一個ユーザを作ります。
→権限はadminと同様でok。ここではidとpassをhoge/piyoとします。
5.Manage Nodesにて適当なノードを作ります。ここではノード名をnodes_hogeとします。
  →左のテキストボックスがnode名、右のテキストボックスが説明文。
後述のdatabase.ymlの設定で使用します。

以上でHyperEstrairerサーバサイドの設定は終了です。
こんどはRail側の設定を行いましょう。
※全文検索プラグイン、acts_as_searchableの使い方についてはぐぐると色々出てくるので、割愛します。

5.gemでacts_as_searchableをインストールします。

$gem install acts_as_searchable

6.RAILS_ROOT/config/database.ymlに以下の項目を追加します。

estraier:
  port: 1978
  user: hoge
  password piyo
  node: nodes_hoge

7.enviroment.rbにrequire_gemを書いておきます。

require_gem ‘acts_as_searchable’

8.全文検索用のモデルからHyperEstraierのインデックスを作ります。

アプリケーションルートで./script/console
>> Hoge.reindex!

※Hogeモデルがacts_as_searchableを使う全文検索対象モデルであった場合の書き方です。

凡例)def Hoge < ActiveRecod::Base
acts_as_searchable :searchable_fields => [:piyo]
end

以上で、Rails上からHogeモデルを使用しての全文検索が可能となります。
動かない場合は、全文検索用のテーブルがInnoDBになっていないかを確認したり、
Railsアプリケーションを再起動してみたりすると大体動きます。

それでは、よいHyperEstraierライフを。
(ちなみにacts_as_searchable、ぶっちゃけ使いにくいです。重いです。
sennaにすればよかった、と後悔している今日この頃です。)

o.t.a

スペシャルサンクス: ライドオンレイルズ

2006年10 月29日7:38

MySqlの甘いワナ

STAFF BLOG コメント (0)

おーた

真夜中にMySqlをいじくりまわしました。
(開発用TestServerです、もちろん)

そんな中で、
一番の落とし穴だったのが
innodb_log_file_sizeの値変更。
普通にやるとサーバが怒って、起動出来ません。

(続きを読む…)

2006年10 月26日0:04

MySqlWorkBench

STAFF BLOG コメント (1)

おーた

DB設計用ツールには色々ありますが、
そこはRAWHIDE.、フリーで使用できちゃう
ツールを活用するわけです。
(お金が無いわけじゃないですよ!ほんと!ポリシーです!…)

今までもDBDesigner4とかClayとか、色々使ってみたものの
どれもこれも微妙なラインで使いにくい箇所があったりして。
そこで登場したのがタイトルのコイツです。

[MySqlWorkBench]
http://dev.mysql.com/downloads/gui-tools/5.0.html
MySql公式のGUI設計ツールです。

まだAlpha1.1.4と、作りの荒さは否めない感じですが
リバースエンジニアリングもばっちり出来るし、UIも快適。画面も綺麗。
今後のVersionupの出来次第ではありますが、
近い将来にMySql前提でDB設計をする人間にとっての
デファクトスタンダードになるのではないでしょうか。

とかえらそうなことを言いつつ、
僕もまだ使い方よく分かっていません。
ゴリゴリ使ってみて本当に良さそうだったら使用法を
ここに書いてみようと思います。 

Newer Posts »