Сборка и установка MemcacheDB на CentOS 5.5

Коротко о МемкешДБ
Это персистентное расширяемое неSQL хранилище. Т.е. простым языком хранилище данных ключ-значение с очень хорошей скоростью записи и отдачи для высоконагруженных проектов. PDF с презентацией этой бд, которую я настоятельно рекомендую пролистать всем.


Дополнительно

MemcacheDB -- очень быстрая не реляционная БД (основана на ключах), имеющая поддержку транзакций, репликаций, а также имеющая универсальный АПИ (как раз от Memcached`а). Эта БД нужна там, где скорости MySQL / PostgreSQL недостаточно, а их функций предостаточно. По заявлениям разработчиков, скорость записи в MemcacheDB может достигать 20 000 записей в секунду, а чтения -- до 50 000 записей / секунду (на машинке Dell 2950III); очень не плохо для такой железки?

Авторы

Официальный сайт этой БД: http://memcachedb.org/

Установка

Устанавливаем стабильную 1.2.0 версию.
Качаем вот отсюда http://code.google.com/p/memcachedb/downloads/list

Зависимости
Перед распаковкой архива с мемкешдб следует сделать некоторые приготовления и установить зависимости:

Berkeley DB 4.7 или более поздняя (в репах центоса такой нету, поэтому собираем ручками), у меня были попытки собрать db4-4.7+ для CentOS 5.5 пакетом, долго собирал TCL(как зависимость), потом нашел spec-файл для db4-4.7, собрал пакет, но к сожалению установить его у Вас по стандартному пути не получится, т.к. половина пакетов CentOS 5.5 зависят от db4 старой версии, обновить у меня не получилось тоже. По-этому включаем "режим SlackWare" и продолжаем...

Качаем DB4-4.7+ вот отсюда http://www.oracle.com/database/berkeley-db/db/index.html

Устанавливаем БерклиДБ 4.7+ на CentOS 5.5

$tar xvzf db-4.7.25.tar.gz
$cd db-4.7.25/
$cd build_unix/
$../dist/configure --prefix=/opt/bdb47 //или любая другая папка, т.к. по стандартному пути нельзя, читаем выше.
$make
$sudo make install


Далее разработчики говорят о зависимости libevent 1.3e или позднее, слава богу, данная зависимость присутствует в стандартном репозитории, поэтому опускаем данный момент:

yum install libevent libevent-devel


Для людей которые привыкли работать со включенным "режимом SlackWare", без возможности отключения или более старых дистрибутивов.

Качаем отсюда http://monkey.org/~provos/libevent/

Устанавливаем libevent
Сразу оговоримся о путях установки, лучше сделать путь отличный от стандартного, т.к. можете затереть уже существующие библиотеки, что может сказаться пагубно на здоровье системы в целом. См. строку конфигурирования.

$tar xvzf libevent-1.3e.tar.gz
$cd libevent-1.3e
$./configure --prefix=/opt/livevent13e
$make
$sudo make install


Теперь создадим файлик в /etc/ld.so.conf.d (у кого такого файла нету, пишем напрямую в конфиг /etc/ld.so.conf):

со следующим содержанием (В случае со стандартным libevent, только вторая строка):
$ cat /etc/ld.so.conf.d/memcachedb

/opt/livevent13e/lib
/opt/bdb47/lib


Запускаем 'ldconfig', для применения изменений.

Установка самого Memcachedb-1.2.0 на CentOS 5.5.

$tar xvzf memcachedb-1.2.0.tar.gz
$cd memcachedb-1.2.0
$./configure --enable-threads --prefix=/usr --with-libevent=/opt/livevent13e --with-bdb=/opt/bdb47 
$make
$sudo make install


Ну вот и всё.

Читаем хелп - memcachedb -h.

1. Запуск Memcachedb в режиме одиночного демона:

memcachedb -p 21201 -d -r -H /data1/21201 -N -v >/data1/21201.log 2>&1

2. Запуск Memcachedb в режиме группы репликаций:

Запуск мастера (read&write):

memcachedb -p21201 -d -r -H /data1/21201 -N -R 127.0.0.1:31201 -M -n 2 -v >/data1/21201.log 2>&1


Запуск реплики (read-only):

memcachedb -p21202 -d -r -H /data1/21202 -N -R 127.0.0.1:31202 -O 127.0.0.1:31201 -S -n 2 -v >/data1/21202.log 2>&1


Cheerz...

P.S. У меня строка запуска получилась следующей:

/usr/bin/memcachedb -d -p 21201 -m 64 -c 1024 -u memcachedb -P /var/run/memcachedb/memcachedb.pid -A 16384 -C 300 -H /mnt/disk_for_memcached -f data.db


p.p.s: Набросал что-то типа ран-скрипта =)

#! /bin/sh
#
# chkconfig: - 56 44
# description:  The memcachedb key value.
# processname: memcachedb
# config: /etc/sysconfig/memcachedb
# pidfile: /var/run/memcachedb/memcachedb.pid

# Standard LSB functions
#. /lib/lsb/init-functions

# Source function library.
. /etc/init.d/functions

MEMCACHEDB_BINARY="/usr/bin/memcachedb"

#in-memmory cache size of BerkeleyDB in megabytes, default is 64MB
#64MB is default
BDB_CACHE_SIZE="64"

#underlying page size in bytes, default is 4096, (512B ~ 64KB, power-of-two)
PAGE_SIZE="16384"

#User to run as
MEMCACHEDB_RUNAS="memcachedb"

#Specify maximum number of concurrent connections
#1024 is default
MAXCONN="1024"

#Listen for connections on what address?
# If this is empty, memcachedb will listen on 0.0.0.0
# be sure you have a firewall in place!
LISTENON=""

#Listen for connections on what port?
PORT="21201"

#do checkpoint every  seconds, 0 for disable, default is 5 minutes
CHECKPOINT_PERIOD="300"

#PID file location
# '-${PORT}.${CONF}.pid' will be appended to this!
# You do not normally need to change this.
PIDBASE="/var/run/memcachedb/memcachedb"

#DB file location
# 'memcachedb-${CONF}.db' will be appended to this!
# Make sure that different instances have different DB folders
DBBASE="/mnt/sdd1/memcachedb"

#Other Options
#refer to "memcachedb -h" for replication options
MISC_OPTS=""

# Check that networking is up.
. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
then
        exit 0
fi


PIDFILE="${PIDBASE}.pid"
DBFILE="data.db"
CONFSRC="${CONFBASE}"


start() {
	/usr/bin/memcachedb -d -p 21201 -m 64 -c 1024 -u memcachedb -P /var/run/memcachedb/memcachedb.pid -A 16384 -C 300 -H /mnt/sdd1/memcachedb -f data.db
        exit $?
}

stop() {
        kill -9 `cat /var/run/memcachedb/memcachedb.pid`
        rm -f "/var/run/memcachedb/memcachedb.pid"
        exit $?
}

restart() {
        stop
        start
}


# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload|force-reload)
        restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|force-reload}"
        exit 1
esac

exit $?





Вас также может заинтересовать:

Установка Centos 6
Установка GeoIP (Centos, Red Hat)
Установка 1C 8.2 под PostgreSQL на CentOS 6.3
Установка GitWeb на Centos 5.5
Установка PHP-SQLite в CentOS из SRC-RPM
Удаленная установка CentOS или Fedora