[NoSQL数据库] Redis主从部署

一、Redis主从

Redis主从有什么用:

1.备份数据:使用slave节点来备份master节点中的数据,这样避免master节点宕机都导致数据丢失。

2.读写分离:master节点只负责写,而slave节点只负责读。读写比例例如是10:1,这样可以提高执行效率。

如下图所示:

一个Master可以有多个Slave,而每个Slave也可以有多个Slave,这样就可以形成强大的服务器集群结构。

二、Redis主节点配置

1.Redis源码编译安装

在CentOS7下:

复制代码
# 安装gcc编译器
yum install gcc -y
# 下载redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
# 解压缩
tar xzf redis-5.0.7.tar.gz
# 移动文件夹到/usr/local中
mv redis-5.0.7 /usr/local/
# 进入redis目录
cd /usr/local/redis-5.0.7
# 编译
make all
复制代码
# 安装tcl
yum install tcl -y
# 运行redis测试
make test
# 安装到/usr/local/bin下
make install

进入/usr/local/bin下查看安装好的redis命令:

复制代码
[root@centos-base bin]# ll
total 32772
-rwxr-xr-x. 1 root root 4366808 Jan  5 14:20 redis-benchmark
-rwxr-xr-x. 1 root root 8125200 Jan  5 14:20 redis-check-aof
-rwxr-xr-x. 1 root root 8125200 Jan  5 14:20 redis-check-rdb
-rwxr-xr-x. 1 root root 4807880 Jan  5 14:20 redis-cli
lrwxrwxrwx. 1 root root      12 Jan  5 14:20 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 8125200 Jan  5 14:20 redis-server
复制代码

2.Redis配置

拷贝redis.conf:

cd /etc
mkdir redis
cd /usr/local/redis-5.0.7
cp redis.conf /etc/redis/redis.conf

修改配置:

vi /etc/redis/redis.conf
复制代码
bind 192.168.1.181 127.0.0.1 # 服务IP地址
port 6379  # 服务端口
daemonize yes  # 是否以守护进程形式运行
dbfilename dump.rdb  # 持久化数据文件名称
dir /var/lib/redis  # 持久化数据文件存放位置
logfile /var/log/redis/redis-server.log  # 日志文件存放位置
database 16  # 一共16个数据库,编号1~15
slaveof  # 设置主从复制(用于分布式)
复制代码

注意:持久化数据文件和日志文件的存放地址,要事先创建存放文件目录。

cd /var/lib
mkdir redis
cd /var/log
mkdir redis

配置文件参考:

(转自https://blog.csdn.net/ljphilp/article/details/52934933

  View Code

3.设置Redis服务

配置systemctl管理Redis服务:

复制代码
# 编辑文件
vim /usr/lib/systemd/system/redis.service

# 在redis.service文件中加入以下内容 并保存

##########################

[Unit]
Description=Redis-5.0.7-6379
After=network.target

[Service]
Type=forking
PIDfile=/var/run/redis-6379.pid
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

###########################

# 加载服务
systemctl daemon-reload
复制代码

reids服务操作:

systemctl start redis  # 启动
systemctl stop redis  # 停止
systemctl restart redis  # 重启
systemctl status redis  # 查看状态
systemctl enable redis  # 开机启动
systemctl disable redis  # 取消开机启动

4.运行Redis

复制代码
[root@centos-base system]# systemctl start redis
[root@centos-base system]# systemctl status redis
鈼[0m redis.service - Redis-5.0.7-6379
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-01-05 15:19:46 CST; 4s ago
  Process: 27232 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCESS)
  Process: 27243 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 27244 (redis-server)
   CGroup: /system.slice/redis.service
           鈹斺攢27244 /usr/local/bin/redis-server 127.0.0.1:6379

Jan 05 15:19:46 centos-base systemd[1]: Starting Redis-5.0.7-6379...
Jan 05 15:19:46 centos-base systemd[1]: Started Redis-5.0.7-6379.
复制代码

查看进程:

[root@centos-base system]# ps -ef | grep redis
root      27244      1  0 15:19 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:6379
root      27251  17132  0 15:22 pts/0    00:00:00 grep --color=auto redis

三、Redis从节点配置

1.安装从节点Redis

参照主节点的安装过程,部署一台从节点。

2.配置从节点

修改redis.conf配置文件:

# 修改replicaof配置项,填写主节点IP和端口
replicaof 192.168.1.181 6379

3.重启主从节点Redis服务

四、主从操作

1.查看主节点状态

执行命令:

[root@centos-base system]# redis-cli -h 192.168.1.181 info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.180,port=6379,state=online,offset=42,lag=1
master_replid:14e0a788c85de285ae34ab98f41893aaf097335a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:42
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:42

可以看到,该节点为master节点,已连接的从节点有一台,从节点IP为192.168.1.180,端口为6379。

2.查看从节点状态

执行命令:

[root@centos-base system]# redis-cli -h 192.168.1.180 info Replication 
# Replication
role:slave
master_host:192.168.1.181
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:546
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:14e0a788c85de285ae34ab98f41893aaf097335a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:546
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:546

可以看到,该节点为slave节点,属于主节点192.168.1.181,主节点端口为6379。

3.主从数据操作

在主节点设置一个值:

[root@centos-base system]# redis-cli -h 192.168.1.181 -p 6379
192.168.1.181:6379> select 10
OK
192.168.1.181:6379[10]> set name helloworld
OK

我们在主节点设置了name的值为helloworld。

在从节点获取name的值:

[root@centos-base system]# redis-cli -h 192.168.1.180 -p 6379
192.168.1.180:6379> select 10
OK
192.168.1.180:6379[10]> get name
"helloworld"

可以看到,从节点获得了name的值,为helloworld。

这说明,主节点插入值以后,会自动同步到从节点

在主节点存活的时候,使用从节点插入值:

192.168.1.180:6379[10]> set age 32
(error) READONLY You can't write against a read only replica.

可以看到,在主节点存活的时候,从节点的只读(read only)的。

猜你喜欢

转载自www.cnblogs.com/leokale-zz/p/12153822.html