CN107688611B - 一种基于saltstack的Redis键值管理系统及方法 - Google Patents

一种基于saltstack的Redis键值管理系统及方法 Download PDF

Info

Publication number
CN107688611B
CN107688611B CN201710655955.4A CN201710655955A CN107688611B CN 107688611 B CN107688611 B CN 107688611B CN 201710655955 A CN201710655955 A CN 201710655955A CN 107688611 B CN107688611 B CN 107688611B
Authority
CN
China
Prior art keywords
key value
redis
information
meta
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710655955.4A
Other languages
English (en)
Other versions
CN107688611A (zh
Inventor
顾伟涛
于伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Mingshitang Digital Technology Co ltd
Original Assignee
Hangzhou Ming Shitang Education And Science Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Ming Shitang Education And Science Development Co Ltd filed Critical Hangzhou Ming Shitang Education And Science Development Co Ltd
Priority to CN201710655955.4A priority Critical patent/CN107688611B/zh
Publication of CN107688611A publication Critical patent/CN107688611A/zh
Application granted granted Critical
Publication of CN107688611B publication Critical patent/CN107688611B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于saltstack的Redis键值管理系统及方法,该系统包括管理节点、数据库节点和存储节点;数据库节点:运行Redis主从集群的节点;Redis主库和Redis从库服务器需要部署saltstack客户端;存储节点:存储Redis键值数据,便于进行Redis键值恢复操作,部署saltstack客户端;管理节点:存储Redis主从集群元信息、键值备份元信息、存储节点元信息和数据库节点元信息,部署Web应用服务和saltstack管理端;通过saltstack管理端发送相应的指令到存储节点的saltstack客户端,实现传输键值备份文件,从而简化备份和恢复操作。本发明支持单个或者多个键值的查看、备份、删除和恢复操作。操作简单,在平台界面填写少量信息,即可一键操作。操作安全可靠,提升工作效率,降低人工维护成本。

Description

一种基于saltstack的Redis键值管理系统及方法
技术领域
本发明属于计算机技术领域,应用于Redis数据库的应用场景,主要针对单个或者多个键值的查看、备份、删除和恢复等管理,简化操作流程,大大提升操作效率。
背景技术
对于互联网公司而言,Redis数据库作为缓存和高性能存储方案,应用越来越广泛,由于业务不同,对Redis的操作需求也千差万别,对于单个或者多个键值的操作,也日渐增多,但是,现有Redis键值管理方案存在如下缺点:
1)一般是针对所有键值的操作,对单个或者多个键值的支持不够有好。
2)操作效率低下,需要较多的人力成本。
3)操作风险较大,并且无法做到恢复。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于saltstack的Redis键值管理系统及方法,基于saltstack可以方便地获取到Redis主从集群的元信息,以及管理备份文件,方便备份和恢复操作。
本发明的目的是通过以下技术方案来实现的:一种基于saltstack的Redis键值管理系统,该系统包括管理节点、数据库节点和存储节点;
数据库节点:运行Redis主从集群的节点,每个Redis主从集群包括一个Redis主库和一个或者多个Redis从库;不同的Redis主从集群端口不同,同一个Redis主从集群的主库和从库端口一致;Redis主库和Redis从库服务器需要部署saltstack客户端,用于接收saltstack管理端发送的指令和完成相应的操作;将数据库节点的主机名和IP记录到数据库节点元信息中;
存储节点:存储Redis键值数据,便于进行Redis键值恢复操作,存储节点需要部署saltstack客户端,用于接收saltstack管理端发送的指令和完成相应的操作;将存储节点的主机名、IP、存储路径记录到存储节点元信息中;
管理节点:存储所有元信息,包括Redis主从集群元信息、键值备份元信息、存储节点元信息和数据库节点元信息;同时,在管理节点上部署Web应用服务和saltstack管理端;通过saltstack管理端发送相应的指令到数据库节点的saltstack客户端,可以收集Redis主从集群元信息;通过saltstack管理端发送相应的指令到存储节点的saltstack客户端,可以实现传输键值备份文件,从而简化备份和恢复操作;Web应用服务可以实现平台化管理,简化Redis键值管理。
进一步地,所述管理节点包括平台化管理模块、元信息管理模块、键值查看模块、键值备份模块、键值删除模块、存储管理模块和键值恢复模块;
所述平台化管理模块,需要传入参数为:端口号、键值名和键值类型;键值类型表示键值名的类型,包括前缀和全称两种,如果是前缀,表示键值名是某些键值的打头部分,如果是全称,表示键值名是一个具体的键值,默认类型是前缀;在管理节点上,部署Web应用服务,提供一个Web界面,提供查看、备份、删除和恢复四个选项,分别调用键值查看模块、键值备份模块、键值删除模块和键值恢复模块;
所述元信息管理模块,需要传入参数为:数据库节点元信息、存储节点元信息;在管理节点上,通过saltstack接口,首先把所有的saltstack客户端注册到saltstack管理端,然后,获取到所有数据库节点上的Redis进程信息,得到每个Redis数据库端口号、密码,记录每个Redis数据库的端口号、IP、密码到Redis主从集群元信息中;在存储管理模块执行结束后,得到键值备份文件名,解析所述键值备份文件名得到Redis端口号、键值名和日期,记录所述端口号、键值名、键值备份文件名和日期到键值备份元信息;如果数据库节点或者存储节点发生变更,人工修改数据库节点元信息或者存储节点元信息;
所述键值备份模块,需要传入的参数:端口号、键值名、键值类型;在管理节点上,部署PHP环境以及Redis驱动;根据传入的端口号查询Redis主从集群元信息,随机选择一个所述端口号相关的Redis数据库IP以及对应的密码,根据所述Redis数据库IP、端口号和密码,建立PHP和Redis的连接;根据传入的键值名、键值类型,进行键值匹配操作,实现指定键值的备份;本模块执行成功后,返回键值备份文件名;
所述键值查看模块,需要传入的参数:端口号、键值名、键值类型;包括查看键值的个数以及部分键值,方便管理员了解键值名相关的信息;在管理节点上,根据所述端口号,查询所述Redis主从集群元信息,随机得到一个所述端口号对应的Redis数据库的IP和密码,建立PHP和Redis的连接,根据键值名、键值类型,执行如下操作:如果键值类型是全称,那么调用Redis自身接口SCAN,不需要设置模糊匹配参数*,返回执行结果即可,如果键值类型是前缀,调用Redis自身接口SCAN,需要设置模糊匹配参数*,同时调用系统函数COUNT(),计算所有匹配到的键值的数量,并且打印部分键值的名字;
所述键值删除模块,需要传入的参数:端口号、键值名、键值类型;本模块执行之前,会自动调用键值备份模块,用于备份指定的键值,方便后续执行恢复键值操作;如果键值备份模块执行失败,本模块无法执行;否则,根据传入的端口号,查询Redis主从集群元信息,随机得到一个对应的Redis数据库的IP和密码,建立PHP和Redis的连接,获取Redis的role信息,如果是slave,调用Redis接口,获取Redis主库的IP,如果是master,直接执行下面的操作:如果键值类型是全称,那么调用Redis自身接口SCAN,不需要传入匹配参数*,对于匹配到的键值,调用Redis自身接口DEL,即可删除所述键值;如果键值类型是前缀,那么调用Redis自身接口SCAN,需要传入匹配参数*,针对匹配到的键值,调用Redis自身接口DEL,采用循环方式,逐个删除匹配到的所有键值。
所述存储管理模块,需要传入的参数:存储节点元信息、键值备份文件名;根据存储节点元信息解析得到存储节点主机名和存储路径;在键值备份模块执行结束后,返回键值备份文件名,在管理节点上,调用saltstack接口,发送键值备份文件到存储节点上,根据键值备份文件名解析得到端口号、键值名和日期,然后把端口号、键值名、键值备份文件名和日期写入到键值备份元信息;
所述键值恢复模块,需要传入的参数为:端口号、键值备份文件名;在管理节点上,扫描所述键值备份文件名,如果不存在,返回失败,表示不存在指定的备份文件,无法执行恢复操作,否则,根据所述端口号,查询Redis主从集群元信息,随机得到一个对应的Redis数据库的IP和密码,建立PHP与Redis的连接,调用Redis接口,查询role,如果role是slave,根据Redis接口获取maser的IP,恢复键值数据。
一种基于saltstack的Redis键值管理方法,该方法包括以下步骤:
(1)调用元信息管理模块,在管理节点上保存存储节点元信息、数据库节点元信息、Redis主从集群元信息和键值备份元信息;
其中,存储节点元信息包括:存储节点的主机名、存储路径,如果存储节点发生变更,需要人工更新所述存储节点元信息;
数据库节点元信息包括数据库节点主机名、IP以及存储路径,如果所述数据库节点发生变更,需要人工变更所述数据库节点元信息;
Redis主从集群元信息包括所有Redis主从集群的端口号以及主从库的IP和密码;在管理节点上通过saltstack发送相应的指令到数据库节点的saltstack客户端,采集到所有的Redis主从集群元信息;
键值备份元信息包括端口号、键值名、键值备份文件名和日期,存储管理模块执行结束后,更新所述键值备份元信息;
在数据库节点上部署Redis主从集群,每个Redis主从集群的主库和从库端口号一致,并且采用端口号唯一标识一个Redis主从集群,每个Redis主从集群包括一个Redis主库,一个或者多个Redis从库;
(2)调用键值备份模块,对指定的键值名进行分析后,调用Redis自身接口备份所述键值,并返回键值备份文件名;所述键值备份文件名格式为:端口号_键值名_时间戳.sql,其中,端口号为Redis主从集群的端口号,键值名为传入的参数,时间戳表示备份执行开始的时间戳;采用上述命名方式,可以解析得到端口号的键值名以及时间戳,便于存储管理模块和键值恢复模块调用;
(3)调用键值查看模块,根据传入的参数,可以得到所述键值名相关的数量,以及部分键值的名字信息,便于管理员了解所述键值名相关的信息;
(4)调用键值删除模块,执行本模块之前,自动调用键值备份模块,备份相关键值,然后清理所述键值名对应的所有键值;
(5)调用存储管理模块,在键值备份模块执行结束后,返回键值备份文件名,本模块将键值备份文件上传到存储节点对应的存储路径,同时,定期清理过期的键值备份文件,以及统计所述键值备份元信息,便于平台化管理模块调用;
(6)调用键值恢复模块,在键值备份模块和键值删除模块执行结束后,如果需要恢复操作,执行本模块,可以恢复所需键值;
(7)调用平台化管理模块,在管理节点上启动Web应用服务,提供一个Web界面,提供查看、备份、删除和恢复四个选项,分别调用键值查看模块、键值备份模块、键值删除模块和键值恢复模块。本模块首先调用元信息管理模块,根据传入的端口号,获取到Redis主从集群元信息,从而可以根据操作需求,分别执行“查看”、“备份”、“删除”和“恢复”操作。本模块可以实现一键操作,降低了操作风险,而且提高了操作效率。
本发明的有益效果是:
(1)功能全面,支持单个或者多个键值的查看、备份、删除和恢复操作。
(2)操作简单,在平台界面填写少量信息,即可一键操作。
(3)操作安全可靠,大大降低操作风险。
(4)提升工作效率,降低人工维护成本。
附图说明
图1是本发明Redis键值管理系统架构图;
图2是本发明Redis键值管理系统的管理节点各个模块流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明提供的一种基于saltstack的Redis键值管理系统,该系统包括数据库节点、存储节点和管理节点三个单元。
(1)数据库节点:在数据库节点上部署Redis主从集群,每个Redis主从集群包括一个主库和一个或者多个从库,每个Redis主从集群中,主库和从库端口号一致,不同的Redis主从集群,端口号唯一;同时,在数据库节点上部署saltstack客户端,部署方式如下:
#yum install salt-minion–y
然后,修改/etc/salt/minion文件如下一行:
master:saltstack管理端IP
启动saltstack客户端方式:
#service salt-minion start
最后,把数据库节点的主机名和IP记录到管理节点的数据库节点元信息中。
(2)存储节点:在存储节点固话存储路径,为了防止磁盘故障,至少规划两个存储路径,用于存放键值备份文件。同时,按照如上方式部署和启动saltstack客户端。并且,把存储节点的主机名、IP、存储路径记录到管理节点的存储节点元信息中。
(3)管理节点:在管理节点上部署saltstack管理端,部署方式如下:
#yum install salt-master–y
启动saltstack管理端方式如下:
#service salt-master start
在管理节点上,分别记录数据库节点元信息和存储节点元信息,如果数据库节点或者存储节点发生变更,需要人工更新相应的元信息,由于变更很不频繁,所以,人工维护成本很低。在管理节点上,通过saltstack接口,获取到数据库节点上所有Redis主从集群的端口号、服务器主机名和Redis密码,记录到管理节点的Redis主从集群元信息中。存储管理模块执行结束后,在管理节点记录键值备份元信息。
如图2所示,管理节点各个模块的实现流程如下:
(1)平台化管理模块
在管理节点上,部署Web应用服务,提供一个Web界面,需要传入参数:端口号、键值名和键值类型,其中,键值类型表示键值名的类型,包括前缀和全称两种,如果是前缀,表示键值名是某些键值的打头部分;如果是全称,表示所述键值名是一个具体的键值,默认类型是前缀。界面提供“查看”、“备份”、“删除”和“恢复”四个按钮,分别调用键值查看模块、键值备份模块、键值删除模块和键值恢复模块。填写以上参数后,点击按钮,即可完成对应的操作,操作简单可靠。
(2)元信息管理模块
需要传入参数:数据库节点元信息、存储节点元信息
在管理节点上,通过saltstack接口,首先把所有的saltstack客户端注册到saltstack管理端,方式如下:
#salt-key–y–a服务器主机名
所述服务器主机名是运行了saltstack客户端的服务器主机名,这里是指数据库节点和存储节点的所有服务器。上述命令每次注册一个服务器到saltstack管理端。
然后,在管理节点上,调用saltstack接口,获取到所有数据库节点上的Redis进程信息,方式如下:
#salt‘数据库节点主机名’cmd.run‘ps–ef|egrep Redis-server|grep–vgrep-’>临时文件
对所述临时文件解析,得到每个Redis数据库端口号以及配置文件,解析配置文件,可以得到密码。记录每个Redis数据库的端口号、IP、密码到Redis主从集群元信息中。对以上操作进行封装,采用定时任务形式定期更新,可以得到Redis主从集群的最新信息。定时任务如下:
11 12,19***/bin/sh封装脚本
所述封装脚本是封装了以上操作的shell脚本。
在存储管理模块执行结束后,得到键值备份文件名,解析所述键值备份文件名,得到Redis端口号、键值名和日期,记录所述端口号、键值名、键值备份文件名和日期到键值备份元信息,便于平台化管理模块调用。
如果数据库节点或者存储节点发生变更,需要人工修改数据库节点元信息或者存储节点元信息。
(3)键值备份模块
需要传入参数:端口号、键值名、键值类型
为了方便实现键值备份模块,本发明采用了php语言编写相关代码,所以,在管理节点上,需要部署php环境以及Redis驱动。然后,根据传入的端口号,查询Redis主从集群元信息,随机选择一个所述端口号相关的Redis数据库IP以及对应的密码,根据所述Redis数据库IP、端口号和密码,建立PHP和Redis的连接,然后,根据传入的键值名、键值类型,进行如下操作:
(3.1)如果键值类型是“全称”,采用如下方式匹配键值:
首先调用Redis自身接口SCAN,需要传入的参数为迭代器和键值名,不要传入匹配参数*,返回键值的全称名字,接下来调用Redis资深接口TYPE,需要传入所述键值的全称名字,返回键值type类型。如果键值type类型是string,那么调用Redis资深接口GET,返回所述键值对应的值;如果键值type类型是set,那么调用Redis自身接口SMEMBERS,传入所述键值全称名字,返回对应的值;如果所述键值type类型是list,那么调用Redis自身接口LRANGE,传入所述键值全称名字,返回对应的值;如果键值type类型是zset,那么调用Redis资深接口ZRANGE,传入所述键值全称名字,返回对应的值;如果所述键值type类型是hash,那么调用Redis自身接口HGETALL,传入所述键值全称名字,返回对应的值。
(3.2)如果键值类型是“前缀”,采用如下方式匹配键值:
首先调用Redis自身接口SCAN,需要传入键值名、迭代器和匹配参数*,由于模糊匹配返回结果可能存在多个,所以采用循环方式处理匹配到的键值全称名字。针对每个匹配到的键值,进行如下操作:
调用Redis资深接口TYPE,需要传入所述键值的全称名字,返回键值type类型。如果键值type类型是string,那么调用Redis资深接口GET,返回所述键值对应的值;如果键值type类型是set,那么调用Redis自身接口SMEMBERS,传入所述键值全称名字,返回对应的值;如果所述键值type类型是list,那么调用Redis自身接口LRANGE,传入所述键值全称名字,返回对应的值;如果键值type类型是zset,那么调用Redis资深接口ZRANGE,传入所述键值全称名字,返回对应的值;如果所述键值type类型是hash,那么调用Redis自身接口HGETALL,传入所述键值全称名字,返回对应的值。
无论键值类型是“全称”还是“前缀”,得到键值全称名字后,执行如下操作:针对所述键值全称名字,调用Redis资深接口TTL,获取所述键值对应的过期时间以及当前的时间点,然后,记录如下信息到键值备份文件中:键值全称名字、键值type类型、键值过期时间、备份时间点、键值对应的值;
默认键值存储在Redis的数据库0中,通过以上方法,实现了指定键值的备份,便于键值恢复模块调用。
本模块执行结束后,返回键值备份文件名,如果执行失败,返回“本次备份失败”信息。
(4)键值查看模块
需要传入参数:端口号、键值名、键值类型
本模块主要包括查看键值的个数以及部分键值,方便管理员了解键值名相关的信息。在管理节点上,根据所述端口号,查询所述Redis主从集群元信息,随机得到一个所属端口号对应的Redis数据库的IP和密码,然后建立PHP和Redis的连接,然后根据键值名、键值类型,分别执行如下操作:
(4.1)键值类型是“全称”
调用Redis自身接口SCAN,传入迭代器和所述键值名,不要传入匹配参数*,返回结果包含键值名和个数;如果存在所述键值,那么键值数量为1,键值名就是键值全称名字;如果不存在所述键值,那么所述键值数量为0。
(4.2)键值类型是“前缀”
调用Redis自身接口SCAN,传入迭代器、键值名和匹配参数*,同时调用系统函数COUNT进行计数,得到所述键值名匹配到的键值数量。同时,打印键值全称名字,根据系统函数COUNT控制输出的数量。
(5)键值删除模块
需要传入参数:端口号、键值名、键值类型
本模块主要是删除指定的键值,本模块执行之前,会自动调用键值备份模块,用于备份指定的键值,方便后续执行恢复键值操作。如果键值备份模块执行失败,本模块无法执行;否则,可以执行本模块。根据传入的端口号,查询Redis主从集群元信息,随机得到一个对应的Redis数据库的IP和密码,然后建立PHP和Redis的连接,获取Redis的role信息,如果是slave,调用Redis接口,获取Redis主库的IP,如果role是master,那么继续执行下面的操作:
(5.1)键值类型是“全称”
$Redis->del($one_key);
(5.2)键值类型是“前缀”
while($arr_keys=$Redis->scan($it,$p['prekey'].'*')){
$Redis->del($arr_keys);}
(6)存储管理模块
需要传入参数:存储节点元信息、键值备份文件名
根据存储节点元信息,解析的到存储节点主机名和存储路径。在键值备份模块执行结束后,返回键值备份文件名,如果键值备份模块执行失败,本模块无法执行。在管理节点上,调用saltstack接口,发送键值备份文件到存储节点上,方式如下:
salt-cp'存储节点主机名'键值备份文件名存储路径
执行成功后,根据键值备份文件名解析得到端口号、键值名和日期,然后把端口号、键值名、键值备份文件名和日期写入到键值备份元信息;
在管理节点,定期扫描键值备份元信息,清理7天之前的键值备份文件,方式如下:
#salt‘存储节点主机名’‘cd存储路径&&rm–rf过期的键值备份文件’
(7)键值恢复模块
需要传入参数:端口号、键值备份文件名
在管理节点上,扫描所述键值备份文件名,如果不存在,返回失败,表示不存在指定的备份文件,无法执行恢复操作。否则,按照如下方式进行恢复键值数据:
根据所述端口号,查询Redis主从集群元信息,随机得到一一对应的Redis数据库的IP和密码,建立PHP与Redis的连接,调用Redis接口,查询role,如果role是slave,根据Redis接口,获取maser的IP,然后执行如下操作,恢复键值数据:
每次读取键值备份文件50MB内容,然后对其进行逐行扫描并解析得到如下内容:键值全称名字、键值type类型、备份时间点、过期时间以及键值对应的值,同时,调用系统函数time()得到当前的时间点,进行如下操作:
如果过期时间是-1,那么新过期时间等于-1,否则按照如下方式得到新过期时间:
新过期时间=过期时间–(当前时间点–备份时间点)
如果新过期时间小于或者等于0,表示该键值已经过期,那么跳过本次操作,继续下一行扫描和解析操作,如果新过期时间大于0,那么根据键值type类型不同,执行如下操作:
如果键值type类型是string,那么调用Redis自身接口SET,传入键值全称名字、键值对应的值以及新过期时间,写入到指定的Redis主库中;如果键值type类型是hash,那么调用Redis自身接口HMSET,传入键值全称名字、键值对应的值和新过期时间,写入到指定的Redis主库中;如果键值type类型是list,针对键值对应的值,采用循环方式,得到list每个元素,然后逐个调用Redis自身接口LPUSH,传入键值全称名字、元素和新过期时间,写入到指定的Redis主库中;如果键值type类型是set,那么调用Redis自身接口sAddArray,传入键值全称名字、键值对应的值以及新过期时间,写入到指定的Redis主库中;如果键值type类型是zset,那么调用Redis自身接口zAdd,传入键值全称名字、键值对应的值以及新过期时间,写入到指定的Redis主库中。
执行成功后,返回“恢复所述端口号指定的键值名成功“,否则返回“恢复数据失败”。
在平台化管理模块中,选择“恢复”功能,即可执行入行操作,简单可靠。

Claims (3)

1.一种基于saltstack的Redis键值管理系统,其特征在于,该系统包括管理节点、数据库节点和存储节点;
数据库节点:运行Redis主从集群的节点,每个Redis主从集群包括一个Redis主库和一个或者多个Redis从库;不同的Redis主从集群端口不同,同一个Redis主从集群的主库和从库端口一致;Redis主库和Redis从库服务器需要部署saltstack客户端,用于接收saltstack管理端发送的指令和完成相应的操作;将数据库节点的主机名和IP记录到数据库节点元信息中;
存储节点:存储Redis键值数据,便于进行Redis键值恢复操作,存储节点需要部署saltstack客户端,用于接收saltstack管理端发送的指令和完成相应的操作;将存储节点的主机名、IP、存储路径记录到存储节点元信息中;
管理节点:存储所有元信息,包括Redis主从集群元信息、键值备份元信息、存储节点元信息和数据库节点元信息;同时,在管理节点上部署Web应用服务和saltstack管理端;通过saltstack管理端发送相应的指令到数据库节点的saltstack客户端,可以收集Redis主从集群元信息;通过saltstack管理端发送相应的指令到存储节点的saltstack客户端,可以实现传输键值备份文件,从而简化备份和恢复操作;Web应用服务实现平台化管理,简化Redis键值管理。
2.根据权利要求1所述的基于saltstack的Redis键值管理系统,其特征在于,所述管理节点包括平台化管理模块、元信息管理模块、键值查看模块、键值备份模块、键值删除模块、存储管理模块和键值恢复模块;
所述平台化管理模块,需要传入参数为:端口号、键值名和键值类型;键值类型包括前缀和全称两种,如果是前缀,表示键值名是某些键值的打头部分;如果是全称,表示键值名是一个具体的键值,默认类型是前缀;在管理节点上,部署Web应用服务,提供一个Web界面,提供查看、备份、删除和恢复四个选项,分别调用键值查看模块、键值备份模块、键值删除模块和键值恢复模块;
所述元信息管理模块,需要传入参数为:数据库节点元信息、存储节点元信息;在管理节点上,通过saltstack接口,首先把所有的saltstack客户端注册到saltstack管理端,然后,获取到所有数据库节点上的Redis进程信息,得到每个Redis数据库端口号、密码,记录每个Redis数据库的端口号、IP、密码到Redis主从集群元信息中;在存储管理模块执行结束后,得到键值备份文件名,解析所述键值备份文件名得到Redis端口号、键值名和日期,记录所述端口号、键值名、键值备份文件名和日期到键值备份元信息;如果数据库节点或者存储节点发生变更,人工修改数据库节点元信息或者存储节点元信息;
所述键值备份模块,需要传入的参数:端口号、键值名、键值类型;在管理节点上,部署PHP环境以及Redis驱动;根据传入的端口号查询Redis主从集群元信息,随机选择一个所述端口号相关的Redis数据库IP以及对应的密码,根据所述Redis数据库IP、端口号和密码,建立PHP和Redis的连接;根据传入的键值名、键值类型,进行键值匹配操作,实现指定键值的备份;本模块执行成功后,返回键值备份文件名;
所述键值查看模块,需要传入的参数:端口号、键值名、键值类型;包括查看键值的个数以及部分键值,方便管理员了解键值名相关的信息;在管理节点上,根据所述端口号,查询所述Redis主从集群元信息,随机得到一个所述端口号对应的Redis数据库的IP和密码,建立PHP和Redis的连接,根据键值名、键值类型,执行如下操作:如果键值类型是全称,那么调用Redis自身接口SCAN,不需要设置模糊匹配参数*,返回执行结果即可,如果键值类型是前缀,调用Redis自身接口SCAN,需要设置模糊匹配参数*,同时调用系统函数COUNT(),计算所有匹配到的键值的数量,并且打印部分键值的名字;
所述键值删除模块,需要传入的参数:端口号、键值名、键值类型;本模块执行之前,自动调用键值备份模块,用于备份指定的键值,方便后续执行恢复键值操作;如果键值备份模块执行失败,本模块无法执行;否则,根据传入的端口号,查询Redis主从集群元信息,随机得到一个对应的Redis数据库的IP和密码,建立PHP和Redis的连接,获取Redis的role信息,如果是slave,调用Redis接口,获取Redis主库的IP,如果是master,直接执行下面的操作:如果键值类型是全称,那么调用Redis自身接口SCAN,不需要传入匹配参数*,对于匹配到的键值,调用Redis自身接口DEL,即可删除所述键值;如果键值类型是前缀,那么调用Redis自身接口SCAN,需要传入匹配参数*,针对匹配到的键值,调用Redis自身接口DEL,采用循环方式,逐个删除匹配到的所有键值;
所述存储管理模块,需要传入的参数:存储节点元信息、键值备份文件名;根据存储节点元信息解析得到存储节点主机名和存储路径;在键值备份模块执行结束后,返回键值备份文件名,在管理节点上,调用saltstack接口,发送键值备份文件到存储节点上,根据键值备份文件名解析得到端口号、键值名和日期,然后把端口号、键值名、键值备份文件名和日期写入到键值备份元信息;
所述键值恢复模块,需要传入的参数为:端口号、键值备份文件名;在管理节点上,扫描键值备份文件名,如果不存在,返回失败,表示无法执行恢复操作,否则,根据所述端口号查询Redis主从集群元信息,随机得到一个对应的Redis数据库的IP和密码,建立PHP与Redis的连接,调用Redis接口,查询role,如果role是slave,根据Redis接口获取maser的IP,恢复键值数据。
3.一种基于saltstack的Redis键值管理方法,其特征在于,该方法包括以下步骤:
(1)调用元信息管理模块,在管理节点上保存存储节点元信息、数据库节点元信息、Redis主从集群元信息和键值备份元信息;
其中,存储节点元信息包括:存储节点的主机名、存储路径,如果存储节点发生变更,需要人工更新所述存储节点元信息;
数据库节点元信息包括数据库节点主机名、IP以及存储路径,如果所述数据库节点发生变更,需要人工变更所述数据库节点元信息;
Redis主从集群元信息包括所有Redis主从集群的端口号以及主从库的IP和密码;在管理节点上通过saltstack发送相应的指令到数据库节点的saltstack客户端,采集到所有的Redis主从集群元信息;
键值备份元信息包括端口号、键值名、键值备份文件名和日期,存储管理模块执行结束后,更新所述键值备份元信息;
在数据库节点上部署Redis主从集群,每个Redis主从集群的主库和从库端口号一致,并且采用端口号唯一标识一个Redis主从集群,每个Redis主从集群包括一个Redis主库,一个或者多个Redis从库;
(2)调用键值备份模块,对指定的键值名进行分析后,调用Redis自身接口备份所述键值,并返回键值备份文件名;所述键值备份文件名格式为:端口号_键值名_时间戳.sql,其中,端口号为Redis主从集群的端口号,键值名为传入的参数,时间戳表示备份执行开始的时间戳;采用上述键值备份文件名格式的命名方式,可以解析得到端口号的键值名以及时间戳,便于存储管理模块和键值恢复模块调用;
(3)调用键值查看模块,根据传入的参数,可以得到所述键值名相关的数量,以及部分键值的名字信息,便于管理员了解所述键值名相关的信息;
(4)调用键值删除模块,执行本模块之前,自动调用键值备份模块,备份相关键值,然后清理所述键值名对应的所有键值;
(5)调用存储管理模块,在键值备份模块执行结束后,返回键值备份文件名,本模块将键值备份文件上传到存储节点对应的存储路径,同时,定期清理过期的键值备份文件,以及统计所述键值备份元信息,便于平台化管理模块调用;
(6)调用键值恢复模块,在键值备份模块和键值删除模块执行结束后,如果需要恢复操作,执行本模块,可以恢复所需键值;
(7)调用平台化管理模块,在管理节点上启动Web应用服务,提供一个Web界面,提供查看、备份、删除和恢复四个选项,分别调用键值查看模块、键值备份模块、键值删除模块和键值恢复模块。
CN201710655955.4A 2017-08-03 2017-08-03 一种基于saltstack的Redis键值管理系统及方法 Active CN107688611B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710655955.4A CN107688611B (zh) 2017-08-03 2017-08-03 一种基于saltstack的Redis键值管理系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710655955.4A CN107688611B (zh) 2017-08-03 2017-08-03 一种基于saltstack的Redis键值管理系统及方法

Publications (2)

Publication Number Publication Date
CN107688611A CN107688611A (zh) 2018-02-13
CN107688611B true CN107688611B (zh) 2020-02-28

Family

ID=61152487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710655955.4A Active CN107688611B (zh) 2017-08-03 2017-08-03 一种基于saltstack的Redis键值管理系统及方法

Country Status (1)

Country Link
CN (1) CN107688611B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509540A (zh) * 2018-03-16 2018-09-07 中国银行股份有限公司 基于redis集群的多键值命令处理方法及系统
CN108549682A (zh) * 2018-03-30 2018-09-18 宁波诺信睿聚投资有限责任公司 数据对象资源的管理方法、装置、设备及存储介质
CN109063040B (zh) * 2018-07-17 2020-07-07 清华大学 客户端程序数据采集方法及系统
CN110781190A (zh) * 2019-10-29 2020-02-11 北京金和网络股份有限公司 对Redis hash的每个field进行过期管理的方法
CN111125095B (zh) * 2019-11-26 2023-11-10 北京文渊佳科技有限公司 数据前缀添加的方法、装置、电子设备及介质
CN113139081B (zh) * 2021-04-27 2023-10-27 中山亿联智能科技有限公司 高效率低延迟上报读取用户在线播放信息的方法
CN116266152A (zh) * 2021-12-16 2023-06-20 中移(苏州)软件技术有限公司 一种信息处理方法及装置、存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103501237B (zh) * 2013-09-03 2017-03-15 小米科技有限责任公司 设备管理方法、管理平台、设备及系统
CN103631924B (zh) * 2013-12-03 2018-08-31 Tcl集团股份有限公司 一种分布式数据库平台的应用方法和系统
US20160055233A1 (en) * 2014-08-25 2016-02-25 Ca, Inc. Pre-join tags for entity-relationship modeling of databases
CN104468274A (zh) * 2014-12-16 2015-03-25 深圳大学 一种集群监控管理方法及系统
CN105426451A (zh) * 2015-11-11 2016-03-23 深圳市华讯方舟科技有限公司 一种基于键值对的数据处理方法及系统
CN105677251B (zh) * 2016-01-05 2018-12-21 上海瀚之友信息技术服务有限公司 基于Redis集群的存储系统
CN106934048A (zh) * 2017-03-16 2017-07-07 北京搜狐新媒体信息技术有限公司 数据在线迁移方法、代理节点

Also Published As

Publication number Publication date
CN107688611A (zh) 2018-02-13

Similar Documents

Publication Publication Date Title
CN107688611B (zh) 一种基于saltstack的Redis键值管理系统及方法
US10007499B2 (en) Decoupled installation of data management systems
JP4509916B2 (ja) Snmp基盤のネットワーク管理装置および方法
US8024712B1 (en) Collecting application logs
CN112000741B (zh) 内外网数据交换系统、方法、装置、计算机设备和介质
CN107357681B (zh) 基于salt的Zookeeper备份管理系统及方法
CN109120461B (zh) 一种业务性能端到端监控方法、系统及装置
CN107741852B (zh) 一种基于集群软件的服务部署方法
US20100088197A1 (en) Systems and methods for generating remote system inventory capable of differential update reports
CN114756519A (zh) 与无状态同步节点的托管文件同步
US11343355B1 (en) Automated mapping of multi-tier applications in a distributed system
CN105446831A (zh) 一种结合SAN的Server-Free备份方法
CN112395264A (zh) 分布式存储系统中逻辑目标与卷之间映射的处理方法
US10769174B2 (en) Site-consolidated disaster-recovery with synchronous-to-asynchronous traffic conversion
CN104793981B (zh) 一种虚拟机集群的在线快照管理方法及装置
CN115914369A (zh) 网络靶场日志文件采集代理网关、采集系统及方法
US10963227B2 (en) Technique for transforming a standard messaging component to a customized component
CN112035062B (zh) 云计算的本地存储的迁移方法、计算机设备及存储介质
US11079960B2 (en) Object storage system with priority meta object replication
CN115344273A (zh) 一种基于货架系统来运行应用软件的方法及系统
US11074002B2 (en) Object storage system with meta object replication
US11093465B2 (en) Object storage system with versioned meta objects
CN109525642B (zh) 一种用户机制下的lims系统客户数据自动化上报方法
CN109684158A (zh) 分布式协调系统的状态监控方法、装置、设备及存储介质
WO2024012082A1 (zh) 大数据集群部署方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220729

Address after: 310000 room 801, 8th floor, building 1, No. 108 Xiangyuan Road, Gongshu District, Hangzhou City, Zhejiang Province

Patentee after: Hangzhou mingshitang Digital Technology Co.,Ltd.

Address before: 310019 room 507, floor 5, building A15, No. 9, Jiusheng Road, Jianggan District, Hangzhou, Zhejiang Province

Patentee before: HANGZHOU MISTONG EDUCATION SCIENCE & TECHNOLOGY DEVELOPMENT CO.,LTD.

TR01 Transfer of patent right