一台机器的redis 放在 /opt/redis_cluster
快速把新机器装redis
(首先这里面用的db01,db02表示的redis数据库,应该到相应的机子上修改/etc/hosts文件。比如第一台机子,就该加上本机IP db01,第二台机子ip db02。如果不用db01,db02,就用ip表示数据库,就不用配置)
1.首先打包,然后copy过去就行了
2.tar zcvf 自定义名字(比如db1).tar.gz /opt/redis_cluster 这条命令执行后就打包了
3.然后 copy到另外一台机器 命令 scp db1.tar.gz db2:/opt/ 复制到另外一台机器的opt目录下
4. 弹出yes/on 选yes
5.到新的机器,解压文件 tar zxf db01.tar.gz
6.进入 redis 执行 make install命令
7.然后创建数据目录,mkdir /data/redis_cluster/redis_6379/ -p (你conf写的哪个位置就创建在哪)
8.vim /opt/redis_cluster/redis_6379/conf/redis_6379.conf (你的conf写的哪个位置就改哪)
### 以守护线程模式启动
daemonize yes
### 绑定的主机地址
bind 本机的ip
### 监听端口
port 6379
### pid文件和log文件的保存地址
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/log/redis_6379.log
###指定本地持久化文件的文件名,默认是dump.rdb
save 900 1
save 300 10
save 60 10000
dbfilename redis_6379.rdb
### 本地数据库的目录
dir /data/redis_cluster/redis_6379
把本机地址改成新机子的地址就行了
9.启动 ./redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf 然后进入 ./redis-cli -h db02
10.这时第一台机器set值,然后第二台也会有同样的数据了,同步,进入第二台机器的redis,就是./redis-cli -h db02后,输入SLAVEOF db01(或者第一台机子的Ip地址,如果你第一台机子没映射数据库名字,就用IP) 6379 然后返回ok
11.这时第二台如果还是没有数据,ping db01 ping不通,就是/etc/hosts文件里面的路由没有配置,在里面增加 第一台机子的ip db01就行了。如果没用改hosts里面的映射名字,就是用的Ip,那就不会有这个问题
原理就是 1 从库发起同步请求
2主库收到请求后执行bgsave保存当前内存里的数据到磁盘
3 主库将持久化的数据发送给从库的数据目录
4 从库收到主库的持久化数据之后,先清空自己当前内存中的所有数据
5 从库将主库发送过来的持久化文件加载到自己的内存里
集群中的配置文件内容如下
bind 本机IP
port 6380
daemonize yes
pidfile "/opt/redis_cluster/redis_6380/pid/redis_6380.pid"
logfile "/opt/redis_cluster/redis_6380/logs/redis_6380.log"
dbfilename "redis_6380.rdb"
dir "/data/redis_cluster/redis_6380/"
###集群配置
cluster-enabled yes
cluster-config-file nodes_6380.conf
cluster-node-timeout 15000
1.首先创建文件
###创建conf,logs,pid文件
mkdir -p /opt/redis_cluster/redis_{6380,6381}/{conf,logs,pid}
创建日志文件,你conf里面写的dir路径要和这个一样
mkdir -p /data/redis_cluster/redis_{6380,6381}
2.然后创建配置文件,先创建6380的
3.第一台机器上 创建好了第一个配置,然后复制到本机6381上去
cd/opt/redis_cluster
cp redis_6380/conf/redis_6380.conf redis_6381/conf/redis_6381.conf
4.把之前conf文件中的6380改成6381
sed -i 's#6380#6381#g' redis_6381/conf/redis_6381.conf
5.把两个文件传到另外2台服务器上(如果没用hosts映射名字,db2,db3就是机子的ip)
rsync -avz /opt/redis_cluster/redis_638* db2:/opt/redis_cluster/
rsync -avz /opt/redis_cluster/redis_638* db3:/opt/redis_cluster/
6.启动第一台机子的两个redis
./redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
./redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf
7. 命令的意思就是把传过来的两个conf里面的bind 后的ID改成DB2自己的IP地址,这里DB1是10.0.0.51,DB2是10.0.0.52
不会这命令就直接vim编辑更改
DB2的操作 find /opt/redis_cluster/redis_638* -type f -name "*.conf|xargs sed -i "/bind/s#51#52#g"
8.mkdir -p /data/redis-cluster/redis_{6380,6381}
9.启动两个redis,和第6部一样
10.DB3和DB2一样操作
然后用RUBY启动
下载链接:https://pan.baidu.com/s/1kWsf3Rh 密码:n3pc
从这个链接下载 ruby-2.3.1.tar.gz 和
tar -zxvf ruby-2.3.1.tar.gz
a, cd ruby-2.3.1
b, ./configure -prefix=/usr/local/ruby
c, make && make install //过程会有点慢,大概5-10分钟
d, 然后gem install -l redis-3.3.0.gem //若没有gem需要安装yum install gem -y
最后 ./redis-trib.rb create --replicas 1 db1:6380 db1:6381 db2:6380 db2:6381 db3:6380 db3:6381
启动 ./redis-cli -h db1 -p 6380 -c
如果 Linux重启后,redis启动不了,就要删掉aof,pid,dgb文件