请教一下关于数据库实现持续集成的工具集以及实践经验 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tomczhen
V2EX    DevOps

请教一下关于数据库实现持续集成的工具集以及实践经验

  •  1
     
  •   tomczhen 2016-09-05 15:54:20 +08:00 4811 次点击
    这是一个创建于 3386 天前的主题,其中的信息可能已经有所发展或是发生改变。

    坐标深圳,传统行业老板投资做平台,不足 20 人的小公司,主要产品是移动端 APP 。 公司情况大概跟各种段子或吐槽差不多,就不细说了,略过。

    技术栈

    • 后端开发语言 C#,数据库 SQL Server

    • 移动端 iOS 和 Android

    项目代码的版本控制是由 TFS 实现的。 iOS 与 Android 是使用的 Git in TFS ,后端则直接 TFS 。

    公司领导对开源系技术栈有着明显的“不信任”偏向,并且后端开发人员,对非 Windows 平台的工具集也有一定的排斥,所以版本控制这块想切换到 Git 上基本没可能。

    另外, TFS 触发还有 WinRM 这块,均有看过相关资料,虽然与 IDE 集成度非常高,但是使用成本对公司现状来说一方面领导层不能接受、另一方面开发人员也有排斥。

    完全基于微软的工具集实现,一方面增加了项目的复杂度,另一方面微软的东西虽然功能强大,但是我不是后台开发是,这方面推行有难度。而且小公司对持续集成这块的动力本身就不足。

    当前情况

    目前, iOS 和 Android 都已经实现了基于 Jenkins 的自动构建,自动发布到分发测试平台。(注:没有做到自动化测试。)

    API 这块已经选择 FitNesse 搭建了文档与测试平台,不过由于后端开发这边积极度不高,完善度有限,还不能添加到 Jenkins 中跑自动测试,进度也在追。

    后台部署这块,当前是使用 SVN 直接提交编译好的二进制文件,然后通过 SVN Hook 脚本做自动部署。( Windows 平台 , IIS )。

    也有计划使用 Jenkins 的节点功能做成集中式自动部署(这块正在测试可行性,基本上已经完成了)。

    PS:以上可以在我的博客中看到相关的记录。

    问题来了

    数据库持续集成工具与实践

    由于,本人是所谓的"野路子",虽然通过以上工具集的官方文档将持续集成平台搭建起来使用,但是数据库这块实在是资料过少。

    目前公司使用的 RDS For SQL Server ,已知的问题是无法使用 dacpac 包部署。

    最开始有提议使用 VS + TFS 集成的数据库项目管理流程,被领导以及后台开发以太复杂为由否决(个人也觉得确实复杂)。

    目前是使用的 Red Gate 的 SQL Compare 比较差异的方式生升级生产数据库先生成快照作为 baseline ,然后对比快照与线上库的差异,生成脚本。

    现在的问题是,由于区分开发环境、测试环境、生产环境(最近准备再加一个预生产环境),每次升级都是手工对比几次,机械化劳动而且比较容易出错。而且,如何回退的问题总是在困扰着我单纯的备份还原解决不了数据问题;直接回退结构又有丢失数据的风险。

    • 请问各位 dalao 有没有觉得好用的工具(不限于 SQL Server ) ?最好是开源的。(现在用的破解版,。)

    • 另外数据库升级这块能否介绍一下实践经验?特别是回退这块的。

    3 条回复    2016-09-06 15:19:12 +08:00
    alcarl
        1
    alcarl  
       2016-09-06 00:26:04 +08:00
    sqlserver2012 是可以用企业管理器导出的,对应的命令是啥我不知道,不过我用过这个和 mysqldump 功能差不多的,你可以试试 https://sqlserverdump.codeplex.com/
    tomczhen
        3
    tomczhen  
    OP
       2016-09-06 15:19:12 +08:00
    @alcarl sql server 这块有个 dac ,做数据库升级挺好用的,不过阿里云 rds for sqlserver 没法用。而且 dcapac 部署的话,也有一些坑,主要是自增字段、触发器、索引这块,得单独处理。不知道有没有其他工具可以方便的输出 sql 脚本。
    @chilaoqi flyway 试过了,没找到可以输出升级用 sql 语句的办法。而且这个工具是对开发更友好,对运维来说不太友好。开发环境和生产环境是隔离的,只有 DBA 才能两边都接触(我这边没有专门的 DBA ),所以很纠结啊。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2279 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    Wold is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:46 PVG 09:46 LAX 17:46 JFK 20:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86