当前位置:网站首页>数据库SqlServer迁移PostgreSql实践
数据库SqlServer迁移PostgreSql实践
2022-08-04 18:00:00 【51CTO】
背景
公司某内部系统属于商业产品,数据库性能已出现明显问题,服务经常卡死,员工经常反馈数据无法查询或不能及时查询,该系统所使用的数据库为SqlServer,SqlServer数据库属于商业数据库,依赖厂商的维护,且维护成本高,效率低,且存在版权等问题,考虑将该系统的数据库,迁移至PostGresql数据库,属于BSD的开源数据库,不存在版本问题,公司也有部分系统采用pg,维护成本也将大大减低。
迁移原理
SqlServer属于商业数据库,不可能像Mysql等数据库一样,去解析相关的数据库binlog,从而实现增量数据的回放,结合应用属性,最后确定采用离线迁移方式,从SqlServer中将表数据全部读出,然后将数据写入到pg中,采用此种方案的弊病就是程序端需停止写入(应用可将部分数据缓存到本地),等待数据库迁移完成后,程序端再迁移至PostGresql,迁移方法如下:
表结构迁移原理
表结构主要包含字段,索引,主键,外键等信息组成,主要采用开源工具sqlserver2pg进行表结构的转换
表结构转换
从SqlServer中读写表结构的字段信息,并对字段类型进行转换,转换核心代码如下
外键,索引,唯一键转换
主要是从sqlserver导出的表结构数据中,对相关的索引,外键等语句进行转换,转换核心代码如下
数据类型转换原理
数据类型转换
函数类型转换
存储过程
视图部分需手动改造
迁移方法
表结构转换
表结构导入pg
数据迁移
数据比对
参考
边栏推荐
猜你喜欢
基于大学生内卷行为的调查研究
2022年五一数学建模C题讲解
【技术积累】JS事件循环,Promise,async/await的运行顺序
"Involution" Index Analysis Based on AHP
leetcode 13. 罗马数字转整数
leetcode 14. 最长公共前缀
SQL优化最全总结 - MySQL(2022最新版)
About the two architectures of ETL (ETL architecture and ELT architecture)
2022 May 1 Mathematical Modeling Question C Explanation
Introduction of three temperature measurement methods for PT100 platinum thermal resistance
随机推荐
【技术笔记】let 和 var和const的异同
启动项目(瑞吉外卖)
离线同步odps到mysql 中文乱码是因为?mysql已是utf8mb4
Cholesterol-PEG-DBCO,CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔科研试剂
Thrift IDL Sample File
【日记】高并发下的DB分库分表分区策略
斯坦福:未来的RGB LED可以贴在你的皮肤上
使用scikit-learn计算文本TF-IDF值
dotnet core 使用 CoreRT 将程序编译为 Native 程序
路由懒加载
leetcode/有效的回文串,含有不需要判断回文的字符
R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、color参数指定柱状图的边框的色彩
R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
离散化求前缀和
2022 May 1 Mathematical Modeling Question C Explanation
华为云计算HCIE之oceanstor仿真器的使用操作
框架整合(二)- 使用Apache ShardingSphere实现数据分片
数仓建模面试
Introduction of three temperature measurement methods for PT100 platinum thermal resistance
谁能解答?从mysql的binlog读取数据到kafka,但是数据类型有Insert,updata,