ssdb主从及双主模型配置和简单管理
ssdb主從及雙主模型配置和簡單管理
levelDB是一個key->value 的數(shù)據(jù)存儲庫,其只能在本地保存數(shù)據(jù),支持持久化,并且支持保存非常大的數(shù)據(jù),單機(jī)redis在保存較大數(shù)據(jù)的時候數(shù)十G的時候會出現(xiàn)響應(yīng)慢等問題,而單機(jī)levelDB數(shù)據(jù)在150G以內(nèi)的時候依然可以保持比較好的性能,其隨機(jī)寫入key->value的數(shù)據(jù)每秒可達(dá)到40W條,每秒隨機(jī)讀在6W,寫比讀還要快,因此適用于寫操作大于讀操作的場景,并且不支持網(wǎng)絡(luò)傳輸, 即只能本機(jī)訪問數(shù)據(jù),官網(wǎng)地址http://leveldb.org/,國內(nèi)有360基于levelDB開發(fā)支持了網(wǎng)絡(luò)接口的SSDB,SSDB是一個 C/C++ 語言開發(fā)的高性能 NoSQL 數(shù)據(jù)庫, 支持 KV, list, map(hash), zset(sorted set) 等數(shù)據(jù)結(jié)構(gòu), 用來替代或者與 Redis 配合存儲十億級別列表的數(shù)據(jù),SSDB支持100倍與redis的容量,因此宣稱要替換redis,SSDB支持網(wǎng)絡(luò)、支持redis客戶端、支持python/java/go/PHP/C++語言、支持持久化、支持主從復(fù)制、主主復(fù)制和負(fù)載均衡等功能
官方文檔:http://ssdb.io/zh_cn/
安裝文檔:http://ssdb.io/docs/zh_cn/install.html
SSD可以用于保證數(shù)據(jù)不丟失的場景而不是單單的數(shù)據(jù)緩存場景,用了SSDB盡量要每天晚上備份文件目錄,即使做了主從也要對目錄使用其自帶的ssdb-dump工具進(jìn)行備份。
環(huán)境: centos 7.X x86_64
centos6.X系統(tǒng)環(huán)境可能python版本和作者使用的有兼容性問題需要注意
一、ssdb服務(wù)的安裝和配置
1.安裝依賴
?
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?
# 默認(rèn)安裝在 /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.加入啟動項(xiàng)
[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:off5.配置命令路徑
# 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.啟動服務(wù)
[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))?
連接服務(wù)測試
[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?
二、配置主從同步
從服務(wù)器配置:
配置主服務(wù)器的ID、type、host、port即可
replication:binlog: yessync_speed: -1slaveof:id: node1type: synchost: 192.168.3.200port: 8888?
測試在主節(jié)點(diǎn)上添加一個key在從節(jié)點(diǎn)上就可以馬上看到
從服務(wù)器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)主服務(wù)器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 數(shù)據(jù)庫是支持雙主(雙 Master)和多主架構(gòu)的. 而且, 我們的應(yīng)用也是部署雙主架構(gòu), 但當(dāng)作單主來用. 也就是說, 平時只往其中一個寫, 當(dāng)出現(xiàn)故障時, 整體切換到另一個主上面. 如果應(yīng)用層已經(jīng)解決了數(shù)據(jù)拆分, 也即不會兩個節(jié)點(diǎn)同時操作一個 key, 那么就可以放心使用雙主同時寫入.
SSDB 雙主的配置非常簡單:
只需要將 type 設(shè)置為 mirror, 然后每個節(jié)點(diǎn)各指向?qū)Ψ郊纯?
如果是多主, 則每個節(jié)點(diǎn)要指向其它 n-1 個節(jié)點(diǎn).
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?
此時在任意節(jié)點(diǎn)寫入數(shù)據(jù)都會在另外的節(jié)點(diǎn)查詢到
四、監(jiān)控工具的使用
將php文件上傳到/var/www/html/phpssdbadmin目錄
lnmp架構(gòu)的方法
# 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架構(gòu)的方法lamp架構(gòu)的方法
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文件內(nèi)容如下:
# 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,然后重啟服務(wù)器,service httpd restart ,這樣.htaccess就可以使用了
轉(zhuǎn)載于:https://www.cnblogs.com/reblue520/p/6874558.html
總結(jié)
以上是生活随笔為你收集整理的ssdb主从及双主模型配置和简单管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ambari 架构(三)Ambari S
- 下一篇: PHP中的多行字符串传递给JavaScr