redis部署和主从

源码编译安装redis

先安装依赖环境 yum install gcc tcl -y
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
下载4.0版本的或者去官网 http://www.redis.cn
解压 tar -xf redis-4.0.10.tar.gz
进入目录 cd redis-4.0.10
安装 make 如果出现警告和错误说明yum 的gcc版本过低去编译安装高版本gcc
然后make install
配置 redis
mkdir /etc/redis
cd redis-4.0.10/
cp redis.conf /etc/redis/redis.conf
配置 centos7 systemd 管理 redis 服务
在/lib/systemd/system目录下创建一个脚本文件redis.service,里面的内容如下:

[Unit]
Description=Redis
After=network.target

[Service]
Type=simple #这里是配置文件的路经
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --daemonize no
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown

[Install]
WantedBy=multi-user.target

可以使用命令 cat >>/lib/systemd/system/redis.service<<EOF

[Unit]
Description=Redis
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --daemonize no
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown

[Install]
WantedBy=multi-user.target
EOF

重新加载使用 systemctl 操作
刷新配置,让 systemd 识别刚刚添加的 redis 服务
systemctl daemon-reload
然后就可以启动服务
systemctl start redis
systemctl enable redis.service 开机自启
设置监听地址为所有来源 要不只能127.0.0.1
vi /etc/redis/redis.conf
查找开头是bind的行修改成0.0.0.0
重新启动服务
systemctl restart redis
不设置systemd的话
手动使用命令指定配置文件启动服务
/usr/local/bin/redis-server /etc/redis/redis.conf
手动停止服务
redis-cli -p 6379 shutdown


关于上面配置文件的路径在你make install才会有否则会显示以下只有编译安装情况下才会创建
ls /usr/local/bin/redis-server
ls: 无法访问/usr/local/bin/redis-server: 没有那个文件或目录
ls /usr/local/bin/redis-cli
ls: 无法访问/usr/local/bin/redis-cli: 没有那个文件或目录
[root@lvs redis-4.0.10]# make install
cd src && make install
make[1]: 进入目录“/usr/local/src/redis-4.0.10/src”
CC Makefile.dep
make[1]: 离开目录“/usr/local/src/redis-4.0.10/src”
make[1]: 进入目录“/usr/local/src/redis-4.0.10/src”

Hint: It’s a good idea to run ‘make test’ 😉

INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install

make[1]: 离开目录“/usr/local/src/redis-4.0.10/src”
[root@lvs redis-4.0.10]# ls /usr/local/bin/redis-cli

/usr/local/bin/redis-cli

关于 RDB 文件的配置信息
默认文件名
dbfilename dump.rdb
默认文件保存位置
dir ./
假如 bgsave 执行中发生错误,是否停止写入,默认是 yes , 表示假如出错,就停止写入。
stop-writes-on-bgsave-error yes
是否使用压缩|
rdbcompression yes
是否进行数据的校验
rdbchecksum yes
建议最佳配置:
在配置文件中注释掉如下内容
#save 900 1
#save 300 10
#save 60 10000
dbfilename dump-6379.rdb #使用不同端口号进行区分,因为,有可能会在同一台主机上开启多个 Redis,防止多个实例产生的数据信息写到一个文件中。
dir /redis_data #指定一个大硬盘的路径 此目录需要自己创建
stop-writes-on-bgsave-error yes #假如出现错误,停止继续写入
rdbcompression yes #采用压缩
rdbchecksum yes #进行校验
假如你的 Redis 服务器允许客户端可以从非本机访问,应该在配置文件中,把 protected-mode 的值设置问 no。
这样的话,客户端就可以从其他主机访问 Redis 服务器了,并且不需要密码。
重启服务后,在 Rdis 命令行客户端中输入 save 命令。
[root@server ~]# redis-cli
127.0.0.1:6379> save
OK
127.0.0.1:6379>
该命令将在配置文件重配置的指定目录中创建 dump-6379.rdb文件。
恢复数据时,只需要保证此文件完好,并且在配置文件中指定的目录下即可。这样 Rdis 启动时就会把此文件中的数据恢复到当前的服务器中。
bgsave 命令和 save基本一样,就是 bgsave 命令不会产生阻塞
127.0.0.1:6379> bgsave
Background saving started
127.0.0.1:6379>
查看当前服务器的数据文件目录
127.0.0.1:6379> CONFIG GET dir

  1. “dir”
  2. “/redis_data”

关于 AOF 文件 都是在redis.conf
// 要想使用 AOF 的全部功能,需要设置为 yes
appendonly yes
// AOF 文件名,路径才看之前的 dir 配置项
appendfilename “appendonly.aof”
// 平常普通的 AOF 的策略
appendfsync everysec
// 当执行 AOF 重写时,是否继续执行平常普通的 AOF 操作。
// 这里设置文件 yes , 表示不执行
// 因为假如,同时执行,两种操作都会对磁盘 I/O 进行访问,造成
// I/O 访问量过大,产生性能衰减
no-appendfsync-on-rewrite yes
// AOF 文件容量的增长率
auto-aof-rewrite-percentage 100
// AOF 文件的最低容量,就是当前文件的大小大于此值时,就会进行重写。当然这只是其中一个条件。
auto-aof-rewrite-min-size 64mb

RDB 和 AOF区别
命令 RDB AOF
启动优先级 低 高
体积 小 大
恢复速度 快 慢
数据安全性 丢数据 根据策略决定
轻重 重 轻

AOF重写机制会有多个子进程 一个子进程还是原来的旧aof文件 一个子进程会去查找在个数据库中这个key最后对应的values然后写入新的aof文件里
因为一个值比如age=18 过段时间age=20他的值会变 新的子进程只会保留最后的值触发条件也是必需同时满足你配置文件中定的文件容量增长量和文件最低容量

如何抉择
从服务器开启 RDB

主始终开启 AOF

不要使用主机的全部内存
关于如何选择这和数据库mysql一样 多多备份嘛 rdb是二进制文件然后重新执行一遍 aof文件保存了 Redis 的数据库状态, 而文件里面包含的都是符合 Redis 通讯协议格式的命令文本。所以如果有能力的话 都开启都备份 也有重写也保持数据完整性

配置redis数据库的主从

命令方式
只需要在从服务器上执行如下命令即可
slaveof 主服务器的IP 端口号
slaveof 命令是异步的,不阻塞。
并且此时,从服务器现有的数据会先被清空,之后再同步主服务器的数据。
停止一台从服务器的复制操作,在此台服务器上执行如下命令
slaveof no one
-配置文件的方式如下
只需要在从服务器上配置即可
修改配置文件
假如主服务器 IP 是: 172.16.153.178 端口是: 6379

slaveof

slaveof 192.168.136.130 6380
// 配置此服务器只提供读取操作
slave-read-only yes
之后重启从主机的 Redis 服务
查看主从信息 下面是主服务器的:
127.0.0.1:6379> info replication

Replication

role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=523142,lag=0
slave1:ip=127.0.0.1,port=6382,state=online,offset=523142,lag=0
master_replid:e1cb6d62d184a5e8f40e650362a0393f96a2dc79
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:523142
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:523142
下面是从服务器的:

Replication

role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:544842
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e1cb6d62d184a5e8f40e650362a0393f96a2dc79
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:544842
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:544842
到这一步主从配置完成

一台主机多台redis实例

配置主从
快速生成主节点的配置文件
编译全新文件 /etc/redis/redis-6380.conf, 添加如下内容

port 6380
daemonize yes
protected-mode no
pidfile /var/run/redis-6380.pid #使用root用户会自己创建
logfile /var/log/redis-6380.log #使用root用户会自己创建
dir /redis/data/ #这个目录需要自己创建

假如是多个主机实现的,就需要更改为 protected-mode yes,并且添加 bind 0.0.0.0
快速生成从节点的配置文件
sed ‘s/6380/6381/g’ /etc/redis/redis-6380.conf > /etc/redis/redis-6381.conf
sed ‘s/6380/6382/g’ /etc/redis/redis-6380.conf > /etc/redis/redis-6382.conf

查看配置文件内容,检验配置结果
cat /etc/redis/redis-6381.conf

port 6381
daemonize yes
pidfile /var/run/redis-6381.pid
logfile /var/log/redis-6381.log
dir /redis/data/

cat /etc/redis/redis-6382.conf

port 6382
daemonize yes
pidfile /var/run/redis-6382.pid
logfile /var/log/redis-6382.log
dir /redis/data/

配置主从关系

echo “slaveof 192.168.136.130 6380” >> /etc/redis/redis-6381.conf
echo “slaveof 192.168.136.130 6380” >> /etc/redis/redis-6382.conf
启动服务,并验证进程
/usr/local/bin/redis-server /etc/redis/redis-6380.conf
/usr/local/bin/redis-server /etc/redis/redis-6381.conf
/usr/local/bin/redis-server /etc/redis/redis-6382.conf
ps -ef |grep redis
root 4335 1 0 19:30 ? 00:00:03 /usr/local/bin/redis-server *:6380
root 4490 1 0 20:17 ? 00:00:00 /usr/local/bin/redis-server *:6381
root 4495 1 0 20:17 ? 00:00:00 /usr/local/bin/redis-server *:6382
root 4500 3755 0 20:17 pts/0 00:00:00 grep --color=auto redis
然后就可以查看主从复制信息来确定了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值