主从复制的关键字是slaveof,有三种方法可以让一个redis数据库变成另一个redis数据库的从数据库:
1.修改redis的配置文件,添加#slaveof <masterip> <masterport>,其中的masterip、masterport是主redis数据库的ip和端口。在启动时,直接在redis-server命令后跟上这个配置文件就可以了。
2.在启动时加上slaveof参数,slaveof后面是主redis数据库的ip和端口,如./redis-server ../redis.conf --port 6380 192.168.2.128 6379
3.在运行过程中用客户端向redis发送slaveof命令,后面跟主redis数据库的ip和端口。这个命令不仅可以让一个redis数据库变成一个redis数据库的从数据库,还可以让一个本来就是从数据库的redis数据库变成另一个新数据库的从数据库。对应相反的命令是slaveof no one。
一般主数据库和从数据库的配置文件是不一样的,所以在部署从数据库时,最好复制一份原来的配置文件,修改后再作为从数据库的配置文件。
主从复制原理:
当一个从数据库启动后,会向主数据库发送sync命令。主数据库收到sync命令后会开始在后台保存快照(即RDB持久化),并将保存快照期间接收到的命令缓存起来。当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。从数据库收到后,会载入快照文件并执行收到的命令,以上过程称为复制初始化。复制初始化阶段结束后,主数据库执行的任何会导致数据变化的命令都会异步地传送给从数据库,这一过程称为复制同步阶段。
从数据库的可读可写是可以配置的,默认是只读的,实际生产环境也是只读的,主数据库只写不读。
主从数据库的持久化问题:
一般是禁用主数据库的持久化,而让从数据库持久化。???