ssdb主從及雙主模型配置和簡單管理

ssdb主從及雙主模型配置和簡單管理php

levelDB是一個key->value 的數據存儲庫,其只能在本地保存數據,支持持久化,而且支持保存很是大的數據,單機redis在保存較大數據的時候數十G的時候會出現響應慢等問題,而單機levelDB數據在150G之內的時候依然能夠保持比較好的性能,其隨機寫入key->value的數據每秒可達到40W條,每秒隨機讀在6W,寫比讀還要快,所以適用於寫操做大於讀操做的場景,而且不支持網絡傳輸, 即只能本機訪問數據,官網地址http://leveldb.org/,國內有360基於levelDB開發支持了網絡接口的SSDB,SSDB是一個 C/C++ 語言開發的高性能 NoSQL 數據庫, 支持 KV, list, map(hash), zset(sorted set) 等數據結構, 用來替代或者與 Redis 配合存儲十億級別列表的數據,SSDB支持100倍與redis的容量,所以宣稱要替換redis,SSDB支持網絡、支持redis客戶端、支持python/java/go/PHP/C++語言、支持持久化、支持主從複製、主主複製和負載均衡等功能html

官方文檔:http://ssdb.io/zh_cn/
安裝文檔:http://ssdb.io/docs/zh_cn/install.htmljava

SSD能夠用於保證數據不丟失的場景而不是單單的數據緩存場景,用了SSDB儘可能要天天晚上備份文件目錄,即便作了主從也要對目錄使用其自帶的ssdb-dump工具進行備份。node


環境: centos 7.X x86_64python

centos6.X系統環境可能python版本和做者使用的有兼容性問題須要注意mysql

1、ssdb服務的安裝和配置
1.安裝依賴nginx

# yum install -y jemalloc-devel autoconf

 

2.下載安裝包並編譯git

# cd /usr/local/src
# wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
# unzip master.zip
[root@node2 src]# cd ssdb-master/
[root@node2 ssdb-master]# make

 

# 默認安裝在 /usr/local/ssdb 目錄下github

[root@node2 ssdb-master]# make install

 

3.修改啓動腳本redis

[root@node2 ssdb-master]# cp tools/ssdb.sh /etc/init.d/ssdb

[root@node2 ssdb-master]# vim /etc/init.d/ssdb
configs="/usr/local/ssdb/ssdb.conf"

4.加入啓動項

[root@node2 src]# chkconfig --add ssdb
[root@node2 src]# chkconfig ssdb on
[root@node2 src]# chkconfig --list ssdb
ssdb 0:off    1:off    2:on    3:on    4:on    5:on    6:off

5.配置命令路徑

# vim /etc/profile

PATH=$PATH:/usr/local/ssdb
export PATH

# source /etc/profile

 

5.修改配置文件

# vim /usr/local/ssdb/ssdb.conf
server:
ip: 192.168.3.200
port: 8888

 

6.啓動服務

[root@node2 ssdb-master]# /etc/init.d/ssdb start
Reloading systemd: [ OK ]
Starting ssdb (via systemctl): [ OK ]

[root@node2 ssdb-master]# ss -tnlp|grep 8888
LISTEN 0 128 192.168.3.200:8888 *:* users:(("ssdb-server",pid=47357,fd=13))

 

鏈接服務測試

[root@node2 ssdb-master]# ssdb-cli -h 192.168.3.200 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io

'h' or 'help' for help, 'q' to quit.

ssdb-server 1.9.4

ssdb 192.168.3.200:8888> set name jack
ok
(0.001 sec)
ssdb 192.168.3.200:8888> set age 18
ok
(0.001 sec)
ssdb 192.168.3.200:8888> get name
jack

 

2、配置主從同步

從服務器配置:

配置主服務器的ID、type、host、port便可

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
                id: node1
                type: sync
                host: 192.168.3.200
                port: 8888

 

測試在主節點上添加一個key在從節點上就能夠立刻看到

從服務器info信息

ssdb 192.168.3.198:8888> info
version
    1.9.4
links
    1
total_calls
    9
dbsize
    0
binlogs
        capacity : 20000000
        min_seq  : 0
        max_seq  : 4
replication
    slaveof 192.168.3.200:8888
        id         : node1
        type       : sync
        status     : SYNC
        last_seq   : 3
        copy_count : 3
        sync_count : 0
serv_key_range
        kv  : "" - ""
        hash: "" - ""
        zset: "" - ""
        list: "" - ""
data_key_range
        kv  : "address" - "salary"
        hash: "" - ""
        zset: "" - ""
        list: "" - ""
leveldb.stats
                                   Compactions
    Level  Files Size(MB) Time(sec) Read(MB) Write(MB)

主服務器info信息

ssdb 192.168.3.200:8888> info
version
1.9.4
links
1
total_calls
12
dbsize
0
binlogs
capacity : 20000000
min_seq : 0
max_seq : 3
replication
client 192.168.3.198:57714
type : sync
status : SYNC
last_seq : 3
serv_key_range
kv : "" - ""
hash: "" - ""
zset: "" - ""
list: "" - ""
data_key_range
kv : "address" - "name"
hash: "" - ""
zset: "" - ""
list: "" - ""
leveldb.stats
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)

 

2、配置雙主同步(主要是高可用)


SSDB 數據庫是支持雙主(雙 Master)和多主架構的. 並且, 咱們的應用也是部署雙主架構, 但看成單主來用. 也就是說, 平時只往其中一個寫, 當出現故障時, 總體切換到另外一個主上面. 若是應用層已經解決了數據拆分, 也即不會兩個節點同時操做一個 key, 那麼就能夠放心使用雙主同時寫入.

SSDB 雙主的配置很是簡單:
只須要將 type 設置爲 mirror, 而後每一個節點各指向對方便可.
若是是多主, 則每一個節點要指向其它 n-1 個節點.

node1中的配置信息:

server:
        ip: 192.168.3.200
        port: 8888

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
                id: node2
                type: mirror
                host: 192.168.3.198
                port: 8888

 

node2中的配置信息:

server:
        ip: 192.168.3.198
        port: 8888

replication:
        binlog: yes
        sync_speed: -1
        slaveof:
                id: node1
                type: mirror
                host: 192.168.3.200
                port: 8888

 

node1中的info信息:

ssdb 192.168.3.200:8888> info
version
    1.9.4
links
    1
total_calls
    1
dbsize
    273
binlogs
        capacity : 20000000
        min_seq  : 1
        max_seq  : 71
replication
    client 192.168.3.198:57724
        type     : mirror
        status   : SYNC
        last_seq : 71
replication
    slaveof 192.168.3.198:8888
        id         : node2
        type       : mirror
        status     : SYNC
        last_seq   : 68
        copy_count : 4
        sync_count : 64
serv_key_range
        kv  : "" - ""
        hash: "" - ""
        zset: "" - ""
        list: "" - ""
data_key_range
        kv  : "address" - "salary"
        hash: "" - ""
        zset: "" - ""
        list: "" - ""
leveldb.stats
                                   Compactions
    Level  Files Size(MB) Time(sec) Read(MB) Write(MB)
    --------------------------------------------------
      0        1        0         0        0         0

 

node2中的info信息:

ssdb 192.168.3.198:8888> info
version
    1.9.4
links
    1
total_calls
    6
dbsize
    1690
binlogs
        capacity : 20000000
        min_seq  : 1
        max_seq  : 69
replication
    client 192.168.3.200:46991
        type     : mirror
        status   : SYNC
        last_seq : 69
replication
    slaveof 192.168.3.200:8888
        id         : node1
        type       : mirror
        status     : SYNC
        last_seq   : 72
        copy_count : 0
        sync_count : 0
serv_key_range
        kv  : "" - ""
        hash: "" - ""
        zset: "" - ""
        list: "" - ""
data_key_range
        kv  : "address" - "salary"
        hash: "" - ""
        zset: "" - ""
        list: "" - ""
leveldb.stats
                                   Compactions
    Level  Files Size(MB) Time(sec) Read(MB) Write(MB)
    --------------------------------------------------
      0        1        0         0        0         0

 

此時在任意節點寫入數據都會在另外的節點查詢到

4、監控工具的使用

將php文件上傳到/var/www/html/phpssdbadmin目錄

lnmp架構的方法

# yum -y install php php-mysql nginx php-gd* php-mcrypt

修改/etc/nginx/nginx.conf

location /phpssdbadmin {
try_files $uri $uri/ /phpssdbadmin/index.php?$args;
}
index index.php;
root /var/www/html;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

lamp架構的方法

lamp架構的方法

yum install -y httpd php php-gd*

編輯/etc/httpd/conf/httpd.conf

打開rewrite模塊

LoadModule rewrite_module modules/mod_rewrite.so

DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride All # 修改成All
</Directory>

<Directory "/var/www/html"> 
Order allow,deny
Allow from all
AllowOverride All # 改成all
</Directory>

 

在根目錄下簡歷.htaccess文件內容以下:

# cat phpssdbadmin/.htaccess 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /var/www/html/phpssdbadmin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /phpssdbadmin/index.php [L]
</IfModule>

 

OK,而後重啓服務器,service httpd restart ,這樣.htaccess就可使用了

相關文章
相關標籤/搜索