1.主从复制的概述:
1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
2.主从复制的过程
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。(尽量使用内网实现整体通讯,会减少数据同步的延迟)
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
3.创建两台Linux服务器,
Linux安装Redis可以参考 Linux环境下Redis的安装,如果虚拟机是通过克隆出来的,请一定要重新生成mac地址
4.配置两台服务器中的redis
我的两台服务器地址分别为 192.168.59.134 以及192.168.59.135,我使用134服务器为redis的主服务器,135为从服务器。
我已经将Redis的密码都改为了123456
5.配置redis的守护进程
在主服务器以及从服务器中都配置redis作为守护进程运行,因为默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把配置文件里daemonize改成 yes
使用命令进入redis的配置文件,这里去修改的文件路径,需要安装自己安装Redis的路径去查询修改
vi /etv/redis.conf
进入该文件后将daemonize改成 yes,切记在主服务器以及从服务器中都需要修改。
6.在从服务器中配置主服务器
在从服务器中找到配置主服务器的IP、端口以及密码的位置修改
将上面的标注出改为自己的主服务器的IP以及redis的端口、密码。
7.重启主、从Redis
# 启动redis服务
service redis start
# 停止redis
service redis stop
# 查看redis的运行状态
service redis status
8.测试
登录主服务器,创建一个键为name,值为helloword的数据,
[root@localhost ~]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set name helloword
OK
登录从服务器,使用键name,获取到了主服务设置的数据,说明从服务器已经同步了主服务器的数据
[root@localhost ~]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> get name
"helloword"
分别使用info命令查看主服务器以及从服务器的信息
主服务器,从信息中可以看到该主服务器有一个从属服务器92.168.59.135
127.0.0.1:6379> info
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-957.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:6859
run_id:23b87ed1079475d8063b49ffe8bb7bbbe93098ef
tcp_port:6379
uptime_in_seconds:1600
uptime_in_days:0
hz:10
lru_clock:5137386
executable:/usr/bin/redis-server
config_file:/etc/redis.conf
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.59.135,port=6379,state=online,offset=1329,lag=0
master_repl_offset:1329
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1328
从服务器,从数据中可以发现该从服务器有一个主服务器192.168.59.134
127.0.0.1:6379> info
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-957.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:7306
run_id:729f0a21441ec56bcfdf69db3267f786f67988ba
tcp_port:6379
uptime_in_seconds:764
uptime_in_days:0
hz:10
lru_clock:5137293
executable:/usr/bin/redis-server
config_file:/etc/redis.conf
# Replication
role:slave
master_host:192.168.59.134
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:1203
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
如果需要配置一主多从,只要在多个从服务器中配置主服务器的的IP、端口、密码即可