CN107688611A - 一种基于saltstack的Redis键值管理系统及方法 - Google Patents
一种基于saltstack的Redis键值管理系统及方法 Download PDFInfo
- Publication number
- CN107688611A CN107688611A CN201710655955.4A CN201710655955A CN107688611A CN 107688611 A CN107688611 A CN 107688611A CN 201710655955 A CN201710655955 A CN 201710655955A CN 107688611 A CN107688611 A CN 107688611A
- Authority
- CN
- China
- Prior art keywords
- key assignments
- redis
- node
- backup
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational 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)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于saltstack的Redis键值管理系统及方法,该系统包括管理节点、数据库节点和存储节点;数据库节点:运行Redis主从集群的节点;Redis主库和Redis从库服务器需要部署saltstack客户端;存储节点:存储Redis键值数据,便于进行Redis键值恢复操作,部署saltstack客户端;管理节点:存储Redis主从集群元信息、键值备份元信息、存储节点元信息和数据库节点元信息,部署Web应用服务和saltstack管理端;通过saltstack管理端发送相应的指令到存储节点的saltstack客户端,实现传输键值备份文件,从而简化备份和恢复操作。本发明支持单个或者多个键值的查看、备份、删除和恢复操作。操作简单,在平台界面填写少量信息,即可一键操作。操作安全可靠,提升工作效率,降低人工维护成本。
Description
技术领域
本发明属于计算机技术领域,应用于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界面,提供查看、备份、删除和恢复四个选项,分别调用键值查看模块、键值备份模块、键值删除模块和键值恢复模块。
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 true CN107688611A (zh) | 2018-02-13 |
CN107688611B 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) |
Cited By (8)
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 | 宁波诺信睿聚投资有限责任公司 | 数据对象资源的管理方法、装置、设备及存储介质 |
CN109063040A (zh) * | 2018-07-17 | 2018-12-21 | 清华大学 | 客户端程序数据采集方法及系统 |
CN110781190A (zh) * | 2019-10-29 | 2020-02-11 | 北京金和网络股份有限公司 | 对Redis hash的每个field进行过期管理的方法 |
CN111125095A (zh) * | 2019-11-26 | 2020-05-08 | 北京文渊佳科技有限公司 | 数据前缀添加的方法、装置、电子设备及介质 |
CN113139081A (zh) * | 2021-04-27 | 2021-07-20 | 中山亿联智能科技有限公司 | 高效率低延迟上报读取用户在线播放信息的方法 |
CN114579344A (zh) * | 2022-03-09 | 2022-06-03 | 北京新流万联网络技术有限公司 | 一种基于salt-stack配置下发验证系统及方法 |
WO2023109381A1 (zh) * | 2021-12-16 | 2023-06-22 | 中移(苏州)软件技术有限公司 | 一种信息处理方法及装置、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103501237A (zh) * | 2013-09-03 | 2014-01-08 | 小米科技有限责任公司 | 设备管理方法、管理平台、设备及系统 |
CN103631924A (zh) * | 2013-12-03 | 2014-03-12 | Tcl集团股份有限公司 | 一种分布式数据库平台的应用方法和系统 |
CN104468274A (zh) * | 2014-12-16 | 2015-03-25 | 深圳大学 | 一种集群监控管理方法及系统 |
US20160055233A1 (en) * | 2014-08-25 | 2016-02-25 | Ca, Inc. | Pre-join tags for entity-relationship modeling of databases |
CN105426451A (zh) * | 2015-11-11 | 2016-03-23 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN105677251A (zh) * | 2016-01-05 | 2016-06-15 | 上海瀚之友信息技术服务有限公司 | 基于Redis集群的存储系统 |
CN106934048A (zh) * | 2017-03-16 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | 数据在线迁移方法、代理节点 |
-
2017
- 2017-08-03 CN CN201710655955.4A patent/CN107688611B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103501237A (zh) * | 2013-09-03 | 2014-01-08 | 小米科技有限责任公司 | 设备管理方法、管理平台、设备及系统 |
CN103631924A (zh) * | 2013-12-03 | 2014-03-12 | 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 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN105677251A (zh) * | 2016-01-05 | 2016-06-15 | 上海瀚之友信息技术服务有限公司 | 基于Redis集群的存储系统 |
CN106934048A (zh) * | 2017-03-16 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | 数据在线迁移方法、代理节点 |
Cited By (11)
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 | 宁波诺信睿聚投资有限责任公司 | 数据对象资源的管理方法、装置、设备及存储介质 |
CN109063040A (zh) * | 2018-07-17 | 2018-12-21 | 清华大学 | 客户端程序数据采集方法及系统 |
CN109063040B (zh) * | 2018-07-17 | 2020-07-07 | 清华大学 | 客户端程序数据采集方法及系统 |
CN110781190A (zh) * | 2019-10-29 | 2020-02-11 | 北京金和网络股份有限公司 | 对Redis hash的每个field进行过期管理的方法 |
CN111125095A (zh) * | 2019-11-26 | 2020-05-08 | 北京文渊佳科技有限公司 | 数据前缀添加的方法、装置、电子设备及介质 |
CN111125095B (zh) * | 2019-11-26 | 2023-11-10 | 北京文渊佳科技有限公司 | 数据前缀添加的方法、装置、电子设备及介质 |
CN113139081A (zh) * | 2021-04-27 | 2021-07-20 | 中山亿联智能科技有限公司 | 高效率低延迟上报读取用户在线播放信息的方法 |
CN113139081B (zh) * | 2021-04-27 | 2023-10-27 | 中山亿联智能科技有限公司 | 高效率低延迟上报读取用户在线播放信息的方法 |
WO2023109381A1 (zh) * | 2021-12-16 | 2023-06-22 | 中移(苏州)软件技术有限公司 | 一种信息处理方法及装置、存储介质 |
CN114579344A (zh) * | 2022-03-09 | 2022-06-03 | 北京新流万联网络技术有限公司 | 一种基于salt-stack配置下发验证系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107688611B (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688611A (zh) | 一种基于saltstack的Redis键值管理系统及方法 | |
CN108052681B (zh) | 一种关系型数据库间结构化数据的同步方法及系统 | |
FI115941B (fi) | Datakäsittelyjärjestelmä tietoliikenneverkkoa varten | |
CN101770515B (zh) | 一种基于数据块比较的数据更新方法 | |
CN102571420B (zh) | 一种网元数据管理方法及系统 | |
CN101692668B (zh) | 一种航空气象数据自动下载、解析和存储的装置及方法 | |
CN105893115B (zh) | 差异化部署虚拟机的方法和系统 | |
US20050262097A1 (en) | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services | |
CN103559231B (zh) | 一种文件系统配额管理方法、装置及系统 | |
CN105740418A (zh) | 一种基于文件监控和消息推送的实时同步系统 | |
CN101098248A (zh) | 一种基于配置描述文件实现通用网络管理的方法及系统 | |
CN106648903A (zh) | 调用分布式文件系统的方法和装置 | |
CN102323940A (zh) | 基于数据库的配置台实现方法、配置台及系统 | |
CN107786355A (zh) | 一种智慧城市信息共享的方法和装置 | |
CN103841180B (zh) | 一种基于操作指令的网络数据同步方法、装置、终端设备和服务器 | |
CN116663050A (zh) | 一种基于数据库的智能合约数据快速查询方法 | |
CN113709250B (zh) | 一种基于订阅发送模式的跨域用户数据同步方法 | |
KR101357135B1 (ko) | 로그 정보 수집 장치 | |
CN107357681A (zh) | 基于salt的Zookeeper备份管理系统及方法 | |
CN109977170A (zh) | 一种政务内外网数据同步的方法及系统 | |
CN112925695A (zh) | 一种自动化更新配置fluentd的配置文件的方法 | |
CN110213156A (zh) | 一种跨中心群组即时通信方法和系统 | |
US11748495B2 (en) | Systems and methods for data usage monitoring in multi-tenancy enabled HADOOP clusters | |
CN105701179B (zh) | 基于UniWhale的分布式文件系统的视窗访问方法 | |
CN109857808B (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 |