zoukankan      html  css  js  c++  java
  • 文件缓存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、登录

  • 相关阅读:
    mysql中explain的type的解释
    MySQL——合并查询结果
    XML fragments parsed from previous mappers already contains value for xxxxx
    XXXX is not in the sudoers file. This incident will be reported解决方法
    Linux htop工具使用详解
    Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest
    使用FindBugs寻找bug,代码分析
    MySQL中怎么对varchar类型排序问题(转)
    Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次(转)
    Apache No installed service named "Apache2.4"的解决办法
  • 原文地址:https://www.cnblogs.com/wuhg/p/11865909.html
Copyright © 2011-2022 走看看