您的位置:首页 > 数据库 > Redis

【redis】主从复制

2017-04-01 14:29 381 查看
       Redis支持复制的功能,就是当一台服务器的数据更新后,自动将新的数据同步到其他的数据库。在复制实现中,把数据库分为主数据库master和从数据库slave,主数据库可以进行读写操作,从数据库一般是只读的,当主数据库变化的时候,会自动同步给从数据库。

复制的好处

      1.    可以实现读写分离

       2.    有利于在主数据库崩溃时进行数据恢复。

复制的基本命令

       Info replication:可以查看复制节点的相关信息

      Slaveof:可以在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数据库,那么会停止和原主数据库的同步关系,转而和新的主数据库同步。

      Slaveof no one:使用当前数据库不再是其他数据库的从数据库。

复制原理

     1.slave启动时,会想master发送psync命令,以实现增量复制。

     2.主数据接受到命令后会在后台保存快照,并将在保存快照期间接受到的命令缓存起来。

     3.将快照和缓存的命令发送给从数据库。

     4.从数据库载入快照文件并执行缓存命令,完成初始化。

     5.在使用中,主数据库会自动把每次接受到的命令同步到从服务器中。

如何操作

       1. 首先我们需要再配置几个redis实例给他们分配不同的端口(默认6379,我将默认改为了6479),其具体操作就是复制几份redis.conf然后修改里面的一个具体配置

               port --修改端口号

               pidfile /var/run/redis6481.pid

               slaveof 127.0.0.1 6479---设置主数据库

               logfile "redis6480.log"---设置日志输出路径

               dbfilename dump6480.rdb

      2.然后启动主服务器就可以了(需要将从数据库单独启动一下),我们看一下启动信息



           从启动信息中我们可以看到,当我们启动主数据库的时候,从数据库会发送了同步请求。最后都执行成功了。

        我们再看看主数据库的一些信息



      当我们查看主数据的信息时我们可以看到他下面有两个从数据库,其端口号分别为6480和6481.

       也就是说现在,当我们在主数据库进行写入的时候,我们的从数据库也会有我们写入的东西了。

     那么现在问题来了,当6479的数据库宕机了,我们当然可以手动去修改,但是我们也不能总是盯着数据库吧。所以如何才能实现redis的高可用性呢?我们下回书。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: