宗小宗-PHP程序猿

欢迎各位朋友前来,如果我的文章中有不对的地方,还望指正;如需转载,请注明原处

Redis 从数据库配置

通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失。为了避免单点故障,我们希望将数据库复制多个副本以部署在不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。这就要求当一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上,Redis提供了复制(replication)功能可以自动实现同步的过程。

配置方法
  • 通过配置文件 从数据库的配置文件中加入slaveof master-ip master-port,主数据库无需配置

  • 通过命令行参数 启动redis-server的时候,使用命令行参数--slaveof master-ip master-port

    redis-server --port 6380 --slaveof 127.0.0.1 6379
  • 通过命令SLAVEOF master-ip master-port

    redis>SLAVEOF 127.0.0.1 6379

    SLAVEOF NO ONE可以使当前数据库停止接收其他数据库的同步,转成主数据库


 

 

redis主从复制

    redis主从复制的特点:

     1.一个master可以拥有多个slave

     2.多个slave可以连接同一个master外,还可以连接到其它slave

     3.主从复制不会阻塞master,在同步数据时,master可以继续处理client的请求

     4.提高系统的伸缩性

    redis主从复制过程:

     1.slave与master建立连接,发送sync同步命令

     2.master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令

       并缓存。

     3.后台完成保存后,就将此文件发送给slave

     4.slave将此文件保存到硬盘上

    配置主从服务器:

     配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:

       slaveof 222.27.174.98 6379   //指定master的主机的IP和端口号

       masterauth 888888   //主机数据库的密码

     我们可以通过info命令来查看本机的redis是主服务器还是从服务器。

  通过 info Replication 查看role是master还是slave,及相关信息

优点及应用场景
  1. 读写分离 通过复制可以实现读写分离以提高服务器的负载能力。在常见的场景中,读的频率大于写,当单机的Redis无法应付大量的读请求时(尤其是较耗资源的请求,比如SORT命令等)可以通过复制功能建立多个从数据库,主数据库只进行写操作,而从数据库负责读操作。

  2. 从数据库持久化 持久化通常相对比较耗时,为了提高性能,可以通过复制功能建立一个(或若干个)从数据库,并在从数据库中启用持久化,同时在主数据库禁用持久化。当从数据库崩溃时重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用SLAVEOF NO ONE命令将从数据库提升成主数据库继续服务,并在原来的主数据库启动后使用SLAVEOF命令将其设置成新的主数据库的从数据库,即可将数据同步回来。

posted @ 2016-07-11 18:45  宗小宗  阅读(2179)  评论(0编辑  收藏  举报