Redis复制为了避免单点故障,我们希望将数据库的数据实时复制到其他服务器上。那么,即使一台服务器出了问题,其他服务器仍然可以提供服务。主数据库(master),从数据库(slave)master是读写的,发生写行为就传给slave。slave是只读的,只接收来自主库同步的
Redis复制 为了避免单点故障,我们希望将数据库的数据实时复制到其他服务器上。那么,即使一台服务器出了问题,其他服务器仍然可以提供服务。 主数据库(master),从数据库(slave) master是读写的,发生写行为就传给slave。slave是只读的,只接收来自主库同步的数据(可以配置成可读写)。主库可以有多个从库,从库只能有一个主库,从库下面还能有从库。从库可以激活成主库。一个软件可以起多个实例,同时起主库与从库也是可以的。 实验: 下面我们模拟一个主机上一套软件起主库,从库。 1.启动从库实例。 使用自定义port覆盖参数文件中的port,并且设置认证密码参数,masterauth参数的作用是使实例如果成为从库时,会用这个密码认证来连到主库获取数据。 nohup redis-server /home/ldh/redis/redis-2.8.3/redis.conf --port 6390 --masterauth pass1234 & 当然,masterauth也可以在redis.conf配置文件中设置 2.登陆从库实例。 从库使用6390的端口,主库使用6389。 redis-cli -p 6390 -a pass1234 3.设置自己为从库,并指定从什么IP与端口接收数据。 127.0.0.1:6390> slaveof 127.0.0.1 6389 OK 此时就配置成功了,主库不用做任何事情。Redis的美在于简洁。slaveof参数也可以在配置文件中先设定。 4.验证 [ldh@hauser redis-2.8.3]$ redis-cli -p 6389 -a pass1234 127.0.0.1:6389> set fwy ppp OK 127.0.0.1:6389> exit [ldh@hauser redis-2.8.3]$ redis-cli -p 6390 -a pass1234 127.0.0.1:6390> get fwy "ppp" 127.0.0.1:6390> 从库不能写了 127.0.0.1:6390> set fwy 1 (error) READONLY You can't write against a read only slave. slave-read-only 设置为no就可以使从库可写,适合保存一些短暂数据,但是主库一旦同步了相应的数据就会覆盖掉从库的。