7.主从复制,支持双主(双master)和多主架构, 负载均衡
8.图形化管理工具(phpssdbadmin)
架构图:
SSDB 具有和 Redis 相似的 API,持的客户端包括: PHP, C++, Python, Java, Lua, Ruby,Nodejs,Go,etc。
官网地址:http://ssdb.io/一、SSDB与Redis比较
二、安装部署
SSDB不仅仅支持主从,主主模式,还支持多主模式,下面我们以主主的模式演示一下SSDB的安装和使用。
环境:
192.168.36.54:8888
192.168.36.189:8888
1.安装
mkdir /home/slim/ssdb
wget https://github.com/ideawu/ssdb/archive/master.zip
unzip master
cd ssdb-master
make PREFIX=/home/slim/ssdb
make PREFIX=/home/slim/ssdb install
2.配置
SSDB 的配置文件是一种层级 key-value 的静态配置文件, 通过一个 TAB 缩进来表示层级关系. 以 '#' 号开始的行是注释。
# ssdb-server config # MUST indent by TAB! # relative to path of this file, directory must exists work_dir = ./var pidfile = ./var/ssdb.pid server: ip: 192.168.36.54 port: 8888 # bind to public ip #ip: 0.0.0.0 # format: allow|deny: all|ip_prefix # multiple allows or denys is supported #deny: all #allow: 127.0.0.1 #allow: 192.168 # auth password must be at least 32 characters #auth: very-strong-password replication: binlog: yes # Limit sync speed to *MB/s, -1: no limit sync_speed: -1 slaveof: # to identify a master even if it moved(ip, port changed) # if set to empty or not defined, ip:port will be used. id: svc_1 # sync|mirror, default is sync type: mirror ip: 192.168.36.189 port: 8888 logger: level: debug output: log.txt rotate: size: 1000000000 leveldb: # in MB cache_size: 500 # in KB block_size: 32 # in MB write_buffer_size: 64 # in MB compaction_speed: 1000 # yes|no compression: yes另一台机器配置类似。配置说如下:
work_dir: ssdb-server 的工作目录, 启动后, 会在这个目录下生成 data 和 meta 两个目录, 用来保存 LevelDB 的数据库文件. 这个目录是相对于 ssdb.conf 的相对路径, 也可以指定绝对路径。
server: ip 和 port 指定了服务器要监听的 IP 和端口号. 如果 ip 是 0.0.0.0, 则表示绑定所有的 IP. 基于安全考虑, 可以将 ip 设置为 127.0.0.1, 这样, 只有本机可以访问了.如果要做更严格的更多的网络安全限制, 就需要依赖操作系统的 iptables。
replication: 用于指定主从同步复制. slaveof.ip, slaveof.port 表示, 本台 SSDB 服务器将从这个目标机上同步数据(也即这个配置文件对应的服务器是 slave). 你可以参考 ssdb_slave.conf 的配制。
logger: 配置日志记录. level 是日志的级别, 可以是 trace|debug|info|error. output 是日志文件的名字, SSDB 支持日志轮转, 在日志文件达到一定大小后, 将 log.txt 改名, 然后创建一个新的 log.txt。
leveldb: 配置 LevelDB 的参数. 你一般想要修改的是 cache_size 参数, 用于指定缓存大小. 适当的缓存可以提高读性能, 但是过大的缓存会影响写性能。
启动:./ssdb-server -d ssdb.conf
关闭:./ssdb-server ssdb.conf -s stop
ssdb-server命令说明:
./ssdb-server -h ssdb-server 1.9.0 Copyright (c) 2012-2015 ssdb.io Usage: ./ssdb-server [-d] /path/to/ssdb.conf [-s start|stop|restart] Options: -d run as daemon -s option to start|stop|restart the server -h show this message三、ssdb客户端工具使用
./ssdb-cli -h 192.168.36.189 -p 8888 ssdb 192.168.36.189:8888> set key abc ok (0.002 sec) ssdb 192.168.36.189:8888> get key abc (0.001 sec)测试一下分别在两台机器添加数据,都可以正常同步。
ssdb-cli命令说明:
ssdb 192.168.36.189:8888> help # display ssdb-server status info # escape/do not escape response data : escape yes|no # export/import export [-i] out_file -i interactive mode import in_file see http://ssdb.io/docs/php/ for commands detailsinfo:返回状态消息
escape:对命令返回数据进行编码
export/import:导入导出数据
四、ssdb服务监控
info 命令返回的信息
ssdb 192.168.36.189:8888> info version 1.9.0 links 1 total_calls 6 dbsize 0 binlogs capacity : 10000000 min_seq : 0 max_seq : 2 replication client 192.168.36.54:55472 type : mirror status : SYNC last_seq : 2 replication slaveof 192.168.36.54:8888 id : svc_1 type : mirror status : SYNC last_seq : 2 copy_count : 0 sync_count : 1 serv_key_range kv : "" - "" hash: "" - "" zset: "" - "" list: "" - "" data_key_range kv : "key" - "xxx" hash: "" - "" zset: "" - "" list: "" - "" leveldb.stats Compactions Level Files Size(MB) Time(sec) Read(MB) Write(MB) -------------------------------------------------- 21 result(s) (0.002 sec)1.binlogs
注意:
1.一般, 建议你将 logger.level 设置为 debug 级别。详情参考:日志解读
2.利用配置文件的 deny, allow 指令限制可信的来源 IP 访问,提高服务的安全。
3.SSDB 的配置文件使用一个 TAB 来表示一级缩进, 不要使用空格来缩进, 无论你用2个, 3个, 4个, 或者无数个空格都不行!
4.一定要记得修改你的 Linux 内核参数, 关于 max open files(最大文件描述符数)的内容,详情参考:构建C1000K的服务器