ssdb主从及双主模型配置和简单管理

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++语言、支持持久化、支持主从复制、主主复制和负载均衡等功能

官方文档:http://ssdb.io/zh_cn/
安装文档:http://ssdb.io/docs/zh_cn/install.html

SSD可以用于保证数据不丢失的场景而不是单单的数据缓存场景,用了SSDB尽量要每天晚上备份文件目录,即使做了主从也要对目录使用其自带的ssdb-dump工具进行备份。

环境: centos 7.X x86_64

centos6.X系统环境可能python版本和作者使用的有兼容性问题需要注意

一、ssdb服务的安装和配置
1.安装依赖

# yum install -y jemalloc-devel autoconf

2.下载安装包并编译

# 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 目录下

[root@node2 ssdb-master]# make install

3.修改启动脚本

[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/profilePATH=$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.4ssdb 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

二、配置主从同步

从服务器配置:

配置主服务器的ID、type、host、port即可

replication:binlog: yessync_speed: -1slaveof:id: node1type: synchost: 192.168.3.200port: 8888

测试在主节点上添加一个key在从节点上就可以马上看到

从服务器info信息

ssdb 192.168.3.198:8888> info
version1.9.4
links1
total_calls9
dbsize0
binlogscapacity : 20000000min_seq  : 0max_seq  : 4
replicationslaveof 192.168.3.200:8888id         : node1type       : syncstatus     : SYNClast_seq   : 3copy_count : 3sync_count : 0
serv_key_rangekv  : "" - ""hash: "" - ""zset: "" - ""list: "" - ""
data_key_rangekv  : "address" - "salary"hash: "" - ""zset: "" - ""list: "" - ""
leveldb.statsCompactionsLevel  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)

二、配置双主同步(主要是高可用)


SSDB 数据库是支持双主(双 Master)和多主架构的. 而且, 我们的应用也是部署双主架构, 但当作单主来用. 也就是说, 平时只往其中一个写, 当出现故障时, 整体切换到另一个主上面. 如果应用层已经解决了数据拆分, 也即不会两个节点同时操作一个 key, 那么就可以放心使用双主同时写入.

SSDB 双主的配置非常简单:
只需要将 type 设置为 mirror, 然后每个节点各指向对方即可.
如果是多主, 则每个节点要指向其它 n-1 个节点.

node1中的配置信息:

server:ip: 192.168.3.200port: 8888replication:binlog: yessync_speed: -1slaveof:id: node2type: mirrorhost: 192.168.3.198port: 8888

node2中的配置信息:

server:ip: 192.168.3.198port: 8888replication:binlog: yessync_speed: -1slaveof:id: node1type: mirrorhost: 192.168.3.200port: 8888

node1中的info信息:

ssdb 192.168.3.200:8888> info
version1.9.4
links1
total_calls1
dbsize273
binlogscapacity : 20000000min_seq  : 1max_seq  : 71
replicationclient 192.168.3.198:57724type     : mirrorstatus   : SYNClast_seq : 71
replicationslaveof 192.168.3.198:8888id         : node2type       : mirrorstatus     : SYNClast_seq   : 68copy_count : 4sync_count : 64
serv_key_rangekv  : "" - ""hash: "" - ""zset: "" - ""list: "" - ""
data_key_rangekv  : "address" - "salary"hash: "" - ""zset: "" - ""list: "" - ""
leveldb.statsCompactionsLevel  Files Size(MB) Time(sec) Read(MB) Write(MB)--------------------------------------------------0        1        0         0        0         0

node2中的info信息:

ssdb 192.168.3.198:8888> info
version1.9.4
links1
total_calls6
dbsize1690
binlogscapacity : 20000000min_seq  : 1max_seq  : 69
replicationclient 192.168.3.200:46991type     : mirrorstatus   : SYNClast_seq : 69
replicationslaveof 192.168.3.200:8888id         : node1type       : mirrorstatus     : SYNClast_seq   : 72copy_count : 0sync_count : 0
serv_key_rangekv  : "" - ""hash: "" - ""zset: "" - ""list: "" - ""
data_key_rangekv  : "address" - "salary"hash: "" - ""zset: "" - ""list: "" - ""
leveldb.statsCompactionsLevel  Files Size(MB) Time(sec) Read(MB) Write(MB)--------------------------------------------------0        1        0         0        0         0

此时在任意节点写入数据都会在另外的节点查询到

四、监控工具的使用

将php文件上传到/var/www/html/phpssdbadmin目录

lnmp架构的方法

# yum -y install php php-mysql nginx php-gd* php-mcrypt修改/etc/nginx/nginx.conflocation /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.soDocumentRoot "/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就可以使用了

转载于:https://www.cnblogs.com/reblue520/p/6874558.html

ssdb主从及双主模型配置和简单管理相关推荐

  1. 基于keepalived实现haproxy高可用的双主模型配置

      Keepalived会主动检测web服务器,把有故障的服务器从系统中剔除,在服务器修复以后会重新加入到服务器群众,不影响服务器的正常工作 VRRP:虚拟路由冗余协议   它把一个虚拟路由器的责任动 ...

  2. linux mysql互为主从_mysql互为主从配置(双主模型)

    一.A.B双主模型的实现条件: 1. 开启二进制日志 2. 开启中继日志 3. 解决自动增长列的问题 如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,编 ...

  3. 基于heartbeat v1配置mysql和httpd的高可用双主模型

    一.配置高可用集群的前提:(以两节点的heartbeat为例) ⑴时间必须保持同步 ⑵节点之间必须用名称互相通信 建议使用/etc/hosts,而不要用DNS 集群中使用的主机名为`uname -n` ...

  4. Mariadb互为主从(双主模式)配置

    前言 这段时间 一直在Cloudera Manager集群上配置高可用的Mariadb服务.今天花一点记录一下自己的配置过程 希望后续的读者看到后 在遇到相同业务需求时具有参考价值. 以往我们在配置M ...

  5. keepalived + haproxy 实现web 双主模型的高可用负载均衡--转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xz159065974.blog.51cto.com/8618592/140581 ...

  6. 构建高可用LVS + keepalived+httpd和双主模型的keepalived方案

    ↑构建高可用LVS + keepalived+httpd和双主模型的keepalived方案↑ 标签:web服务器 拓扑图 模型 检测 软件 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始 ...

  7. 主nginx linux,Linux-实现双主模型的nginx的高可用

    1 [root@234c17 ~]# for i in {1..4};do curl www.a.com;curl www.b.com;sleep 1;done 2 234.57 3 234.77 4 ...

  8. 2、Keepalived提供日志与双主模型演示

    Keepalived实例演示: 利用keepalived流动一个VIP,在提供LVS的高可用以及实现对LVS后端的real server做健康状态检测,最后实现高可用nginx. HA Cluster ...

  9. keepalived实现nginx的高可用(双主模型)

    实验环境: RS1:rip(172.16.125.7),安装httpd软件包: RS2:rip(172.16.125.8),安装httpd软件包: director1(7-1.lcs.com):vip ...

最新文章

  1. 美国科学院2020新晋院士名单发布!中科院曹晓风及6位华人学者入选,去年还有高福和颜宁...
  2. ai3中文语音补丁_NS 暗黑破坏神3 中文补丁今日上线!刷起来
  3. PW Live直播 | 清华大学​高天宇:对比学习及其在NLP中的应用
  4. A1032. 画三角形2
  5. 11条建议让你成为优秀的JavaScript程序员
  6. 骁龙855加持!OPPO Reno正面照揭晓:边框窄得吓人
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的毕业论文设计管理系统
  8. beeline执行sql文件_【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL...
  9. 算法——动态规划算法求解字符串的编辑距离
  10. 页面自适应纯CSS,使用rem单位
  11. matplotlib绘制横向柱状图
  12. Linux安装 deb包命令
  13. 对DllRegisterServer的调用失败,错误代码为0x80020009
  14. 【原创】Python 网易易盾滑块验证
  15. 我的团长我的团第十七集
  16. 天津大学计算机专硕_天津大学计算机复试攻略
  17. Rimworld Mod教程 第一章:这可能是你见过的最细的MOD教程了
  18. 深度学习分类分到同一个类
  19. gsoap 调用 java_Qt5 + gSOAP 调用 Webservice
  20. “菜单”(menubar)和“工具栏”(toolbars)

热门文章

  1. LaTeX输入单个点、横向多个点、竖向多个点、斜向多个点
  2. 美团O2O排序解决方案——线下篇
  3. Stanford UFLDL教程 数据预处理
  4. 横空出世,席卷互联网--评微软等公司数据结构+算法面试100题
  5. saltstack安装
  6. 006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories
  7. APACHE如何里一个站点绑定多个域名?用ServerAlias
  8. eclipse中更改配置使得switch语句不出错
  9. c#学习笔记之第一个程序“Hello world”
  10. opengl 教程(21) 聚光灯