1. 首页 > 软件安装教程 > 正文

Tair安装配置-Tair数据库安装配置_升级迁移详细过程

1. Tair概述与环境规划

Tair是阿里云自研的高性能分布式KV存储系统,兼容Redis协议,支持多种数据结构。Tair在Redis基础上增加了多种数据结构和功能,如向量搜索、时序数据、布隆过滤器等,特别适合互联网高并发场景。更多学习教程www.fgedu.net.cn

1.1 Tair版本说明

Tair目前主要版本为Tair 2.0,本教程以Tair 2.0为例进行详细讲解。

# 查看Tair版本
$ redis-cli -p 5179 INFO server | grep redis_version
redis_version:2.0.0

# 查看服务器信息
$ redis-cli -p 5179 INFO server
# Server
redis_version:2.0.0
server_name:tair

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
数据库端口:5179
配置中心端口:5198
数据库目录:/data/tair
日志目录:/var/log/tair
备份目录:/backup/tair

内存规划:
最大内存:32GB
最大客户端连接:10000

1.3 Tair核心特性

主要特点:
1. 兼容Redis:完全兼容Redis协议和API
2. 多数据结构:支持向量、时序、布隆过滤器等
3. 高性能:优化的存储引擎
4. 持久化:支持RDB和AOF持久化
5. 分布式:支持集群模式
6. 多线程:支持多线程处理
7. 内存优化:高效的内存管理
8. 企业级:支持企业级功能

2. 硬件环境要求与检查

在安装Tair之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com

2.1 最低硬件要求

最低配置:
CPU:2核心
内存:4GB
磁盘:20GB

推荐配置(生产环境):
CPU:8核心以上
内存:64GB以上
磁盘:200GB以上SSD

高并发环境配置:
CPU:16核心以上
内存:128GB以上
磁盘:500GB以上NVMe SSD

2.2 系统环境检查

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64 GNU/Linux

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 63Gi 2.0Gi 60Gi 256Mi 1.0Gi 61Gi
Swap: 15Gi 0B 15Gi

# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 200G 20G 180G 10% /data
/dev/mapper/vg_backup-lv_backup 100G 10G 90G 10% /backup

# 检查所需软件包
# rpm -qa | grep -E “gcc|make|cmake|autoconf”
gcc-8.5.0-18.el8.x86_64
make-4.2.1-11.el8.x86_64
cmake-3.20.2-4.el8.x86_64
autoconf-2.69-29.el8.noarch

# 安装依赖包
# dnf install -y gcc gcc-c++ make cmake autoconf automake libtool wget git

2.3 内核参数配置

# 配置内核参数
# vi /etc/sysctl.d/99-tair.conf

# 添加以下参数
# 网络参数
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1

# 内存参数
vm.overcommit_memory = 1
vm.swappiness = 1

# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-tair.conf

# 输出示例:
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535

vm.overcommit_memory = 1
vm.swappiness = 1

2.4 用户资源限制配置

# 配置用户限制
# vi /etc/security/limits.conf

# 添加以下配置
tair soft nofile 65535
tair hard nofile 65535
tair soft nproc 65535
tair hard nproc 65535
tair soft memlock unlimited
tair hard memlock unlimited

# 禁用透明大页
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag

# 永久禁用
# vi /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

# chmod +x /etc/rc.d/rc.local

生产环境建议:Tair对内存和网络要求较高,建议配置足够的内存和高速网络。vm.overcommit_memory设置为1可以避免内存分配失败。

3. Tair数据库安装步骤

本节详细介绍Tair的安装过程。学习交流加群风哥QQ113257174

3.1 创建用户和目录

# 创建tair用户
# useradd -r -s /sbin/nologin tair

# 创建目录结构
# mkdir -p /data/tair/{data,log}
# mkdir -p /var/log/tair
# mkdir -p /backup/tair

# 设置目录权限
# chown -R tair:tair /data/tair
# chown -R tair:tair /var/log/tair
# chown -R tair:tair /backup/tair
# chmod -R 750 /data/tair
# chmod -R 750 /var/log/tair
# chmod -R 750 /backup/tair

# 验证目录权限
# ls -la /data/
总用量 0
drwxr-xr-x. 3 tair tair 20 4月 4 10:00 tair

3.2 下载并编译Tair

# 下载Tair源码
# cd /usr/local/src
# git clone https://github.com/alibaba/tair.git

# 输出示例:
Cloning into ‘tair’…
remote: Enumerating objects: 50000, done.
remote: Counting objects: 100% (5000/5000), done.
remote: Compressing objects: 100% (3000/3000), done.
remote: Total 50000 (delta 2000), reused 4000 (delta 1500), pack-reused 45000
Receiving objects: 100% (50000/50000), 50.00 MiB | 10.00 MiB/s, done.
Resolving deltas: 100% (25000/25000), done.

# 进入源码目录
# cd tair

# 编译Tair
# mkdir build
# cd build
# cmake ..
# make -j$(nproc)

# 输出示例:
— The C compiler identification is GNU 8.5.0
— The CXX compiler identification is GNU 8.5.0
— Check for working C compiler: /usr/bin/cc
— Check for working C compiler: /usr/bin/cc — works

[100%] Built target tair-server

# 安装Tair
# make install DESTDIR=/usr/local/tair

# 输出示例:
[100%] Built target tair-server
Install the project…
— Install configuration: “”
— Installing: /usr/local/tair/bin/tair-server
— Installing: /usr/local/tair/bin/tair-client

# 验证安装
# ls -la /usr/local/tair/bin/
总用量 20480
-rwxr-xr-x. 1 root root 20971520 4月 4 10:00 tair-server
-rwxr-xr-x. 1 root root 1048576 4月 4 10:00 tair-client

3.3 创建配置文件

# 创建配置文件
# vi /etc/tair.conf

# 添加以下配置
# 网络配置
bind 192.168.1.51 127.0.0.1
port 5179
protected-mode yes
tcp-backlog 511
timeout 0
tcp-keepalive 300

# 通用配置
daemonize yes
pidfile /var/run/tair/tair.pid
loglevel notice
logfile /var/log/tair/tair.log
databases 16

# 快照配置
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/tair/data

# 内存配置
maxmemory 32gb
maxmemory-policy allkeys-lru

# 惰性删除
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no

# 持久化配置
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 多线程配置
io-threads 4
io-threads-do-reads yes

# Tair特有配置
# 启用扩展数据结构
enable-extended-data-structures yes

# 创建PID目录
# mkdir -p /var/run/tair
# chown tair:tair /var/run/tair

3.4 创建Systemd服务

# 创建服务文件
# vi /etc/systemd/system/tair.service

[Unit]
Description=Tair In-Memory Data Store
After=network.target

[Service]
Type=forking
User=tair
Group=tair
ExecStart=/usr/local/tair/bin/tair-server /etc/tair.conf
ExecStop=/usr/local/tair/bin/tair-client -p 5179 SHUTDOWN
Restart=always
RestartSec=5
LimitNOFILE=65535
LimitNPROC=65535

[Install]
WantedBy=multi-user.target

# 重载systemd
# systemctl daemon-reload

# 启动Tair服务
# systemctl start tair

# 设置开机自启动
# systemctl enable tair

# 输出示例:
Created symlink /etc/systemd/system/multi-user.target.wants/tair.service → /etc/systemd/system/tair.service.

# 检查服务状态
# systemctl status tair

● tair.service – Tair In-Memory Data Store
Loaded: loaded (/etc/systemd/system/tair.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-04 10:00:00 CST; 5s ago
Process: 12345 ExecStart=/usr/local/tair/bin/tair-server /etc/tair.conf (code=exited, status=0/SUCCESS)
Main PID: 12346 (tair-server)
Tasks: 9 (limit: 4915)
Memory: 10.0M
CGroup: /system.slice/tair.service
└─12346 /usr/local/tair/bin/tair-server /etc/tair.conf

# 检查端口
# netstat -tlnp | grep tair
tcp 0 0 127.0.0.1:5179 0.0.0.0:* LISTEN 12346/tair-server
tcp 0 0 192.168.1.51:5179 0.0.0.0:* LISTEN 12346/tair-server

风哥提示:Tair兼容Redis协议,可以使用redis-cli连接。Tair的扩展数据结构需要在配置中启用。

4. 数据库参数配置

数据库参数配置是Tair安装的关键步骤,直接影响数据库性能和稳定性。更多学习教程公众号风哥教程itpux_com

4.1 内存管理配置

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

192.168.1.51:5179> CONFIG GET maxmemory
1) “maxmemory”
2) “34359738368”

192.168.1.51:5179> CONFIG GET maxmemory-policy
1) “maxmemory-policy”
2) “allkeys-lru”

# 设置最大内存
192.168.1.51:5179> CONFIG SET maxmemory 64gb
OK

# 设置内存淘汰策略
192.168.1.51:5179> CONFIG SET maxmemory-policy allkeys-lru
OK

# 查看内存使用情况
192.168.1.51:5179> INFO memory
# Memory
used_memory:1024000
used_memory_human:1000.00K
used_memory_rss:2048000
used_memory_rss_human:2.00M
used_memory_peak:1024000
used_memory_peak_human:1000.00K
total_system_memory:68719476736
total_system_memory_human:64.00G
maxmemory:68719476736
maxmemory_human:64.00G
maxmemory_policy:allkeys-lru

192.168.1.51:5179> EXIT

4.2 持久化配置

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

# 查看持久化配置
192.168.1.51:5179> CONFIG GET appendonly
1) “appendonly”
2) “yes”

192.168.1.51:5179> CONFIG GET appendfsync
1) “appendfsync”
2) “everysec”

# 手动触发RDB快照
192.168.1.51:5179> BGSAVE
Background saving started

# 查看RDB状态
192.168.1.51:5179> LASTSAVE
(integer) 1712205600

# 手动触发AOF重写
192.168.1.51:5179> BGREWRITEAOF
Background append only file rewriting started

# 查看持久化状态
192.168.1.51:5179> INFO persistence
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1712205600
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

192.168.1.51:5179> EXIT

4.3 多线程配置

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

# 查看线程配置
192.168.1.51:5179> CONFIG GET io-threads
1) “io-threads”
2) “4”

192.168.1.51:5179> CONFIG GET io-threads-do-reads
1) “io-threads-do-reads”
2) “yes”

# 设置线程数
192.168.1.51:5179> CONFIG SET io-threads 8
OK

# 线程配置说明:
# io-threads: IO线程数,建议设置为CPU核心数
# io-threads-do-reads: 是否在IO线程中执行读操作

# 查看服务器信息
192.168.1.51:5179> INFO server
# Server
redis_version:2.0.0
server_name:tair
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:abc123
redis_mode:standalone
os:Linux 4.18.0-477.el8.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.5.0
process_id:12346
run_id:abc123def456
tcp_port:5179
uptime_in_seconds:3600
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:12345678
executable:/usr/local/tair/bin/tair-server
config_file:/etc/tair.conf
io_threads_active:1

192.168.1.51:5179> EXIT

生产环境建议:建议启用AOF持久化,设置appendfsync为everysec。多线程配置建议设置为CPU核心数。

5. 数据类型与操作

Tair支持多种数据类型,包括字符串、哈希、列表、集合、有序集合以及Tair特有的扩展数据结构。from:www.itpux.com

5.1 基础数据类型操作

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

# 字符串操作
192.168.1.51:5179> SET fgedu:name “风哥教程”
OK
192.168.1.51:5179> GET fgedu:name
“风哥教程”

# 哈希操作
192.168.1.51:5179> HSET fgedu:user:1 name “张三” age 30 email “zhangsan@fgedu.net.cn”
(integer) 3
192.168.1.51:5179> HGETALL fgedu:user:1
1) “name”
2) “张三”
3) “age”
4) “30”
5) “email”
6) “zhangsan@fgedu.net.cn”

# 列表操作
192.168.1.51:5179> LPUSH fgedu:list “item1” “item2” “item3”
(integer) 3
192.168.1.51:5179> LRANGE fgedu:list 0 -1
1) “item3”
2) “item2”
3) “item1”

# 集合操作
192.168.1.51:5179> SADD fgedu:set “member1” “member2” “member3”
(integer) 3
192.168.1.51:5179> SMEMBERS fgedu:set
1) “member1”
2) “member2”
3) “member3”

# 有序集合操作
192.168.1.51:5179> ZADD fgedu:zset 100 “member1” 200 “member2” 150 “member3”
(integer) 3
192.168.1.51:5179> ZRANGE fgedu:zset 0 -1 WITHSCORES
1) “member1”
2) “100”
3) “member3”
4) “150”
5) “member2”
6) “200”

192.168.1.51:5179> EXIT

5.2 Tair扩展数据结构

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

# TairBloom: 布隆过滤器
192.168.1.51:5179> TBLOOM.ADD fgedu:bloom “user1”
1) (integer) 1
192.168.1.51:5179> TBLOOM.EXISTS fgedu:bloom “user1”
1) (integer) 1
192.168.1.51:5179> TBLOOM.EXISTS fgedu:bloom “user999”
1) (integer) 0

# TairSearch: 搜索引擎
192.168.1.51:5179> TFT.CREATEINDEX fgedu:index SCHEMA title TEXT WEIGHT 1.0 content TEXT WEIGHT 0.5
OK
192.168.1.51:5179> TFT.ADD fgedu:index doc1 1.0 FIELDS title “风哥教程” content “数据库教程”
“OK”
192.168.1.51:5179> TFT.SEARCH fgedu:index “风哥”
1) (integer) 1
2) “doc1”
3) 1) “title”
2) “风哥教程”
3) “content”
4) “数据库教程”

# TairVector: 向量搜索
192.168.1.51:5179> TVS.CREATEINDEX fgedu:vector 128 HNSW
OK
192.168.1.51:5179> TVS.HSET fgedu:vector key1 VECTOR 128 [0.1,0.2,…] metadata “product1”
(integer) 1
192.168.1.51:5179> TVS.KNNSEARCH fgedu:vector 10 [0.1,0.2,…]
1) 1) “key1”
2) “0.0001”

# TairTS: 时序数据
192.168.1.51:5179> TS.CREATE fgedu:ts:cpu
OK
192.168.1.51:5179> TS.ADD fgedu:ts:cpu 1712205600000 80.5
(integer) 1712205600000
192.168.1.51:5179> TS.RANGE fgedu:ts:cpu – +
1) 1) (integer) 1712205600000
2) “80.5”

192.168.1.51:5179> EXIT

5.3 事务与Lua脚本

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

# 事务操作
192.168.1.51:5179> MULTI
OK
192.168.1.51:5179> SET fgedu:key1 “value1”
QUEUED
192.168.1.51:5179> SET fgedu:key2 “value2”
QUEUED
192.168.1.51:5179> EXEC
1) OK
2) OK

# Lua脚本
192.168.1.51:5179> EVAL “return redis.call(‘GET’, KEYS[1])” 1 fgedu:name
“风哥教程”

# 脚本缓存
192.168.1.51:5179> SCRIPT LOAD “return redis.call(‘GET’, KEYS[1])”
“abc123def456…”
192.168.1.51:5179> EVALSHA abc123def456… 1 fgedu:name
“风哥教程”

192.168.1.51:5179> EXIT

风哥提示:Tair的扩展数据结构是其核心优势,布隆过滤器用于去重,向量搜索用于推荐系统,时序数据用于监控场景。

6. 网络连接配置

网络连接配置是客户端访问数据库的关键,需要正确配置监听端口和连接方式。更多学习教程www.fgedu.net.cn

6.1 配置网络监听

# 查看当前监听端口
# netstat -tlnp | grep tair
tcp 0 0 127.0.0.1:5179 0.0.0.0:* LISTEN 12346/tair-server
tcp 0 0 192.168.1.51:5179 0.0.0.0:* LISTEN 12346/tair-server

# 修改监听配置
# vi /etc/tair.conf
bind 0.0.0.0

# 重启服务
# systemctl restart tair

# 配置防火墙
# firewall-cmd –permanent –add-port=5179/tcp
success
# firewall-cmd –reload
success

6.2 配置认证

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179

# 设置密码
192.168.1.51:5179> CONFIG SET requirepass “fgedupass123”
OK

# 使用密码连接
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123

# 或连接后认证
$ redis-cli -h 192.168.1.51 -p 5179
192.168.1.51:5179> AUTH fgedupass123
OK

# 永久设置密码
# vi /etc/tair.conf
requirepass fgedupass123

# 重启服务
# systemctl restart tair

6.3 配置主从复制

# 在从节点配置
# vi /etc/tair.conf
replicaof 192.168.1.51 5179
masterauth fgedupass123

# 重启从节点服务
# systemctl restart tair

# 在主节点查看复制状态
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123

192.168.1.51:5179> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.52,port=5179,state=online,offset=1234,lag=0
master_replid:abc123def456
master_repl_offset:1234

# 在从节点查看复制状态
192.168.1.52:5179> INFO replication
# Replication
role:slave
master_host:192.168.1.51
master_port:5179
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:1234

生产环境建议:建议配置密码认证,使用强密码。主从复制建议配置在专用网络,避免跨公网复制。

7. 备份恢复配置

备份恢复是数据库管理的重要环节,Tair提供了RDB和AOF两种持久化方式。学习交流加群风哥微信: itpux-com

7.1 RDB备份

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123

# 手动触发RDB快照
192.168.1.51:5179> BGSAVE
Background saving started

# 查看RDB状态
192.168.1.51:5179> LASTSAVE
(integer) 1712205600

# 查看RDB文件
# ls -la /data/tair/data/
总用量 1024
-rw-r–r–. 1 tair tair 512 4月 4 10:00 dump.rdb

# 复制RDB文件到备份目录
# cp /data/tair/data/dump.rdb /backup/tair/dump_$(date +%Y%m%d).rdb

# 验证备份文件
# ls -la /backup/tair/
总用量 512
-rw-r–r–. 1 root root 512 4月 4 10:00 dump_20260404.rdb

7.2 AOF备份

# 查看AOF文件
# ls -la /data/tair/data/
总用量 2048
-rw-r–r–. 1 tair tair 512 4月 4 10:00 appendonly.aof
-rw-r–r–. 1 tair tair 512 4月 4 10:00 dump.rdb

# 复制AOF文件到备份目录
# cp /data/tair/data/appendonly.aof /backup/tair/appendonly_$(date +%Y%m%d).aof

# 验证备份文件
# ls -la /backup/tair/
总用量 1024
-rw-r–r–. 1 root root 512 4月 4 10:00 appendonly_20260404.aof
-rw-r–r–. 1 root root 512 4月 4 10:00 dump_20260404.rdb

7.3 数据恢复

# 停止Tair服务
# systemctl stop tair

# 恢复RDB文件
# cp /backup/tair/dump_20260404.rdb /data/tair/data/dump.rdb
# chown tair:tair /data/tair/data/dump.rdb

# 恢复AOF文件
# cp /backup/tair/appendonly_20260404.aof /data/tair/data/appendonly.aof
# chown tair:tair /data/tair/data/appendonly.aof

# 启动Tair服务
# systemctl start tair

# 验证数据
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123

192.168.1.51:5179> GET fgedu:name
“风哥教程”

192.168.1.51:5179> EXIT

7.4 自动备份脚本

# 创建备份脚本
# vi /usr/local/bin/tair_backup.sh

#!/bin/bash
BACKUP_DIR=/backup/tair
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=/var/log/tair/backup.log

echo “=== Backup started at $(date) ===” >> $LOG_FILE

# 触发RDB快照
redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 BGSAVE >> $LOG_FILE 2>&1

# 等待快照完成
sleep 5

# 复制备份文件
cp /data/tair/data/dump.rdb ${BACKUP_DIR}/dump_${DATE}.rdb >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
echo “Backup completed successfully” >> $LOG_FILE
else
echo “Backup failed” >> $LOG_FILE
fi

# 清理30天前的备份
find ${BACKUP_DIR} -name “dump_*.rdb” -mtime +30 -delete >> $LOG_FILE 2>&1

echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE

# 设置脚本权限
# chmod +x /usr/local/bin/tair_backup.sh

# 配置定时任务
# crontab -e

# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/tair_backup.sh

风哥提示:生产环境建议同时启用RDB和AOF持久化,RDB用于快速恢复,AOF用于数据安全。备份文件建议存储在独立的存储设备或远程服务器上。

8. 升级与迁移

数据库升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com

8.1 版本升级

# 检查当前版本
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 INFO server | grep redis_version
redis_version:2.0.0

# 执行完整备份
# redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 BGSAVE

# 停止服务
# systemctl stop tair

# 备份配置文件
# cp /etc/tair.conf /etc/tair.conf.bak

# 下载新版本并编译安装
# cd /usr/local/src
# git clone https://github.com/alibaba/tair.git tair-new
# cd tair-new
# mkdir build && cd build
# cmake ..
# make -j$(nproc)
# make install DESTDIR=/usr/local/tair

# 启动服务
# systemctl start tair

# 验证版本
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123 INFO server | grep redis_version
redis_version:2.1.0

8.2 从Redis迁移

# 方法1:使用RDB文件迁移
# 在Redis上执行
$ redis-cli -h redis_host -p 6379 BGSAVE

# 复制RDB文件到Tair服务器
$ scp /var/lib/redis/dump.rdb tair_host:/data/tair/data/dump.rdb

# 在Tair服务器上
# chown tair:tair /data/tair/data/dump.rdb
# systemctl restart tair

# 方法2:使用主从复制迁移
# 在Tair上配置
# vi /etc/tair.conf
replicaof redis_host 6379

# 重启Tair
# systemctl restart tair

# 等待数据同步完成
$ redis-cli INFO replication

# 同步完成后断开复制
$ redis-cli REPLICAOF NO ONE

# 方法3:使用redis-cli –rdb迁移
$ redis-cli –rdb /tmp/dump.rdb -h redis_host -p 6379
$ redis-cli -h tair_host -p 5179 –pipe < /tmp/dump.rdb

生产环境建议:升级前必须执行完整备份,并在测试环境验证升级过程。从Redis迁移时建议使用主从复制方式,可以实现无缝迁移。

9. 生产环境实战案例

本节提供一个完整的生产环境配置案例,帮助读者更好地理解Tair的实际应用。from:www.itpux.com

9.1 高可用集群配置

# 创建Sentinel配置文件
# vi /etc/tair-sentinel.conf

port 26379
sentinel monitor fgedumaster 192.168.1.51 5179 2
sentinel auth-pass fgedumaster fgedupass123
sentinel down-after-milliseconds fgedumaster 30000
sentinel parallel-syncs fgedumaster 1
sentinel failover-timeout fgedumaster 180000
logfile /var/log/tair/sentinel.log
dir /data/tair

# 创建Sentinel服务文件
# vi /etc/systemd/system/tair-sentinel.service

[Unit]
Description=Tair Sentinel
After=network.target

[Service]
Type=forking
User=tair
Group=tair
ExecStart=/usr/local/tair/bin/tair-server /etc/tair-sentinel.conf –sentinel
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

# 启动Sentinel
# systemctl daemon-reload
# systemctl start tair-sentinel
# systemctl enable tair-sentinel

# 查看Sentinel状态
$ redis-cli -p 26379 INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=fgedumaster,status=ok,address=192.168.1.51:5179,slaves=1,sentinels=3

9.2 性能监控

# 连接Tair
$ redis-cli -h 192.168.1.51 -p 5179 -a fgedupass123

# 查看统计信息
192.168.1.51:5179> INFO stats
# Stats
total_connections_received:100
total_commands_processed:10000
instantaneous_ops_per_sec:100
total_net_input_bytes:1000000
total_net_output_bytes:10000000
instantaneous_input_kbps:100.00
instantaneous_output_kbps:1000.00
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:0
expired_keys:10
evicted_keys:0
keyspace_hits:5000
keyspace_misses:100

# 查看客户端连接
192.168.1.51:5179> CLIENT LIST
id=1 addr=127.0.0.1:12345 fd=8 name= age=3600 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

# 查看慢查询日志
192.168.1.51:5179> SLOWLOG GET 10
1) 1) (integer) 1
2) (integer) 1712205600
3) (integer) 10000
4) 1) “KEYS”
2) “*”
5) “192.168.1.100:12345”
6) “client1”

# 查看内存使用
192.168.1.51:5179> MEMORY USAGE fgedu:name
(integer) 64

192.168.1.51:5179> EXIT

9.3 性能测试

# 使用redis-benchmark进行性能测试
$ redis-benchmark -h 192.168.1.51 -p 5179 -a fgedupass123 -t set,get -n 100000 -c 50

# 输出示例:
====== SET ======
100000 requests completed in 1.00 seconds
50 parallel clients
3 bytes payload
keep alive: 1
host configuration “save”: 900 1 300 10 60 10000
host configuration “appendonly”: yes
multi-thread: yes
threads: 4

Latency by percentile distribution:
0.000% <= 0.031 milliseconds (cumulative count 1) 50.000% <= 0.127 milliseconds (cumulative count 50123) 75.000% <= 0.159 milliseconds (cumulative count 75234) 87.500% <= 0.191 milliseconds (cumulative count 87654) 93.750% <= 0.223 milliseconds (cumulative count 93765) 96.875% <= 0.255 milliseconds (cumulative count 96876) 98.438% <= 0.287 milliseconds (cumulative count 98432) 99.219% <= 0.319 milliseconds (cumulative count 99218) 99.609% <= 0.351 milliseconds (cumulative count 99609) 99.805% <= 0.383 milliseconds (cumulative count 99805) 99.902% <= 0.415 milliseconds (cumulative count 99902) 99.951% <= 0.447 milliseconds (cumulative count 99951) 99.976% <= 0.479 milliseconds (cumulative count 99976) 99.988% <= 0.511 milliseconds (cumulative count 99988) 99.994% <= 0.543 milliseconds (cumulative count 99994) 99.997% <= 0.575 milliseconds (cumulative count 99997) 99.998% <= 0.607 milliseconds (cumulative count 99998) 99.999% <= 0.639 milliseconds (cumulative count 99999) 100.000% <= 0.671 milliseconds (cumulative count 100000) Summary: throughput summary: 100000.00 requests per second latency summary (msec): avg min p50 p95 p99 max 0.128 0.032 0.127 0.183 0.239 0.671

风哥提示:Tair的扩展数据结构是其核心优势,建议根据业务场景选择合适的数据结构。生产环境建议使用Sentinel实现高可用,并配置监控告警。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息