Quantcast
Channel: CodeSection,代码区,数据库(综合) - CodeSec
Viewing all articles
Browse latest Browse all 6262

Redis的复制 Redis 复制 服务器

$
0
0
复制 通过持久化,保证了即使重启服务也不会损失(或少量损失)数据。但是如果服务器的硬盘出现故障,也会导致数据丢失。为了避免这种情况发生,我们希望将数据库复制多个副本部署在不同的服务器上,即使有一台出现故障,也不会影响使用。这就要求当一台服务器上的数据库更新后,可以自动将更新数据同步到其他服务器上,Redis提供了复制功能可以实现这一过程。 1.1 配置 同步后的数据库分为两类,一类是主数据库(master),一类是从数据库(slave)。主数据库可以发生读写操作,当发生写操作时将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个数据库。 在redis中使用复制功能很简单,只需要在从数据库的配置文件中加入“slaveof 主数据库ip 端口”即可,主数据库无需任何设置。

主库:


Redis的复制 Redis 复制 服务器
从库:
Redis的复制 Redis 复制 服务器
Redis的复制 Redis 复制 服务器
可以看到6389端口的从数据库连接上了6379的主数据库
现在在master上set key value,然后在slave上get key
Redis的复制 Redis 复制 服务器
Redis的复制 Redis 复制 服务器
在slave上取到了master上set的值,相信大家看到了在slave上set p "pp"报了error,这是因为redis默认配置是从数据库是只读的,不能进行更改操作。
1.2读写分离
通过复制可以实现读写分离意提高服务器的负载能力,再常见的场景中,读的频率大于写,当单机的Redis无法应付大量的读请求时可以通过复制功能建立多个从数据库,主数据库只进行写操作,而从数据库负责读操作。在上边,本人复制了一个从数据库,多个也一样,别忘记修改端口号即可。
1.3从数据库持久化
另一个相对耗时的是持久化操作,为了提高性能,可以复制多个从数据库,并在从数据库中启用持久化,同时在主库中禁用持久化。当从数据库崩溃时,重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用SLAVEOF NO ONE将从数据库提升成主数据库继续服务,并在原来的主数据库启动后使用SLAVEOF命令将其设成从数据库,即可将数据同步过来。

Viewing all articles
Browse latest Browse all 6262

Trending Articles