在生产环境中一上来数据量可能不会太大,上来就建个集群,有点消耗资源。
主从复制结构模式:
主从复制工作原理:
- slave向master发送sync命令
- master启动后台存盘进程,并收集所有修改数据命令
- master完成后台存盘后,传送整个数据文件到slave
- slave接受数据文件,加载到内存中完成首次完全同步
- 后续有新数据产生时,master继续收集数据修改命令依次传给slave,完成同步
前期准备工作:
下载安装reids:
官方地址:https://redis.io/download
关闭防火墙:
systemctl status firewalld //查看当前防火墙状态
systemctl stop firewalld //关闭当前防火墙
systemctl disable firewalld //开机防火墙不启动
iptables -F //关闭防火墙
一主一从
192.168.10.60 | 主 |
---|---|
192.168.10.61 | 从 |
reids安装请参考我的另篇文章《Redis 单机多节点部署》。
默认情况下每台redis服务器都是主数据库,你想让一台服务器做主服务器,就不用配置它了(它本身就是默认是主的)。
两台都修改配置文件:
vim redis.conf
bind 192.168.10.10 //修改成本机地址
daemonize yes //放到后台运行
启动redis服务:
./redis-server redis.conf
命令行配置(立即生效,重启后失效)
查看当前redis信息:
[root@redis_01 bin]# ./redis-cli -h 192.168.10.10
192.168.10.10:6379> info replication //查看主从复制信息
# Replication
role:master //当前为master节点
connected_slaves:0 //从库为0
master_replid:5ab3fb1b56c43b55297996e49f685e48c3ea5c78
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.10.11为从服务器配置:
root@redis_02 bin]# ./redis-cli -h 192.168.10.11
192.168.10.11:6379> slaveof 192.168.10.10 6379 // slaveof 主库地址IP地址 主库端口号
OK
192.168.10.11:6379> info replication //查看复制信息
# Replication
role:slave //角色
master_host:192.168.10.10 //主库IP地址
master_port:6379 //主机端口号
master_link_status:up //与主库连接状态
从服务器在命令行恢复主库(反客为主)
[root@redis_02 bin]# ./redis-cli -h 192.168.10.11
192.168.10.11:6379> slaveof no one //重新变回主服务器
OK
注意!!
从库是不能写入和删除文件。
如果写入的话报错如下
[root@redis_02 bin]# ./redis-cli -h 192.168.10.11
192.168.10.11:6379> set xx 22 //添加数据
(error) READONLY You can't write against a read only replica.
//报错如上:(错误)只读不能对只读副本进行写入。
永久生效配置
在从服务器上写入配置文件:
vim redis.conf
slaveof 192.168.10.10 6379 //添加一行配置
配置带验证的主从复制
配置master,设置连接密码,重启服务。
vim +771 redis.conf
requirepass 123456 //设置密码
配置slave,设置连接master的密码,重启服务。
vim +376 redis.conf
masterauth 123456 //指定主库的密码
######################################################################
主从从,一主多从和上边原理配置一样,这里就不做演示了。
#######################################################################