文件缓存tmpfs + 数据缓存SSDB(一)

一、文件缓存tmpfs

1、特性

1) 基于内存的文件系统,RAW+SWAP,虚拟内存
2) tmpfs使用虚拟内存,/dev/shm/使用共享内存
3) 访问速度快,可以动态调整大小
4) 没有持久性,重启后删除
5) 占用的空间不会在内存清理的时候删除(这点注意)

2、应用场景

1) squid或nginx缓存
2) PHP Session 
3) 存放socket
4) 自定义缓存

3、文件拷贝到/dev/shm目录中,查看内存的变化

# df -Th
  tmpfs tmpfs 912M 0 912M 0% /dev/shm# cp jdk-8u131-linux-x64.gz /dev/shm
# df -Th
  tmpfs tmpfs 912M 177M 735M 20% /dev/shm
# free -m
# rm -f /dev/shm/jdk-8u131-linux-x64.gz 
# free -m

4、创建文件,并划分为tmpfs文件系统

# mkdir /mnt/data
# mount -t tmpfs tepfs /mnt/data/# df -h
  tmpfs 912M 0 912M 0% /mnt/data

5、指定tmpfs文件系统大小为50M

# mkdir /mnt/data1
# mount -t tmpfs -o size=50m tmpfs /mnt/data1
# df -h
  tmpfs 50M 0 50M 0% /mnt/data1

6、重新设置tmpfs文件系统大小为100M

# mount -o remount,size=100m /mnt/data
# df -h
  tmpfs 100M 0 100M 0% /mnt/data

7、永久生效

# vim /etc/fstab
  tempfs /mnt/data tmpfs size=50M 0 0

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

1、介绍

1、levelDB是key->value数据库,只能本地保存数据,支持持久化,支持保存非常大的数据,官网地址http://leveldb.org
单机redis保存10G数据时,会出现响应慢,单机levelDB,保存150G以内数据,依然保持良好的性能,
随机写入数据,每秒40W条,随机读,每秒6W,适合写入多的场景,不支持网络传输,只能本机访问数据

2、SSDB是levelDB的网络实现,存储大数据比redis更加稳定
官方文档:http://ssdb.io/zh_cn/
安装文档:http://ssdb.io/docs/zh_cn/install.html

3、国内360基于levelDB开发支持网络接口的SSDB,C/C++语言开发高性能NoSQL数据库,
支持KV,list,map(hash),zset(sorted set)等,SSDB支持网络、支持redis客户端、
支持python/java/go/PHP/C++语言、支持持久化、支持主从复制、主主复制和负载均衡等功能
即使有主从,每天也要备份文件目录,备份工具: ssdb-dump

2、ssdb服务的安装和配置

1、安装依赖
# yum install -y jemalloc-devel autoconf

2、下载安装包并编译
# wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
# unzip master.zip
# cd ssdb-master/
# make && make install                                  #默认安装/usr/local/ssdb 

3、修改启动脚本
# cp tools/ssdb.sh /etc/init.d/ssdb
# vim /etc/init.d/ssdb
  configs="/usr/local/ssdb/ssdb.conf"

4、加入启动项
# chkconfig --add ssdb
# chkconfig ssdb on
# chkconfig --list ssdb

5、配置命令路径
# vim /etc/profile
  PATH=$PATH:/usr/local/ssdb
  export PATH
# source /etc/profile

6、修改配置文件
# vim /usr/local/ssdb/ssdb.conf
  server:
  ip: 192.168.3.200
  port: 8888

7、启动服务
# /etc/init.d/ssdb start
# ss -tnlp|grep 8888

8、 测试
# ssdb-cli -h 192.168.3.200 -p 8888> set name jack> set age 18> get name

 

3、配置主从同步

① 从服务器配置

配置主服务器的ID、type、host、port
# vim /usr/local/ssdb/ssdb.conf replication: binlog: yes sync_speed:
-1 slaveof: id: node1 #配置主的id type: sync #同步方式 host: 192.168.3.200 #主的ip port: 8888

② 从服务器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)

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

1、介绍
SSDB数据库支持双主和多主,但当作单主来用,只能单写,将type改为mirror,然后每个节点指向对方

2、node1的配置
# vim /usr/local/ssdb/ssdb.conf
  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
                  
3、node2的配置
# vim /usr/local/ssdb/ssdb.conf
  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
                  
4、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

5、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

 

5、监控工具的使用

php文件上传到 /var/www/html/phpssdbadmin 目录
1、lnmp架构的方法
# yum -y install php php-mysql nginx php-gd* php-mcrypt
# vim  /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;
  }
  
2、lamp架构的方法
# yum install -y httpd php php-gd*
# vim /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>   
# cat phpssdbadmin/.htaccess                            #.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>  

3、登录

原文地址:https://www.cnblogs.com/wuhg/p/11865909.html