题外话:看到一篇不错的从mysql迁移数据到redis的解决方案,特此记录一下。
做开发的同学都知道,一旦设计到底层存储优化,数据结构甚至数据库的变更,通常都会进行数据迁移的工作。如果系统运行时间过长,数据迁移的数量可能非常庞大。这时候,如何进行高效的数据迁移,实际也是上线质量的直接影响因素之一。
下面内容是转载的一个小技巧(原文),无法适用于各种变化的场景,仅供大家参考。
场景是从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样可能没什么错,但是速度会非常慢。而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了。
根据什么都测试,他800w的数据迁移,时间从90分钟缩短到2分钟。
废话说了一堆,下面是具体案例。
MySQL数据表结构:
CREATE TABLE events_all_time ( id int(11) unsigned NOT NULL AUTO_INCREMENT, action varchar(255) NOT
NULL, count int(11) NOT NULL DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY uniq_action (action) );
Redis存储结构:
HSET events_all_time [action] [count]
下面是重点,能过下面SQL语句将MySQL输出直接变更成redis-cli可接收的格式:
-- events_to_redis.sql SELECT CONCAT( "*4\r\n", '$', LENGTH(redis_cmd), '\r\n',
redis_cmd, '\r\n', '$', LENGTH(redis_key), '\r\n', redis_key, '\r\n', '$', LENGTH(hkey), '\r\n', hkey,
'\r\n', '$', LENGTH(hval), '\r\n', hval, '\r' ) FROM ( SELECT 'HSET' as redis_cmd, 'events_all_time' AS redis_key, action AS hkey, count AS hval FROM events_all_time ) AS t
然后用管道符重定向输出即可:
mysql stats_db
--skip-column-names --raw < events_to_redis.sql | redis-cli --pipe
附上原文链接:从MySQL到Redis,提升数据迁移的效率
相关推荐
主要介绍了从MySQL到Redis的简单数据库迁移方法,注意Redis数据库基于内存,并不能代替传统数据库,需要的朋友可以参考下
迁移数据库,创建数据表 python manage.py migrate 继续运行: python manage.py runserver 启动项目,然后,访问“http://127.0.0.1:8000” 注: 配置文件位于config/local_settings.py 测试登录账号:ozn88917@...
springboot,maven,redis,mysql数据库一体化,快速搭建,快速开发的框架
同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库...
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
这个项目是将mysql-mmm的很多想法移植到redis上。 这也解释了该名称是对 mysql-mmm 项目的致敬 多主? 不,不是。 然后怎样呢? redis-mmm 旨在提供自动(在某种程度上,手动)故障转移功能,以防 redis master ...
本项目采用前后端分离开发模式,前端使用的技术有Javascript、jQuery、Art-template,后端使用技术有Flask、mysql、redis、celery等。文档全面,可快速部署。 可用于本科毕业设计,难度和工作量均较为适中。资料内...
同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库...
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库...
数据库迁移工具:初始化表和初始化数据,修改表字段和修改数据的管理工具 3.shiro+jwt: 权限认证系统:基于方法级别的权限校验,实现token代替session进行鉴权 4.swagger-ui: 实现前后端动态可视化数据交互及接口...
同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库...
mybus实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步支持通过正则表达式指定需要导出的db以及表bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中增量同步通过解析MySQL的行复制日志,完成...
基于SpringBoot+Shiro+JWT+Redis+MongoDb+Mysql 进行实现的 主要包括 装修页面、商品管理、订单管理、活动管理、优惠券管理、权限管理等 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB...
- Alembic migrations 数据迁移. - redis使用演示. - 文件上传演示. - apscheduler 定时任务 (不保证稳定 noqa) - 基于 casbin 的权限验证 (基于 [gin-vue-admin](https://github.com/flipped-aurora/gin-vue-admin)...