日記から戻る
過去日記ログ


☆- ログ倉庫・・・っぽいもの、若しくは鯖メモ -☆
検索で飛んできた人はこちらで内部検索してください、むしろ自分が楽するために設置

>> 2010/07


[ 科学忍法火の鳥 ]
最近のOracleの所業は目に余るので(OpenSolarisコミュニティを実質潰したり)
MySQLではなくfirebirdを使ってみました
いや、MySQLが悪いんじゃない事は理解してますけど
FrontPage - Firebird Wiki


[root@server src]# tar -jxvf Firebird-2.1.3.18185-0.tar.bz2
[root@server src]# cd Firebird-2.1.3.18185-0
[root@server Firebird-2.1.3.18185-0]# ./autogen.sh
[root@server Firebird-2.1.3.18185-0]# make
[root@server Firebird-2.1.3.18185-0]# make install


とりあえずインストール、結構時間掛かった
firebirdはinterbaseが元になっているので、phpではinterbase用のモジュールを使います
・・・おや、CentOSのリポジトリにphp-interbaseがありませんよ?
remiにあったのでそっちから入れます

CentOS5.3でPHP5.2を使う – ぱんぴーまっしぐら

[root@server Firebird-2.1.3.18185-0]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
[root@server Firebird-2.1.3.18185-0]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
[root@server Firebird-2.1.3.18185-0]# yum --enablerepo=remi update php
[root@server Firebird-2.1.3.18185-0]# yum install php-interbase


こっちの環境が64bitじゃないんで最初のコマンドのパスが違いますちゅうい
んじゃ次、ユーザーとかDBとか作る
Firebird関連

  ∧,,∧
 (;`・ω・)  。0・⌒) チャーハン作るよ!!
 /   o━ヽニニフ))
 しー-J


[root@server Firebird-2.1.3.18185-0]# /usr/local/firebird/bin/gsec -user SYSDBA -pass masterkey
GSEC> add user1 -pw u1pass
GSEC> quit
[root@server Firebird-2.1.3.18185-0]# /usr/local/firebird/bin/isql -user user1 -pass u1pass
SQL> create database 'localhost:/usr/local/firebird/db_dir/file.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET UNICODE_FSS;
SQL> quit;
[root@server Firebird-2.1.3.18185-0]#


firebirdは1DBが1ファイルです、たぶんw
バックアップが楽でいいですね
あ、DBファイルの置き場所は適当に作ってください
firebird.confに参照を許可するフォルダとか設定があるのでその辺も調整して

・・・で、ですね
実はfirebirdにはオートインクリメントがありません
でも似たような事はできます
[firebird]DATABASEにfirebird

今回ちょっと細切れでいきます

CREATE GENERATOR NOTE_ID;


ジェネレータ(あるいはシークエンス)を作ります、言い替えればカウンタです
NOTE_IDは任意の名前を付けてください


SET TERM !! ;

CREATE TRIGGER SET_NOTE_ID FOR NOTES
BEFORE INSERT AS


トリガー作るよ!!
SET_NOTE_ID → トリガーの名前、任意で
NOTES → テーブル名
インサート前にカウントアップしてね!


BEGIN
NEW.ID = GEN_ID(NOTE_ID, 1);
END !!

SET TERM ; !!


NEW.(カラム名)= GEN_ID(ジェネレータ名, 初期値)
NEWの後ろに付けたカラムにジェネレータのカウント値が入る
初期値・・・なんだろうな?たぶん

SET TERMは「こっからここまで」くらいで


色々とめんどくさいんでibWebAdminを入れる
1.展開してhttpdから参照できる場所に置く
2.configuration.inc.phpの中を適当に修正する
参考:IBwebAdmin0.98インストール: My Treasury

注.languageをjapaneseにしても、IPアドレスじゃなくホスト名で接続すると
何故か英語なのでUser→CustomizingでLanguageをjapaneseに選び直すと日本語になる
2010/08/26(Thr) 晴れ



[ ndbclusterその2 ]
今回は設定について、リファレンスはMySQL Cluster の設定 - RX-7乗りの適当な日々
だいたいここのまんま


[root@server src]# cp /usr/local/src/mysql-5.5.2-m2/support-files/my-medium.cnf /etc/my.cnf
[root@server src]# vi /etc/my.cnf
-------------------------------------------------------
ndbcluster
ndb-connectstring=192.168.1.11
-------------------------------------------------------


1.11が親(?)側、1.12と2機構成で作ります
このmy.cnfの設定は両方に

次は管理ノードの設定らしい

[root@server src]# mkdir /var/lib/mysql-cluster
[root@server src]# cp /usr/local/src/mysql-5.5.2-m2/support-files/ndb-config-2-node.ini /var/lib/mysql-cluster/ndb-config.ini
[root@server src]# vi /var/lib/mysql-cluster/ndb-config.ini
-------------------------------------------------------
[ndb_mgmd]
Id=1
HostName= 192.168.1.11

[ndbd]
Id= 2
HostName= 192.168.1.11

[ndbd]
Id= 3
HostName= 192.168.1.12

[mysqld]
Id= 4
HostName= 192.168.1.11

[mysqld]
Id= 5
HostName= 192.168.1.12
-------------------------------------------------------

[root@server src]# /usr/local/libexec/ndb_mgmd -d -f /var/lib/mysql-cluster/ndb-config.ini


するとRX-7な人と同じようにWarningが出る、当たり前かw
NoOfReplicasの値を書き換えて再起動
Warningが消えている事を確認したらndbdを起動

管理ノード側

[root@server src]# /usr/local/libexec/ndbd --initial


データノード側

[root@server src]# /usr/local/libexec/ndbd --initial --ndb-connectstring=192.168.1.11


管理ノードを引数で指定する、たぶんw
--initialは初回起動時だけでいんじゃないかと思ってみたり

さて、ここまでやってndb_mgmでノードが見えていたので
ここからはDBの中に入っていく

[root@server src]# mysql -u root -p

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| test        |
+--------------------+
3 rows in set (0.01 sec)

mysql> create database cluster;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| cluster      |
| mysql       |
| test        |
+--------------------+
4 rows in set (0.00 sec)

mysql> use cluster;
Database changed
mysql> create table test01(id int(10) not null auto_increment, name varchar(100), primary key (id)) engine=ndbcluster;
ERROR 1005 (HY000): Can't create table 'cluster.test01' (errno: 157)


アルェ〜?
クラスター用のデータDirのパーミッションを変えてみたりするが改善せず
原因はFWで1186:tcpが塞がれていた為だった
なのにerrorにはシンタックスエラーとか吐くから始末に負えない
とりあえず1.11からデータをinsertして1.12で同じDBを作ると中に入っていること
逆に1.12からinsertして1.11で牽けることを確認


・・・あれ?
mysqlを--ndbclusterで起動してないな、別に要らないのか?
2010/08/13(Fri) 晴れ



[ ndbcluster ]
MySQL5.5でクラスターに挑戦

[root@server src]# tar -zxvf mysql-5.5.2-m2.tar.gz
[root@server src]# cd mysql-5.5.2-m2
[root@server mysql-5.5.2-m2]# ./configure --with-innodb --with-ndbcluster --with-ndb-test
configure: WARNING: unrecognized options: --with-innodb, --with-ndbcluster


なんか言われる、どうも指定書式が変わったっぽい
でもWARNINGなのでそのままごーw

[root@server mysql-5.5.2-m2]# make
[root@server mysql-5.5.2-m2]# make install


通っちゃうんだよね、これが
とりあえず起動してログインする

[root@server mysql-5.5.2-m2]# mysql_install_db
[root@server mysql-5.5.2-m2]# chown -R mysql:mysql /usr/local/var/
[root@server mysql-5.5.2-m2]# mysqld_safe --ndbcluster &
[root@server mysql-5.5.2-m2]# mysql -u root -p


起動する時にファイルを作ろうとするけれどパーミッションが足りないのでchown
mysqlユーザがいない場合は作るべし

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine   | Support | Comment                          | Transactions | XA  | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| ndbcluster | YES   | Clustered, fault-tolerant tables              | YES     | NO  | NO     |
| MyISAM   | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO      | NO  | NO     |
| CSV    | YES   | CSV storage engine                     | NO      | NO  | NO     |
| MRG_MYISAM | YES   | Collection of identical MyISAM tables           | NO      | NO  | NO     |
| InnoDB   | YES   | Supports transactions, row-level locking, and foreign keys | YES     | YES | YES    |
| MEMORY   | YES   | Hash based, stored in memory, useful for temporary tables | NO      | NO  | NO     |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
6 rows in set (0.00 sec)

mysql>


InnoDBもndbclusterも一応対応出来ているもよう
さて、ここでさっきのWARNINGについて検証してみよう
ケース1

[root@server mysql-5.5.2-m2]# ./configure --with-innodb --with-ndbcluster --with-ndb-test
configure: WARNING: unrecognized options: --with-innodb, --with-ndbcluster


WARNINGは出るけれど、とりあえず有効にはなっているらしい
 # ./configure --help
で見ると今は --with-plugins=HOGE を使うっぽい

 --with-plugins=PLUGIN[[[,PLUGIN..]]]
             Plugins to include in mysqld. (default is: none)
             Must be a configuration name or a comma separated
             list of plugins.
             Available configurations are: none max max-no-ndb
             all.
             Available plugins are: partition daemon_example
             ftexample semisync archive blackhole csv example
             federated heap ibmdb2i innobase myisammrg myisam
             ndbcluster.


ではケース2

[root@server src]# tar -zxvf mysql-5.5.2-m2.tar.gz
[root@server src]# cd mysql-5.5.2-m2
[root@server mysql-5.5.2-m2]# ./configure --with-plugins=innobase --with-plugins=ndbcluster --with-ndb-test
[root@server mysql-5.5.2-m2]# make
[root@server mysql-5.5.2-m2]# make install
[root@server mysql-5.5.2-m2]# mysql_install_db
[root@server mysql-5.5.2-m2]# chown -R mysql:mysql /usr/local/var/
[root@server mysql-5.5.2-m2]# mysqld_safe --ndbcluster &
[root@server mysql-5.5.2-m2]# mysql -u root -p


あぁ、これは別の機体でやっているのでアンインストールもmake cleanもやってません
今度はWARNINGが出なかった

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine   | Support | Comment                          | Transactions | XA  | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| ndbcluster | YES   | Clustered, fault-tolerant tables              | YES     | NO  | NO     |
| MyISAM   | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO      | NO  | NO     |
| CSV    | YES   | CSV storage engine                     | NO      | NO  | NO     |
| MRG_MYISAM | YES   | Collection of identical MyISAM tables           | NO      | NO  | NO     |
| MEMORY   | YES   | Hash based, stored in memory, useful for temporary tables | NO      | NO  | NO     |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

mysql>


あれ?InnoDBがありませんのですよ
更に別の機体で、順番を入れ替えてみるケース3

[root@server src]# tar -zxvf mysql-5.5.2-m2.tar.gz
[root@server src]# cd mysql-5.5.2-m2
[root@server mysql-5.5.2-m2]# ./configure --with-plugins=ndbcluster --with-plugins=innobase --with-ndb-test
[root@server mysql-5.5.2-m2]# make
[root@server mysql-5.5.2-m2]# make install
[root@server mysql-5.5.2-m2]# mysql_install_db
[root@server mysql-5.5.2-m2]# chown -R mysql:mysql /usr/local/var/
[root@server mysql-5.5.2-m2]# mysqld_safe --ndbcluster &


起動にエラーが出る、ログを見ると

 100810 16:04:38 [ERROR] /usr/local/libexec/mysqld: unknown option '--ndbcluster'
 100810 16:04:38 [ERROR] Aborting


ndbclusterなんか知りませんよっと、configureで付けたオプションが効いていない
これらを見るに、後ろで指定した --with-plugins=HOGEが上書きしてしまうもよう
挙動から見るにたぶん
そして正解のケース4

[root@server src]# tar -zxvf mysql-5.5.2-m2.tar.gz
[root@server src]# cd mysql-5.5.2-m2
[root@server mysql-5.5.2-m2]# ./configure --with-plugins=innobase,ndbcluster --with-ndb-test
[root@server mysql-5.5.2-m2]# make
[root@server mysql-5.5.2-m2]# make install
[root@server mysql-5.5.2-m2]# mysql_install_db
[root@server mysql-5.5.2-m2]# chown -R mysql:mysql /usr/local/var/
[root@server mysql-5.5.2-m2]# mysqld_safe --ndbcluster &


これで1回目のと同じ結果になる
ていうか書いてます、configureオプションのヘルプに
カンマで区切ったプラグインのリストを書けって
説明はちゃんと読みましょう
2010/08/10(Tue) 晴れ

My Diary Version 1.21
[ 管理者:やま 著作:じゃわ 画像:牛飼い ]