1 Star 2 Fork 1

唔知取咩名 / db-script-templates

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

数据库脚本变更方案

引言

数据库变更应该有据可循,应该在代码仓库体现所有的变更,同时也应该可以使用变更脚本快速还原与生产一致的数据库,本着如上描述的原则,参照平时的工作经验,设计出此数据库变更方案,供大家参考。

目录结构

数据库脚本目录结构如下:

  • incremental_scripts,文件夹,存储增量的ddldml变更脚本。
    • ddl,文件夹,存储增量的ddl变更脚本。
      • 该文件夹下面以日期为子文件夹存储当日所有的变更脚本。
    • dml,文件夹,存储增量的dml变更脚本。
      • 该文件夹下面以日期为子文件夹存储当日所有的变更脚本。
    • entry_scripts,文件夹,存储增量的引导变更脚本。
      • 该文件夹下面以日期为子文件夹存储当日的增量变更脚本、增量备份脚本以及增量回退脚本。
  • initial_scripts,文件夹,存储初始化数据库的ddldml变更脚本。
    • ddl,文件夹,存储初始化数据库的ddl变更脚本。
      • functions,文件夹,存储初始化数据库的创建函数变更脚本。
      • stored_procedures,文件夹,存储初始化数据库的创建存储过程变更脚本。
      • tables,文件夹,存储初始化数据库的创建表变更脚本。
      • triggers,文件夹,存储初始化数据库的创建触发器变更脚本。
      • views,文件夹,存储初始化数据库的创建视图变更脚本。
    • dml,文件夹,存储初始化数据库的dml变更脚本。
  • db_setup_all.sql,全量建库脚本。
  • db_setup_inc.sql,增量变更脚本。
  • db_backup_inc.sh,增量备份脚本。
  • db_rollback_inc.sh,增量回退脚本。

变更规范

  • 所有的数据库脚本上线后不允许变更,以保证可以通过脚本快速搭建一套与生产一致的数据库。
  • 增量变更脚本应保证可以多次重复执行,得到的数据库状态是一样的,即幂等性。
    • 如:建表前应该先将此表drop,新增记录前应该先将此条记录删除等等。
  • 每次增量变更应该新增一个文件夹,在文件夹下面建立入口脚本,此入口脚本调用实际进行变更的脚本。
  • 每次增量变更新增的ddl文件夹应与dml新增的文件夹名称保持一致,方便后续追溯。
  • 每次增量变更应同时在db_setup_all.sqldb_setup_inc.sql脚本中加入本次增量变更的引导脚本。
  • 每次修改增量变更的脚本时,应该之前所有的增量执行内容注释掉(或者删除)。
  • 每次增量变更应先执行db_backup_inc.sh脚本,做本次变更前的备份,然后再执行db_setup_inc.sql,进行数据库脚本的增量变更。
    • 如果是第二次或者后续多次执行同一变更,则无需备份。
  • 如果本次增量变更存在问题,需要进行回退,应执行db_rollback_inc.sh脚本,将本次的增量变更回退到数据库之前的状态。
    • 如果在回退前,需要保存数据库的某些数据,可参照db_backup_inc.sh脚本,对数据库进行备份。

如何快速搭建一套与生产一致的数据库

使用以上推荐的数据库变更记录方案后,可以按如下方法快速搭建起一套与生产数据库对象、基础数据一致的数据库环境。

  • 切换到数据库脚本根目录,如db
cd db
  • 打开MySQL命令行工具,登录到root用户
mysql -uroot -p
  • 设置编码,可根据项目实际情况设置相应的编码
mysql> set names utf8mb4;
  • 执行db_setup_all.sql即可。
mysql> source db_setup_all.sql;
MIT License Copyright (c) 2022 SoulCraft Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

数据库脚本变更管理模板 展开 收起
Shell
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/ischeme4u/db-script-templates.git
git@gitee.com:ischeme4u/db-script-templates.git
ischeme4u
db-script-templates
db-script-templates
main

搜索帮助