迈过数据库迁移的大坑

自有团队接各种开发的活,保质保量,需要的加88287456
本帖最后由 flyingsnake 于 2016-11-1 11:20 编辑

    首先用最大的字体感谢技术支持--徐增凯。谢谢谢谢

手动迁移的可以参照http://bbs.fanruan.com/thread-79655-1-1.html



昨天无聊,看到帆软的数据迁移已经发布这么久了。试试将数据有hsql迁移至mysql。万万没有想到,一头栽进一个超级大坑。甚至到现在爬出来后,依然知其然不知其所以然。    首先介绍下本机环境。
win2008r2+mysql5.7.16+tomcat9.0.0.m11+帆软0716jar包设计器
这里把版本号写这么全可不是为了骗字数的。。。后边这个版本号可把我害苦了。


为了迁移数据,我首先down了个最新的帆软设计器,并升级到1026版。现在的设计器和原来不同了。不是下载下来就是最新的,而是需要自己来升级,官方的解释是“设计器提供的是最稳定的版本。”


参照精简得与电报有一拼的help文档,开始迁移工作。
服务器不准备升级jar,所以重新安装设计器到全新的目录。以后为了好区别,我将设计器的版本号会一并写上。
1、安装并升级完1026设计器,安装迁移插件。一切顺利
2、将0716的WEB-INF\finedb目录下的所有文件覆盖到1026设计器同目录。(这里碰到的一个坑,之前为了url简短,将ReportServer改为了“RS”。大家一定记住,迁移之前,一定要把这个改回原值,一定一定一定一定!!这个字符串不但写到了数据库中,还在配置文件\WEB-INF\web.xml中也有.)
739355811a93fcf51c.png


3、在mysql中建立新的数据库,我建立的是rs_main和rs_logdb两个。
后来发现,用navicat premium来建立的库有时候居然经常有问题,原因不明。建议大家用命令行来建库吧。
4、配置迁移插件。没有啥可说的,只有地址、用户名、密码可以填写。
这里和help文档中有些不同,首先,地址中的后缀不能去除,否则报错。
543135811aae8bc739.png
其次,日志和主体数据不是必须同时迁移,甚至可以只迁移单独一个。
5、之后我就经历了各种报错。
786045811abd944fba.png
98615811ac02a41f7.png
查看日志基本上都是说某某表已经存在、某某表未建立等等。最气人的是,当连接进入mysql中查看时,库中都是空的。。个别时候给你建好两个表格意思一下。。。
这是逗我玩么?
506815811acf037725.png
有时候成绩会好些,建立66个表。66啊。多么吉利的数字,可是官方的help中明明是67个好不好。这个也给我玩打折?这里也是 个坑,最后我迁移完毕时72个表。
496305811b8ccc943e.png
6、期间经历了换机器,更新mysql连接驱动、换mysql版本等一系列的苦难。关键令人费解的是官方技术支持的测试一直是正常的。气人气人!!
一直到有一次。他给我回复了一句
242905811ae16a6551.png
不是吧~~我已经删除了不下50个库了。就没有成功过。不过既然连技术支持也出现了,说明迁移插件是个坑的事实是存在的。那么尝试解决吧。
7、设计器自带的web服务器不行就换tomcat。mysql版本由绿色版、5.17安装版、5.5安装版一路更新上来,甚至连oracle最新的5.7.16也试过了。都失败。绝望了。。
8、今早,技术支持徐增凯把他使用的mysql5.7.16安装版发给了我。我从2008r2上再次尝试,失败。但居然从win2012上成功了。惊喜!!再次在win2008上重装mysql。关闭mysql服务后,直接删除mysql的对应数据库文件。用命令行重新建库。迁移,居然成功了。
至此,理应到一段落了。只要将配置文件都复制到正式服务器就可以了。后来居然在logdb上又一次摔倒了。
复制配置文件的过程不复杂,需要复制的文件有WEB-INF\resources\config.xml 文件的最尾部
<JDBCDatabaseAttr url="jdbc:mysql://172.20.3.45:3306/rs_main?useUnicode=true&characterEncoding=UTF-8" driver="com.mysql.jdbc.Driver" user="root" password="111111" encryptPassword="false">
<DBCPAttr/>
</JDBCDatabaseAttr>
</PlatformConnection>
<writeShortCuts writeShortCuts="true"/>
</ReportServerParameter>


红色部分为需要增加或修改的部分。
黄色部分为true时,密码将加密存储。否则就是明文,我为了修改方便,直接明文保存了。
759355811b1e640048.png
红框部分是需要添加的。原来的参数被直接/掉了。
还有WEB-INF\resources\fsconfig.xml中最后需要增加上红色字体部分。
<DatabaseAdapterAttr isAdapted="true"/>
</fsconfig>
1.png
这样,主数据就已经迁移成功了。



那么我们解决最后一个坑。在不升级jar的情况下,如何迁移logdb。
迁移logdb最开始设想很简单,觉得应该和主数据类似,找到了需要的配置文件WEB-INF\resources\logdb.xml复制到服务器后居然无法顺利加载,服务器坚定的帮我新建了WEB-INF\logdb目录。向里边写日志。。。
好吧。我来个偷懒的方式骗过服务器。

fr-chart-8.0.jar、fr-core-8.0.jar、fr-performance-8.0.jar、fr-platform-8.0.jar、fr-report-8.0.jar、fr-third-8.0.jar六个文件从0716服务器中备份,由1026设计器中复制到0716服务器中。欺骗服务器已经完成jar包的升级,之后顺利安装迁移控件。点击“日志信息”“测试连接”“保存”。

再关闭tomcat。将jar包还原。至此,所有工作完成。
手动迁移结束,数据库迁移至mysql的rs_main数据库。日志文件迁移至mysql的rs_logdb数据库。

最后附上传说中的赚钱利器,各种附件、配置文件、测试可以使用的mysql5.7.16

安装版里边的mysql.txt是网盘地址,本来当彩蛋的。结果第一个就把“星神”给坑了。他居然买了附件没有开。。
新建文件夹.rar (35.31 KB, 下载次数: 21, 售价: 50 个F豆)
参与人数 +3 F豆 +717 F币 +10 理由
windy_gui + 1 666
传说哥 + 666 + 10 感谢分享
xzk1103 + 50 感谢参与

查看全部评分

发表于 2016-10-27 16:11:52
本帖最后由 flyingsnake 于 2016-10-27 16:29 编辑

谁能告诉我上边为啥会多两张图呢?另外,附件有个彩蛋,就是web.xm如何实现长短url都可以使用的方式,高手不用看了,很简单,小白随意,反正赠送的。
发表于 2016-10-27 16:22:51
看着都觉得辛苦,楼主赚钱有理!!
发表于 2016-10-27 16:31:50
新功能不敢用啊
发表于 2016-10-27 17:11:43
这个挺有意思的
发表于 2016-10-28 15:52:59
我真的是只能说,楼主真的很幸运,找到了一个靠谱的技术支持,我也尝试过迁移,在之前。。。但是一直都没有成功
发表于 2016-10-28 15:55:49
但是还是想提示一下楼主,迁移成功并不代表使用的稳定性。所以希望楼主慎重,现在测试环境独立拷贝项目过来跑一段时间看看。楼主可以加一下我QQ。关于这个迁移有些地方需要请教一下楼主!QQ2213370159
发表于 2016-10-28 16:00:01
我看了几遍,最后的结论是只有mysql5.7.16这个版本可以吗?

其他像【mysql版本由绿色版、5.17安装版、5.5安装版一路更新上来,甚至连oracle最新的5.7.16也试过了】都不行吗?
发表于 2016-10-28 16:30:04
看完我决定还是先不迁移了吧,痛并快乐着
发表于 2016-10-28 16:55:14
我只是路过打酱油的,嘿嘿
发表于 2016-10-28 17:18:09
我现在最大的痛苦,就是每次升级后,权限总是会出现异常,要么很多人权限丢失了,要么很多人多了很多权限
发表于 2016-10-28 17:36:14
本帖最后由 flyingsnake 于 2016-10-28 17:43 编辑

我认为最大的可能性是因为你删除过很多的登陆用户名,在脚本导入的时候,很多表按照id自增属性去建立id了。造成数据错乱。我没有删除过用户,所以没有出问题。
以上仅猜测,提供个思路。具体原因请官方答复吧。
发表于 2016-10-28 18:15:26
怪我喽。。。我一看没有安装包。。。就几个文本文件。。。
发表于 2016-11-18 14:17:20
666 不错不错哟
发表于 2021-5-28 15:42:49
&#128002;&#128067;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

15回帖数 1关注人数 7924浏览人数
最后回复于:2021-5-28 15:42

返回顶部 返回列表