redis主从复制模式—命令行配置

架构模式:

– 一主一从

– 一主多从

– 主从从

 

主从复制工作原理

• 工作原理

– Slave 向 maste 发送 sync 命令

– Master 启动后台存盘进程,同时收集所有修改数据命

– Master 执行完后台存盘进程后,传送整个数据文件到

slave 。

– Slave 接收数据文件后,将其存盘并加载到内存中完成

首次完全同步

– 后续有新数据产生时, master 继续将新的所以收集到

的修改命令依次传给 slave ,完成同步。

 

主从复制缺点

• 缺点

 

– 网络繁忙,会产生数据同步延时问题(发送文件的速度,慢)

– 系统繁忙,会产生数据同步延时问题

 

配置主从复制

redis 默认就是主库,只需要配置从库旧可以了

配置方法:

1.命令行配置(马上生效,不需要从起服务,一旦重起服务失效)

2.修改配置文件(永久生效,但需要重起服务才能生效)

 

命令行设置:

设置从库:

192.168.4.52:6352> SLAVEOF  192.168.4.51 6351 

OK

192.168.4.52:6352> info  replication

# Replication

role:slave

master_host:192.168.4.51

master_port:6351

master_link_status:up

master_last_io_seconds_ago:8

master_sync_in_progress:0

slave_repl_offset:2366

slave_priority:100

slave_read_only:1

connected_slaves:0

master_replid:f55ecd93599d6b47277955e4de285afb339e9a4f

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:2366

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2325

repl_backlog_histlen:42

 

查看主库的信息:

192.168.4.51:6351> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.4.58,port=6358,state=online,offset=2450,lag=1

slave1:ip=192.168.4.52,port=6352,state=online,offset=2450,lag=1

master_replid:f55ecd93599d6b47277955e4de285afb339e9a4f

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:2450

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:2450

 

模拟数据同步:

192.168.4.51:6351> keys *

1) "name"

2) "age"

192.168.4.51:6351> get age

"175"

192.168.4.51:6351> get name

"bob"

 

192.168.4.52:6352> keys *

1) "age"

2) "name"

192.168.4.52:6352> get age

"175"

192.168.4.52:6352> get name

"bob"

 

继续添加53为从库(完成一主多从的结构)

192.168.4.53:6353> info replication

# Replication

role:master

connected_slaves:0

master_replid:ca4dd85349b1aa09986dd9382cd0548376c1b1ed

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:0

second_repl_offset:-1

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

 

192.168.4.53:6353> SLAVEOF 192.168.4.51  6351

OK

192.168.4.53:6353> keys *

1) "age"

2) "name"

 

192.168.4.53:6353> info replication

# Replication

role:slave

master_host:192.168.4.51

master_port:6351

master_link_status:up

master_last_io_seconds_ago:2

master_sync_in_progress:0

slave_repl_offset:3393

slave_priority:100

slave_read_only:1

connected_slaves:0

master_replid:f55ecd93599d6b47277955e4de285afb339e9a4f

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:3393

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:3352

repl_backlog_histlen:42

 

 

手动把53切换成主库:

192.168.4.53:6353> SLAVEOF no one

OK

192.168.4.53:6353> info replication

# Replication

role:master

connected_slaves:0

master_replid:fd3f7892955ba6c7b1cacdc7701c826bc1a5daa8

master_replid2:f55ecd93599d6b47277955e4de285afb339e9a4f

master_repl_offset:3617

second_repl_offset:3618

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:3352

repl_backlog_histlen:266

 

配置主从从结构:

把53配置成52的从库:

192.168.4.53:6353> SLAVEOF 192.168.4.52  6352

OK

192.168.4.53:6353> info replication

# Replication

role:slave

master_host:192.168.4.52

master_port:6352

master_link_status:up

master_last_io_seconds_ago:2

master_sync_in_progress:0

slave_repl_offset:4107

slave_priority:100

slave_read_only:1

connected_slaves:0

master_replid:f55ecd93599d6b47277955e4de285afb339e9a4f

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:4107

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:3996

repl_backlog_histlen:112

192.168.4.53:6353> 

 

192.168.4.52:6352> info  replication

# Replication

role:slave

master_host:192.168.4.51

master_port:6351

master_link_status:up

master_last_io_seconds_ago:5

master_sync_in_progress:0

slave_repl_offset:4121

slave_priority:100

slave_read_only:1

connected_slaves:1

slave0:ip=192.168.4.53,port=6353,state=online,offset=4121,lag=0

master_replid:f55ecd93599d6b47277955e4de285afb339e9a4f

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:4121

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2325

repl_backlog_histlen:1797

 

 

192.168.4.51:6351> info replication

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.4.52,port=6352,state=online,offset=4135,lag=0

master_replid:f55ecd93599d6b47277955e4de285afb339e9a4f

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:4135

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:4135

 

重起服务:设置消失

[root@host53 ~]# /etc/init.d/redis_6379  stop

Stopping ...

Waiting for Redis to shutdown ...

Redis stopped

[root@host53 ~]# /etc/init.d/redis_6379  start

Starting Redis server...

[root@host53 ~]# redis-cli  -h 192.168.4.53 -p 6353

192.168.4.53:6353> info replication

# Replication

role:master

connected_slaves:0

master_replid:c843aaebf8a042f365c222cc00de0c05bcad0994

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:0

second_repl_offset:-1

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

192.168.4.53:6353> quit

 

 

 

 

你可能感兴趣的:(nosql,Redis)