FC2ブログ
メモ帳代わりの雑記です。
電脳チラ裏
電脳チラ裏
サーバーとかセキュリティとか。
たまにプログラミングのメモ書き。
前回のエントリで紹介したSpider Storage Engineがバージョンアップしたので、今更ながらインストールしてみました。

CentOS5.5でSPIDERストレージエンジンを使ってみた


今までは、ソースからSpiderを組み込まなければいけなかったが、バージョン2.22からSpiderを含んだビルド済みバイナリが配布されるようになったので、めちゃくちゃ導入が楽になりました。

パッケージはここで入手可能です。
Spider for MySQL / launchpad
https://launchpad.net/spiderformysql

手順で作成するサーバ構成

      [サーバA]      ← SPIDERノード
        |
     --------------
     |      |
   [サーバB]  [サーバC]  ←データノード

mkdir /home/src
cd /home/src

[サーバA] SPIDERノード構築手順

1.ダウンロード
・SPIDERビルド済みバイナリを入手する

wget http://launchpad.net/spiderformysql/spider-2.x/2.24-for-5.5.8/+download/mysql-5.5.8-spider-2.24-vp-0.13-hs-1.0-linux-x86_64-glibc23.tgz

・SPIDER初期化用スクリプトを入手する

wget http://launchpad.net/spiderformysql/spider-2.x/2.24-for-5.5.8/+download/spider-init-2.24-for-5.5.8.tgz


2.SPIDERの準備

tar zxvf mysql-5.5.8-spider-2.24-vp-0.13-hs-1.0-linux-x86_64-glibc23.tgz
tar zxvf spider-init-2.24-for-5.5.8.tgz
mv mysql-5.5.8-spider-2.24-vp-0.13-hs-1.0-linux-x86_64-glibc23 /usr/local/mysql5.5.8-spider
ln -s /usr/local/mysql5.5.8-spider /usr/local/mysql

#MySQL初期設定

groupadd -g 800 mysql
useradd -u 800 -g 800 mysql

chown -R mysql:mysql .
./scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data

mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql

cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld

chkconfig mysqld on
chkconfig --list mysqld

/etc/init.d/mysqld start

##SPIDER初期設定

mysql -uroot -p < install_spider.sql

###SPIDER用ユーザ作成
mysql> GRANT ALL PRIVILEGES ON *.* TO 'spider'@'%' IDENTIFIED BY '*****';
mysql> flush privileges;

mysql> create database spider_test;
mysql> use spider_test;
mysql> Create table tbl_a(
col_a int,
col_b int,
primary key(col_a)
) engine = Spider
Connection ' table "tbl_a", user "spider", password "*****" '
partition by range( col_a )
(
partition pt1 values less than (100)
comment 'host "192.168.*.*", port "3306"',
partition pt2 values less than (MAXVALUE)
comment 'host "192.168.*.*", port "3306"'
);





[サーバB,C] データノード構築手順

1.ダウンロード
・MySQLを入手する

wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.8-linux2.6-x86_64.tar.gz

2.MySQL利用準備

#MySQL初期設定
groupadd -g 800 mysql
useradd -u 800 -g 800 mysql

chown -R mysql:mysql .
./scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data

mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql

cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld

chkconfig mysqld on
chkconfig --list mysqld

/etc/init.d/mysqld start

##SPIDER用ユーザ作成

mysql> GRANT ALL PRIVILEGES ON *.* TO 'spider'@'%' IDENTIFIED BY '*****';
mysql> flush privileges;

##テーブル作成

mysql> create database spider_test;
mysql> use spider_test;
mysql> Create table tbl_a(
col_a int,
col_b int,
primary key(col_a)
);





---動作確認---

XA START 'xatest';
insert into tbl_a values (1,1);
insert into tbl_a values (2,2);
insert into tbl_a values (101,101);
insert into tbl_a values (201,201);
XA END 'xatest';
XA PREPARE 'xatest';
XA COMMIT 'xatest';


##[サーバA]で確認

mysql> select * from tbl_a;
+-------+-------+
| col_a | col_b |
+-------+-------+
| 1 | 1 |
| 2 | 2 |
| 101 | 101 |
| 201 | 201 |
+-------+-------+

##[サーバB]で確認

mysql> select * from tbl_a;
+-------+-------+
| col_a | col_b |
+-------+-------+
| 1 | 1 |
| 2 | 2 |
+-------+-------+

##[サーバC]で確認

mysql> select * from tbl_a;
+-------+-------+
| col_a | col_b |
+-------+-------+
| 101 | 101 |
| 201 | 201 |
+-------+-------+



スポンサーサイト



執筆中

http://www.sphinxsearch.com/wiki/doku.php?id=sphinx_sphinxse_on_rhel
http://sphinxsearch.com/docs/manual-1.10.html
・コミットごとのバックアップ

svn-backup-dumps.pyを利用する
svnadmin dumpをラッピングしたスクリプトで、設定ファイルやフックスクリプトはバックアップされない。このスクリプトをcommitごとに実行する。

バックアップ用ディレクトリ作成
 mkdir –p /data/svnbackup/incbackup


スクリプトファイルコピー
 cp /home/src/subversion-1.5.0/tools/server-side/svn-backup-dumps.py /usr/bin


post-commitファイル作成
 cd /home/svn/repos/hoge/hooks
vim post-commit
#!/bin/sh

REPOS="$1"
REV="$2"
SVNBACKUPDUMPS=/usr/bin/svn-backup-dumps.py
PATH=$PATH:/usr/bin
PYTHON=/usr/bin/python

# バックアップ先
BACKUPDIR=/home/svnbackup/incbackup

$PYTHON $SVNBACKUPDUMPS -r $REV $REPOS $BACKUPDIR



・日次バックアップ
バックアップ用ディレクトリ作成
 mkdir /data/svnbackup/day


cronでスクリプトを日次実行

cd /etc/cron_daily
vim svn_backup_daily.sh
#! /bin/sh
REPOS=/home/svn/repos/hoge
BACKUPDIR=/data/backup/day
SVNBACKUP=/usr/bin/svn-backup-dumps.py

${SVNBACKUP} –b –c 10 ${REPOS} ${BACKUPDIR}

chmod 755 svn_backup_daily.sh



・週次バックアップ
スクリプトファイル編集
 cp /home/src/subversion-1.5.0/tools/backup/hot-backup.py /usr/bin
vim /usr/bin/hot-backup.py

#56行目付近を編集する(64→4)これはバックアップを残す数
num_backups = int(os.environ.get("SVN_HOTBACKUP_BACKUPS_NUMBER", 4))


cronで以下のスクリプトを週次実行

cd /etc/cron.weekly
vim svn_backup.sh

#! /bin/sh
REPOS=/home/svn/repos/hoge
BACKUPDIR=/data/svnbackup
HOTBACKUP=/usr/bin/hot-backup.py

${HOTBACKUP} ${REPOS} ${BACKUPDIR}

chmod 755 svn_backup.sh


subversionとはソースコードを管理する、バージョン管理システム。

必要なパッケージをインストールする

 yum -y install wget expat-devel zlib-devel libxml2-devel gettext gettext-devel


apacheを取得する
 cd /usr/local/src
wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.16.tar.gz
tar zvxf httpd-2.2.16.tar.gz


aprインストール
 cd /usr/local/src/httpd-2.2.16/srclib/apr
./configure --prefix=/usr/local/apr --enable-threads
make -j2 && make install
cd ..


apr-utilインストール
 cd apr-util
./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr
make -j2 && make install
cd ../../


apacheのインストール
./configure \
--prefix=/usr/local/apache2 \
--enable-mods-shared=most \
--enable-dav \
--enable-dav-fs \
--enable-dav-lock \
--enable-cgi \
--enable-cgid \
--enable-cache\
--enable-mem-cache\
--enable-proxy \
--enable-proxy-blancer\
--enable-rewrite \
--enable-so \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr

make
make install
cd modules/proxy
/usr/local/apache2/bin/apxs -i -c mod_proxy.c proxy_util.c
/usr/local/apache2/bin/apxs -i -c mod_proxy_http.c proxy_util.c
cd


apacheユーザとグループの追加
 groupadd apache
useradd -g apache -s /sbin/nologin apache


conf編集
- apacheユーザとグループの変更
 Vim /usr/local/apache2/conf/httpd.conf
User daemon → User apache
Group daemon → User apache

- モジュールの読み込み設定追記
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so


起動スクリプト設定
 cp /usr/local/src/httpd-2.2.16/build/rpm/httpd.init /etc/rc.d/init.d/httpd
chmod 755 /etc/init.d/httpd
chkconfig --add httpd
chkconfig httpd on


neonインストール
 cd /usr/local/src/
wget http://www.webdav.org/neon/neon-0.29.3.tar.gz
tar zvxf neon-0.29.3.tar.gz
cd neon-0.29.3
./configure --prefix=/usr/local/neon --with-libxml2 --with-expat
make -j2 && make install
echo "/usr/local/neon/lib" >> /etc/ld.so.conf.d/neon.conf
ldconfig
cd ..


swigインストール
 wget http://downloads.sourceforge.net/project/swig/swig/swig-2.0.0/swig-2.0.0.tar.gz
tar xzvf swig-2.0.0.tar.gz
cd swig-2.0.0
./configure --prefix=/usr/local/swig\
--with-python=/usr/local/python-2.5.2/bin/python
make -j2 && make install
echo "/usr/local/swig/lib" >> /etc/ld.so.conf.d/swig.conf
ldconfig
cd ..


subversionインストール
※Ver1.6系の場合はSqLite3.4以上のソースからsqlite3.cを所定のディレクトリにコピーする

 wget http://subversion.tigris.org/downloads/subversion-1.5.0.tar.gz
tar xzvf subversion-1.5.0.tar.gz
cd subversion-1.5.0
./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-neon=/usr/local/neon --with-swig=/usr/local/swig --without-jdk
make -j2 && make install
cd

echo "PATH=$PATH:/usr/local/svn/bin" >> .bashrc
source .bashrc

/etc/init.d/httpd restart


リポジトリの作成
 mkdir -p /home/svn/repos
mkdir /home/svn/repos/hoge
svnadmin create /home/svn/repos/hoge
chown -R apache:apache /home/svn/repos/hoge
chmod -R g+s /home/svn/repos/hoge
echo 'Include conf/extra/httpd-subversion.conf' >>\
/usr/local/apache2/conf/httpd.conf"
vim /usr/local/apache2/conf/extra/httpd-subversion.conf
<Location /svn>
DAV svn
SVNParentPath /home/svn/repos
</Location>
ソースコードをダウンロード

# cd /home/src

MySQL

# wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.45.tar.gz


PBMS BLOB Streaming Daemon for MySQL

# wget http://www.blobstreaming.org/pbms


Streaming enabled PBXT Storage engine for MySQL

# wget http://www.blobstreaming.org/pbxt


PBMS PHP Extension for MySQL and Drizzle

# wget http://www.blobstreaming.org/php


MySQLのインストール

# tar zxvf mysql-5.1.45.tar.gz
# ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=all --enable-thread-safe-client -with-big-tables --with-readline --with-ssl --with-plugins=max-no-ndb --with-embedded-server --enable-local-infile --with-mysql-user=mysql --with-pbms
# make
# make install


PBXTのインストール

# tar zxvf pbxt-1.0.11-6-pre-ga-pbms.tar.gz
# cd pbxt-1.0.11-6-pre-ga-pbms
# ./configure --with-mysql=/home/src/mysql-5.1.45
# make install


DBの初期化

# /usr/local/mysql/bin/mysql_install_db --user=mysql


MySQL領域のパーミッション変更

# chown -R mysql:mysql /usr/local/mysql


confファイルの作成

# cp -p /home/src/mysql-5.1.45/support-files/my-medium.cnf /etc/my.cnf


起動スクリプト作成

# cp -p /home/src/mysql-5.1.45/support-files/mysql.server /etc/init.d/mysql


MySQL自動起動設定

# chkconfig mysql on


MySQL起動

# /etc/init.d/mysql start


.bash_profileのパスの編集

# cd
# vi .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

# source .bash_profile


PBXTプラグインのインストール

# mysql -uroot
mysql> INSTALL PLUGIN PBXT SONAME 'libpbxt.so';


MySQL停止

# /etc/init.d/mysql stop


PBMS BLOB Streaming Daemon for MySQLの展開

# tar zxvf pbms-0.5.15-beta.tar.gz
# cd pbms-0.5.15-beta
# ./configure --with-mysql=/home/src/mysql-5.1.45 --with-debug --with-pbms_port=8080
# make
# make install


MySQL起動

# /etc/init.d/mysql start
# mysql -uroot


PBMSプラグインインストール

mysql> INSTALL PLUGIN PBMS SONAME 'libpbms.so';


インストール確認

mysql> show plugins;

+------------+----------+----------------+------------+---------+
| Name | Status | Type | Library | License |
+------------+----------+----------------+------------+---------+
| PBXT | ACTIVE | STORAGE ENGINE | libpbxt.so | GPL |
| PBMS | ACTIVE | STORAGE ENGINE | libpbms.so | GPL |
+------------+----------+----------------+------------+---------+


上記の2件のプラグインが追加されていれば成功。

参考サイト
blobstreaming
PrimeBase
MySQL で BLOB を扱うためのストレージエンジン "BLOB Streaming Engine"