文件缓存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、登录
QQ:328864113 微信:wuhg2008