当前位置: 首页 > news >正文

Redis 主从搭建

Redis主从搭建 7.2.5

文章目录

  • 一. 同主机搭建Redis主从
    • 1. 环境介绍
    • 2. 环境前准备工作
    • 3. 安装 Redis 7.2.5
    • 4. redis 配置修改并且启动
      • 4.1 修改配置文件
      • 4.2 编写启动脚本
    • 5. 开启主从
      • 5.1 开启
      • 5.2 主库实例查看主从信息
      • 5.3 从库实例查看主从信息
      • 5.4 验证主从配置是否生效
    • 6. 解除 192.168.1.100:16372 实例主从
  • 二. 跨节点部署Redis主从
    • 1. 环境介绍
    • 2. 修改配置文件
      • 2.1 master
      • 2.2 slave 1
      • 2.3 slave 2
    • 3.启动Redis
      • 3.1 master
      • 3.2 slave 1
      • 3.3 slave 2
    • 4. 开启主从
      • 4.1 slave 1
      • 4.2 slave 2
      • 4.3 master
    • 5. 验证主从配置是否生效

一. 同主机搭建Redis主从

1. 环境介绍

同机器 一主两从

操作系统Centos 7
内核版本Linux 3.10.0-957.el7.x86_64
主机名称master-salve
IP地址192.168.1.100
端口master: 16370 slave1: 16371 slave2: 16372
Redis7.2.5

2. 环境前准备工作

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 修改 hostname
hostnamectl set-hostname xxxx  # 修改后退出当前终端重新连接即可# 更新下软件源
# 地址 https://developer.aliyun.com/mirror/# 时区调整,时间校准
date -R
timedatectl set-timezone Asia/Shanghai
yum -y install ntp
ntpdate ntp1.aliyun.com# 关闭 selinux: 
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

3. 安装 Redis 7.2.5

# 下载地址
http://download.redis.io/releases/# 下载
wget http://download.redis.io/releases/redis-7.2.5.tar.gz
# 解压
tar -xf redis-7.2.5.tar.gz -C /opt/redis# 编译
make MALLOC=libc# 安装 注意如果安装提示python3不存在 执行 yum install -y python3
make install PREFIX=/usr/local/redis# 配置环境变量
vi /etc/profile.d/redis.sh#!/bin/bashexport REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin # 使其配置生效
source /etc/profile.d/redis.sh

4. redis 配置修改并且启动

4.1 修改配置文件

# 创建redis数据存储目录
mkdir -p /usr/local/redis/data/1637{0..2}
# 创建redis配置文件存储目录
mkdir -p /usr/local/redis/conf/1637{0..2}
# 创建redis日志存储目录
mkdir -p /usr/local/redis/log/1637{0..2}# 创建redis pid存储目录
mkdir /usr/local/redis/run# redis配置文件 16370
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16370
# pid存储目录
pidfile /usr/local/redis/run/redis_16370.pid   
# 日志存储目录
logfile /usr/local/redis/log/16370/redis_16370.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16370
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes  # redis配置文件 16371
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16371
# pid存储目录
pidfile /usr/local/redis/run/redis_16371.pid   
# 日志存储目录
logfile /usr/local/redis/log/16370/redis_16371.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16371
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes  # redis配置文件 16372
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16372
# pid存储目录
pidfile /usr/local/redis/run/redis_16372.pid   
# 日志存储目录
logfile /usr/local/redis/log/16370/redis_16372.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16372
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes  # 复制下面命令即可
cat > /usr/local/redis/conf/redis_16370.conf <<EOF 
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16370
# pid存储目录
pidfile /usr/local/redis/run/redis_16370.pid   
# 日志存储目录
logfile /usr/local/redis/log/16370/redis_16370.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16370
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes 
EOFcat > /usr/local/redis/conf/redis_16371.conf <<EOF 
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16371
# pid存储目录
pidfile /usr/local/redis/run/redis_16371.pid   
# 日志存储目录
logfile /usr/local/redis/log/16370/redis_16371.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16371
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes 
EOFcat > /usr/local/redis/conf/redis_16372.conf <<EOF 
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16372
# pid存储目录
pidfile /usr/local/redis/run/redis_16372.pid   
# 日志存储目录
logfile /usr/local/redis/log/16370/redis_16372.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16372
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes 
EOF

4.2 编写启动脚本

# 启动脚本
cat > /usr/local/redis/bin/master-slave_start.sh << EOF
#!/bin/bashredis-server /usr/local/redis/conf/redis_16370.conf
redis-server /usr/local/redis/conf/redis_16371.conf
redis-server /usr/local/redis/conf/redis_16372.conf
EOF# 赋予可执行权限
chmod +x /usr/local/redis/bin/master-slave_start.sh# 关闭脚本
vi /usr/local/redis/bin/master-slave_shutdown.sh#!/bin/bashkill -9 $(ps -ef | grep 1637 | grep -v grep | awk '{print $2}')# 赋予可执行权限
chmod +x /usr/local/redis/bin/master-slave_shutdown.sh

5. 开启主从

5.1 开启

# 以"192.168.1.100:16370"实例为主库,以"192.168.1.100:16371"实例和"192.168.1.100:16372"实例为从库。
# -a 参数指定密码
# 从库实例开启主从redis-cli -h 192.168.1.100 -p 16371 -a dongdong slaveof 192.168.1.100 16370redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof 192.168.1.100 16370# Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.# 警告:在命令行界面上使用带有“-a”或“-u”选项的密码可能不安全。  可以忽略# 解决方式# redis-cli -h 192.168.1.100 -p 16371 -a dongdong --no-auth-warning  slaveof 192.168.1.100 16370 

5.2 主库实例查看主从信息

 redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.100,port=16371,state=online,offset=8428,lag=0
slave1:ip=192.168.1.100,port=16372,state=online,offset=8428,lag=1
master_failover_state:no-failover
master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:8428
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:8428

5.3 从库实例查看主从信息

# 192.168.1.100:16371 查看主从信息
redis-cli -h 192.168.1.100 -p 16371 -a dongdong  info replication [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16371 -a dongdong  info replication 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.1.100
master_port:16370
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:8680
slave_repl_offset:8680
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:8680
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:8666

5.4 验证主从配置是否生效

# "192.168.1.100:16370"实例主库的11号数据库创建测试数据
redis-cli -h 192.168.1.100 -p 16370 -a dongdong -n 11[root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong -n 11
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.100:16370[11]> keys *
(empty array)
192.168.1.100:16370[11]> set name dongdong
OK
192.168.1.100:16370[11]> set age 18
OK
192.168.1.100:16370[11]> keys *
1) "age"
2) "name"# "192.168.1.100:16371"实例从库的11号数据库查看是否同步主库的11号数据库
redis-cli -h 192.168.1.100 -p 16371 -a dongdong -n 11[root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16371 -a dongdong -n 11
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.100:16371[11]> keys *
1) "name"
2) "age"
192.168.1.100:16371[11]> get name
"dongdong"
192.168.1.100:16371[11]> get age
"18"
192.168.1.100:16371[11]> # "192.168.1.100:16372"实例从库的11号数据库查看是否同步主库的11号数据库
redis-cli -h 192.168.1.100 -p 16372 -a dongdong -n 11[root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16372 -a dongdong -n 11
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.100:16372[11]> keys *
1) "age"
2) "name"
192.168.1.100:16372[11]> get name
"dongdong"
192.168.1.100:16372[11]> get age
"18"
192.168.1.100:16372[11]> 

6. 解除 192.168.1.100:16372 实例主从

# 192.168.1.100:16372 查看主从信息
redis-cli -h 192.168.1.100 -p 16372 -a dongdong  info replication [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16372 -a dongdong  info replication 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.1.100
master_port:16370
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_read_repl_offset:10003
slave_repl_offset:10003
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:10003
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:155
repl_backlog_histlen:9849#  192.168.1.100:16370 查看主从信息
redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication 
[root@master-slave ~]#  redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.100,port=16371,state=online,offset=10157,lag=0
slave1:ip=192.168.1.100,port=16372,state=online,offset=10157,lag=0
master_failover_state:no-failover
master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:10157
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:10157# 解除 192.168.1.100:16372 主从信息
redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof no one[root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof no one
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK# 再次查看 192.168.1.100:16370 查看主从信息
redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.100,port=16371,state=online,offset=10731,lag=0
master_failover_state:no-failover
master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:10731
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:10731
# 只剩下一个 从节点了# 把192.168.1.100:16372 添加回来
redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof 192.168.1.100 16370
[root@master-slave ~]#  redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof 192.168.1.100 16370
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK# 此时再看192.168.1.100:16370 查看主从信息
redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.100,port=16371,state=online,offset=10941,lag=0
slave1:ip=192.168.1.100,port=16372,state=online,offset=10941,lag=0
master_failover_state:no-failover
master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:10941
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:10941
# slaves 变成2了

二. 跨节点部署Redis主从

1. 环境介绍

操作系统Centos 7Centos 7Centos 7
内核版本Linux 3.10.0-957.el7.x86_64Linux 3.10.0-957.el7.x86_64Linux 3.10.0-957.el7.x86_64
主机名称masterslave1slave2
IP192.168.1.100192.168.1.200192.168.1.250
端口163801638116382

2. 修改配置文件

2.1 master

# 创建redis数据存储目录
mkdir -p /usr/local/redis/data/16380
# 创建redis配置文件存储目录
mkdir -p /usr/local/redis/conf/16380
# 创建redis日志存储目录
mkdir -p /usr/local/redis/log/16380# 创建redis pid存储目录
mkdir /usr/local/redis/run# 复制下面命令即可
cat > /usr/local/redis/conf/redis_16380.conf<<EOF 
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.100   
# 端口  
port 16380
# pid存储目录
pidfile /usr/local/redis/run/redis_16380.pid   
# 日志存储目录
logfile /usr/local/redis/log/redis_16380.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16380
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes 
EOF

2.2 slave 1

# 创建redis数据存储目录
mkdir -p /usr/local/redis/data/16381
# 创建redis配置文件存储目录
mkdir -p /usr/local/redis/conf/16381
# 创建redis日志存储目录
mkdir -p /usr/local/redis/log/16381# 创建redis pid存储目录
mkdir /usr/local/redis/run# 复制下面命令即可
cat > /usr/local/redis/conf/redis_16381.conf <<EOF 
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.200   
# 端口  
port 16381
# pid存储目录
pidfile /usr/local/redis/run/redis_16381.pid   
# 日志存储目录
logfile /usr/local/redis/log/redis_16381.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16381
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes 
EOF

2.3 slave 2

# 创建redis数据存储目录
mkdir -p /usr/local/redis/data/16382
# 创建redis配置文件存储目录
mkdir -p /usr/local/redis/conf/16382
# 创建redis日志存储目录
mkdir -p /usr/local/redis/log/16382# 创建redis pid存储目录
mkdir /usr/local/redis/run# 复制下面命令即可
cat > /usr/local/redis/conf/redis_16382.conf <<EOF 
# 开启保护模式
protected-mode yes
# 添加本机的ip
bind 192.168.1.250   
# 端口  
port 16382
# pid存储目录
pidfile /usr/local/redis/run/redis_16382.pid   
# 日志存储目录
logfile /usr/local/redis/log/redis_16382.log 
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/data/16382
# 设置实例的验证口令
requirepass dongdong
# 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
# 此配置项中值需要和master机器的“requirepass”保持一致
masterauth dongdong
# 配置RDB持久化策略
save 900 1
save 300 10
save 60 10000
# 配置AOF持久化
appendonly yes 
appendfsync everysec
# 守护进程
daemonize yes 
EOF

3.启动Redis

3.1 master

redis-server  /usr/local/redis/conf/redis_16380.conf

3.2 slave 1

redis-server  /usr/local/redis/conf/redis_16381.conf

3.3 slave 2

redis-server  /usr/local/redis/conf/redis_16382.conf

4. 开启主从

4.1 slave 1

# 从库开启主从
redis-cli -h 192.168.1.200 -p 16381 -a dongdong slaveof 192.168.1.100 16380[root@slave1 ~]#  redis-cli -h 192.168.1.200 -p 16381 -a dongdong slaveof 192.168.1.100 16380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK# 从库查看主从信息
redis-cli -h 192.168.1.200 -p 16381 -a dongdong  info replication [root@slave1 ~]# redis-cli -h 192.168.1.200 -p 16381 -a dongdong  info replication 
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.1.100
master_port:16380
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_read_repl_offset:532
slave_repl_offset:532
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:7330881025ee2709ee6c9c32ea3fcc9b6649893d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:532
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:518

4.2 slave 2

# 从库开启主从
redis-cli -h 192.168.1.250 -p 16382 -a dongdong slaveof 192.168.1.100 16380[root@slave2 ~]# redis-cli -h 192.168.1.250 -p 16382 -a dongdong slaveof 192.168.1.100 16380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK# 从库查看主从信息
redis-cli -h 192.168.1.250 -p 16382 -a dongdong  info replication [root@slave2 ~]# redis-cli -h 192.168.1.250 -p 16382 -a dongdong  info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.1.100
master_port:16380
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_read_repl_offset:560
slave_repl_offset:560
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:7330881025ee2709ee6c9c32ea3fcc9b6649893d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:560
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:211
repl_backlog_histlen:350

4.3 master

# 查看 主从信息
redis-cli -h 192.168.1.100 -p 16380 -a dongdong  info replication [root@master ~]# redis-cli -h 192.168.1.100 -p 16380 -a dongdong  info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.200,port=16381,state=online,offset=336,lag=0
slave1:ip=192.168.1.250,port=16382,state=online,offset=336,lag=1
master_failover_state:no-failover
master_replid:7330881025ee2709ee6c9c32ea3fcc9b6649893d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:336
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:336

5. 验证主从配置是否生效

# "master主机名"实例主库的11号数据库创建测试数据
redis-cli -h 192.168.1.100 -p 16380 -a dongdong -n 11[root@master ~]# redis-cli -h 192.168.1.100 -p 16380 -a dongdong -n 11
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.100:16380[11]> keys *
(empty array)
192.168.1.100:16380[11]> set name dongdong
OK
192.168.1.100:16380[11]> set age 18
OK
192.168.1.100:16380[11]> keys *
1) "name"
2) "age"
192.168.1.100:16380[11]> # "slave1主机名"实例从库的11号数据库查看是否同步主库的11号数据库
redis-cli -h 192.168.1.200 -p 16381 -a dongdong -n 11[root@slave1 ~]# redis-cli -h 192.168.1.200 -p 16381 -a dongdong -n 11
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.200:16381[11]> get name
"dongdong"
192.168.1.200:16381[11]> get age
"18"
192.168.1.200:16381[11]> key *
(error) ERR unknown command 'key', with args beginning with: '*' 
192.168.1.200:16381[11]> keys *
1) "age"
2) "name"
192.168.1.200:16381[11]> # "slave2主机名"实例从库的11号数据库查看是否同步主库的11号数据库
redis-cli -h 192.168.1.250 -p 16382 -a dongdong -n 11[root@slave2 ~]# redis-cli -h 192.168.1.250 -p 16382 -a dongdong -n 11
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.250:16382[11]> get name 
"dongdong"
192.168.1.250:16382[11]> get age
"18"
192.168.1.250:16382[11]> keys *
1) "age"
2) "name"
192.168.1.250:16382[11]> # 如果针对 slave1 或者 slave2 进行写入操作 则会报错 错误信息  只能在master操作哦
(error) READONLY You can't write against a read only replica.

相关文章:

Redis 主从搭建

Redis主从搭建 7.2.5 文章目录 一. 同主机搭建Redis主从1. 环境介绍2. 环境前准备工作3. 安装 Redis 7.2.54. redis 配置修改并且启动4.1 修改配置文件4.2 编写启动脚本 5. 开启主从5.1 开启5.2 主库实例查看主从信息5.3 从库实例查看主从信息5.4 验证主从配置是否生效 6. 解除…...

LeetCode 129, 133, 136

文章目录 129. 求根节点到叶节点数字之和题目链接标签思路代码 133. 克隆图题目链接标签思路代码 136. 只出现一次的数字题目链接标签思路代码 129. 求根节点到叶节点数字之和 题目链接 129. 求根节点到叶节点数字之和 标签 树 深度优先搜索 二叉树 思路 由于本题需要 从…...

macOS 环境Qt Creator 快捷键

在 macOS 环境下&#xff0c;Qt Creator 是一个流行的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发 Qt 项目。下面是一些常用的快捷键和操作技巧&#xff0c;帮助你更高效地使用 Qt Creator 进行项目开发和管理&#xff1a; 在 macOS 中&#xff0c;Cmd 键 四…...

【C# WInForm】将TextBox从输入框设置为文本框

1.需求情形&#xff1a; textbox作为最常用的控件之一&#xff0c;通常是用来输入文本信息或者显示文字&#xff0c;但是如果要在界面中显示大段文本&#xff0c;一个带有边框、可选中的文本样式似乎不合适。像这样&#xff1a; 我需要的是这段文字不仅能跨行&#xff0c;而且…...

minio 服务docker配置

用minio docker配置了一个服务&#xff0c;分享链接始终是127.0.01开始的&#xff0c; 改成docker的host的ip则提示签名不匹配&#xff0c; 好在这个文件主要是用来下载的&#xff0c;所以可以通过设置bucket的匿名访问权限来实现下载&#xff1b; 这样不需要后面的地址参数就…...

开源模型应用落地-LangChain高阶-智能体探究-自定义agent(五)

一、前言 大模型具有非常强大的功能,可以解答疑问、撰写报告和文档、总结内容、进行翻译等各种日常工作任务。然而,大模型还可以应用于更多的场景,发挥出更强大的作用。 通过智能体,我们可以实现许多有价值的事情,比如:在日常生活中,我们能借助智能体实现智能家居的自动化…...

16_网络IPC4-数据传输

send() 用于流式套接字 向SOCKET发送数据 。 Socket 只是通信节点&#xff0c;通信之前需要连接&#xff0c;即发送端发送之前 需要知道对端的地址&#xff0c;才能找到对端的socket节点&#xff0c;才能发送成功。而接收端不同&#xff0c;接收函数 如 recv () 不需要一定知道…...

怎样做好仓库管理工作?如何利用仓库管理系统进行有效管理?

我前前后后跑遍了十几家仓储设备公司&#xff0c;跟那些制造业的朋友们聊了个痛快&#xff0c;从他们那儿学到了不少仓库管理的实践方法。 回来自己整理了一套仓库管理更高效的实用方法&#xff0c;现在就来跟大家伙儿聊聊仓库管理中那些常见问题&#xff0c;以及我是怎么琢磨…...

PHP-显示所有错误信息

1 需求 2 接口 3 示例 要在 PHP 中显示所有错误信息&#xff0c;你可以通过修改 php.ini 配置文件或在你的 PHP 脚本中设置错误报告级别来实现。以下是两种常见的方法&#xff1a; 方法一&#xff1a;修改 php.ini 配置文件 找到你的 php.ini 文件。这个文件的位置取决于你的 P…...

js修改hash的方法

关键&#xff1a; window.onhashchange (event) > {// do something }hash变化包括 js修改hash手动修改url的hash浏览器前进、后退 js修改hash: location.href "#user";在vue-router等路由组件中如何实现history模式呢&#xff1f; 关键函数&#xff1a;hi…...

机械学习—零基础学习日志(高数10——函数图形)

零基础为了学人工智能&#xff0c;真的开始复习高数 函数图像&#xff0c;开始新的学习&#xff01;本次就多做一做题目&#xff01; 第一题&#xff1a; 这个解法是有点不太懂的了。以后再多研究一下。再出一道题目。 张宇老师&#xff0c;比较多提示了大家&#xff0c;一定…...

Godot游戏制作 03世界构建1.0版

在game场景&#xff0c;删除StaticBody2D节点&#xff0c;添加TileMap节点 添加TileSet图块集 添加TileSet源 拖动图片到图块&#xff0c;自动创建图块 使用橡皮擦擦除。取消橡皮擦后按住Shift创建大型图块。 进入选择模式&#xff0c;TileMap选择绘制&#xff0c;选中图块后在…...

MySql性能调优05-[sql实战演练]

sql实战演练 行列转换行列式转换第一题【列转行】第二题【列转行】 having的使用找到表中&#xff0c;名字重复的项有数据表employee&#xff0c;包含如下字段id、name、department、age&#xff0c;编写SQL&#xff0c;找到不与其他人同龄的年纪最大的员工的年龄有数据表emplo…...

go-kratos 学习笔记(1) 安装

简介&#xff1a; Kratos 一套轻量级 Go 微服务框架&#xff0c;包含大量微服务相关框架及工具。 使用步骤&#xff1a; 安装cli工具 go install github.com/go-kratos/kratos/cmd/kratos/v2latest 创建项目 通过 kratos 命令创建项目模板 # 国内拉取失败可使用gitee源 krat…...

蚂蚁集团推出EchoMimic:能通过音频和面部标志生成逼真的肖像动画视频

蚂蚁集团最近推出了一项名为EchoMimic的新技术。能通过音频和面部标志生成逼真的肖像动画视频&#xff0c;让你的声音和面部动作被完美复制到视频中&#xff0c;效果自然如照镜子。 EchoMimic不仅可以单独使用音频或面部标志点生成肖像视频&#xff0c;也可以将两者结合&#…...

量化机器人对市场趋势的反应速度

量化机器人对市场趋势的反应速度在当前金融市场中具有重要意义。随着算法和大数据技术的发展&#xff0c;量化机器人通过先进的计算能力和实时数据分析&#xff0c;能够迅速捕捉市场变化&#xff0c;做出及时的交易决策。这种快速反应能力&#xff0c;不仅提高了交易效率&#…...

深入指南:VitePress 如何自定义样式

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

逃离的日常:自闭症孩子的课堂小插曲

自闭症孩子在课堂上突然离座&#xff0c;是一个复杂而多面的现象&#xff0c;背后往往隐藏着他们独特的情感表达与需求未被充分理解的现状。自闭症&#xff0c;作为一种神经发展性障碍&#xff0c;影响着孩子的社交互动、沟通能力及行为模式。在课堂上&#xff0c;这些差异可能…...

LLM模型与实践之基于MindSpore的GPT2文本摘要

前言 安装环境 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip install mindnlp0.3.1 !pip install mindnlp 数据加…...

【Android】使用视图绑定ViewBinding来代替findViewById

文章目录 介绍作用用法开启ViewBinding功能自动生成绑定类在Activity中使用访问视图控件 区别 介绍 ViewBinding 是 Android 开发中的一个功能&#xff0c;它简化了访问视图的过程&#xff0c;避免了使用 findViewById 的繁琐步骤。它通过生成与布局文件相对应的绑定类&#xf…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...