公司是传统企业,一个十几年的系统,使用 SQLServer 存储数据。累积到现在已有 1W+ DB ,每个 DB 下 100+表。想全部迁移至 MySQL 。SQLServer 和 MySQL 部署在内网不同服务器,MySQL 操作系统为 Linux 。
已尝试的方案:
想问下有没有更好的方案?
1
youisme 36 天前
正儿八经的找个 dba 或者技术顾问来做这个事情吧。。。
|
2
ferock 36 天前 via iPhone
花点钱…别那么抠
|
3
dreamswhite OP @ferock 可以花钱,花钱的话应该找什么样的人或者厂商?
|
4
sagaxu 36 天前 via Android
用户和权限,表结构,数据,存储过程,触发器等等,每一项都可能遇到兼容性问题,不是迁完不报错就算成功的。这事情需要专业的公司提供服务。
|
5
liaojl 36 天前 via iPhone
可以花钱的话,还是建议续费 SQL sever 吧,这看起来工作量就不小,还有数据库的兼容性问题,以及后续的各种测试。
|
6
ferock 36 天前 via iPhone
|
7
billzhuang 36 天前 via iPhone
为什么要迁移到 mysql ?
|
8
june4 36 天前
可怕为啥会有 1w 个 db 这么多,难道是结构都是一样的,只是数据新旧不同,那感觉还好,一个能成了就行
|
9
wangee 36 天前
找专业的 DBA 吧,这数据量太哈人了
|
10
beneo 36 天前
找 https://www.clougence.com/ 公司帮你弄吧
|
11
dreamswhite OP @billzhuang 国产化需求
|
12
dreamswhite OP @june4 历史原因,最开始的代码就写成了这个样子 = =
|
13
beneo 36 天前
国产化 更不应该 用 MySQL ,去弄下 PolarDB ,信创数据库
|
14
qping 36 天前 via Android
这个需要一段时间吧,同步完数据不需要测试,试运行一段时间?这个时间差内产生的心属于如何处理?
你需要先制定一个迁移方案,而不只是迁移工具 |
15
qping 36 天前 via Android
纠正:
这个时间差内产生的心属于如何处理? -> 这个时间差内产生的新数据如何处理? |
16
idragonet 36 天前
Mysql 不是国产数据库。
|
17
Flourite 36 天前
这迁移。。。性能降级、功能也对不上吧
|
18
wheat0r 36 天前
@dreamswhite #11 那你迁了白迁
|
19
realpg 36 天前
迁移预算几位数?
|
20
qfdk 36 天前 via iPhone
不大靠谱. 为社么这么说... 我司就有一个 erp.... 大概 3k 多的表吧. 里面的 process 也都要重写... 工作量太大了. 甚至有些祖传脚本..... 然后业务代码里面有些用到直接执行 sql 代码的地方... 有些 语句并不通用. 要是用的 orm 可能没有这样的问题... 但是有些 orm 搞不定的真的是语句....
|
21
akira 36 天前
这活。。大坑啊。。。技术验证都没验证的吧。
讲真, 数据迁移属于这个事情里面最最简单的部分了。 sql 改造,代码改造 那边要做的事情多了去了 |
22
charleschilips 36 天前
找个兼容 SQL server 的国产数据库
|
23
liuxey 36 天前
如果有国产化需求,有些数据库供应商采购的时候可以附加迁移服务
|
24
Bingchunmoli 36 天前 via Android
说实话之前有个国家项目(应该是省级)的数据库,SQLServer 很大,直接 navicat 迁的 mysql , 因为后台也改了所以还好一点。你这旧项目还在的话,能不动就不动是最好的方案吧
|
25
yinmin 36 天前 via iPhone
微软 sql server 和 mysql 的 SQL 语法不兼容的,软件需要重构工作量不低。
其实,你用工具跨数据库迁移,本质上也是读数据写数据。自己直接写一个迁移程序,不复杂。mysql 的 insert 支持一条命令插入多行记录的,你组成 500 行记录一条 insert ,迁移速度也很快的。 |
26
adoal 36 天前
建议不迁移。
|
27
adoal 36 天前
传统业务系统换数据库,往往不是换数据库的事。得重构应用层代码做适配。
|
28
wtks1 36 天前
mysql 可不是国产化数据库,你这么迁移了也是做白工
|
29
dreamswhite OP @Flourite 性能降级,怎么说?
|
30
chenzi0103 36 天前
可以给一个逻辑
1 ,首先使用代码先将 SQLServer 每个 db 下面的表的结构整理处理 2 ,然后将每个表的表结构通过 llm 转译成 mysql 的结构,并且保存起来 3 ,通过分布式的框架,每次将每个表的一部分数据保存下来,变成 parquet 文件 4 ,通过刚才保存的表的结构,使用一个分布式框架将 parquet 文件通过某种方式快速的插入到 mysql 数据库中。并且保存其中的记录 |
31
lsww 36 天前
有预算吗?帮你搞定
|
32
forgottencoast 36 天前
我 20 年前干过类似的,公司觉得 SQLServer 数据库性能不好,把 SQLServer 迁移到 Oracle 。
大几十个人干了大半年,每个功能模块的每个页面里面的 SQL 语句几乎都要改,至少要跑过一次。 |
33
dreamswhite OP @chenzi0103 llm 转表结构 + parquet 存数据,学到了🙇
|
34
fbzl 36 天前 via iPhone
SQLServer 藏了很多存储过程,触发器吧
|
35
yjd 36 天前
就像上面说的,不单单数据和表结构问题这 2 个导没啥大问题。一堆存储过程,触发器等等才是难弄的地方。
|
36
joyhub2140 36 天前
听楼上的,还是找信创的数据库吧,花钱有厂家兜底,要是自己来,责任太重了,而且容易出锅。
十几年的老系统动起来也伤筋动骨,而且还是最核心的 DB 层。 |
37
mikewang 36 天前
需要国产化的话,找对应厂商做迁移最好。http://www.itsec.gov.cn/aqkkcp/cpgg/
导数据是一部分,SQL 方言和计算表现不一样也会产生各种兼容性问题,需要慎重考虑的。 |
38
noparking188 36 天前
之前做过方案,将三千张表、10TB 数据从 SQL Server 迁移到 Amazon Redshift 。
https://zhiweio.notion.site/10TB-SQL-Server-Amazon-Redshift-1aeb24862723455d919de6edf035bdeb 借助 Linux 管道文件加速 SQL Server 数据迁移 Redshift 如何将 10TB 数据从 SQL Server 迁移到 Amazon Redshift https://zhiweio.notion.site/Linux-SQL-Server-Redshift-f5c2b5dcdeb646f793de494954244a8a 这个工具是给 bcp 套了层壳,方便将 SQL Server 数据最高效率下载、切块、压缩并上传的 S3: https://github.com/zhiweio/StreamXfer 这个方案能够支撑每天全量迁移一遍 SQL Server 全库 10TB 数据到 Amazon Redshift 。 参考建议: 1. 表结构迁移可以基于 sqlglot 库写一个建表语句翻译器,先迁移全部表结构。 2. SQL Server 数据导出用 bcp ,或者用封装的 StreamXfer ,记得一定用 JSON 格式,有一些坑; 3. 导入 JSON 到 MySQL 用 MySQL Shell Utilities ,https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json.html ,这个支持管道文件,可以实现 SQL Server -> bcp -> mysqlsh -> MySQL ,效率极高。 4. Stored Procedure 的迁移需要业务开发去挨个翻译、测试 SQL 。 如有需要可以私聊 |
39
andytao 36 天前
|
41
liprais 36 天前
@chenzi0103 洗洗睡吧,光数据类型转换就够你喝一壶的,我只能说隔行如隔山
|
42
bugmakerxs 36 天前
问问阿里云 dts 有没有私有化解决方案
|
43
bugmakerxs 36 天前
|
44
bugmakerxs 36 天前
或者先同步到云上 mysql ,再自己从云上 mysql 同步到本地 mysql 。
|
45
forty 35 天前
如果只是表和视图,其实很容易了,如果还有存储过程,那估计没法自动转换了。
老的系统,能跑就尽量不动,是至理名言。搞出问题是大概率的,修修补补再折腾个半年都算是正常的。 |
46
LanhuaMa 35 天前
@dreamswhite #11 mysql 怎么也成国产的了
|
48
bthulu 35 天前
仅仅是迁移数据的话, 很简单, 直接用阿里云的 DTS 功能就行了, 可以在不中断业务的情况下同步数据到 MYSQL.
|
49
oamu 35 天前
@wtks1 #47 搞笑,某个鸭子数据库,支持 mysql 所有操作,支持 mysql 的所有工具,那它就是 mysql ,我把它当作 mysql ,并没说我一定实际使用 mysql 。某个 xx 系统完美兼容安卓,应用开发也完全和安卓的一样,但你敢说它不是国产系统?
|
50
guiyumin 35 天前
我觉得你别迁移
对你没任何好处 |
51
tairan2006 35 天前 via Android
国产化别用 mysql ,找个兼容 sql server 的
|
52
alinwu05 35 天前
用过一个工具叫 sqllines, 便宜好用!
|
53
dreamswhite OP @noparking188 能麻烦加下我的 v 吗: dreamswhite
|