配置主从服务器

来源:互联网 发布:exp导出远程数据库表 编辑:程序博客网 时间:2024/06/09 04:50

Redis主从服务器的搭建很简单,只要少许配置即可,为了演示的方便,我们就在一台服务器上配置:
我们把上一步配置好的redis 文件夹,完全复制一份redisbak,只要修改conf/redis.conf的几个参数就可以了。

port 6380
slaveof 127.0.0.1 6379
进入数据目录,查一下数据文件的散列:
md5sum *.rdb
你会发现数据文件散列都一样,自动同步了。

当主从同步后,在主库操作一些数据,md5sum散列值可能不同,这是正常的,因为redis是异步写入磁盘的,此时可能有部分数据还在内存中,没有同步到磁盘,所以文件大小略显不同,可以分别在主从服务器上执行:
redis-cli save
redis-cli -p 6380 save

这条命令强制同步到磁盘,再看大小就应该一样了。
配置文件redis.conf里有一部分和持久化相关的参数(内存快照和aof), 都删除后,主服务器变成一个完全的内存服务器,所有的操作都在内存里完成,永远不会再往磁盘上持久化保存数据,异步的也没有。持久化则通过从服务器来完成,这样在操作主服务器的时候效率会更高。

可以利用主从服务器的方便性来备份,专门做一台从服务器用于备份功能,当需要备份的时候,在从服务器上执行下列命令:
redis-cli save
redis-cli shutdown
然后拷贝数据目录下的rdb文件即可。

Redis主从复制的步骤:

1slavemaster建立连接,然后slave发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将 数据库快照保存到文件中,

2、后台进程完成写文件后,master就发送文件给slaveslave 文件保存到硬盘上,再加载到内存中感觉这个不太对,和上面的有冲突

3、同时master主进程会开始收集新的写命令并缓存,并且master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave

如果 master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave