应用发布指南之数据库

前言

    本文中试图解决运维工作经常遇到的一个问题,随着应用的不断迭代,每个应用版本对应的数据库应该如何维护才能更节省管理成本。本文提到了两个观点仅供参考:即可重复部署与多路径部署。
    可重复部署:指的是安装过程若出现故障,重复执行安装程序不会对数据库造成破坏。
    多路径部署:指的是运行最新安装包时无论从哪个历史版本安装,都能升级到最新版本。

实例版本与数据库文件说明

版本号 发版日期 部署轨迹支持 数据库文件
v1.0 2020.01.01 v1.0全新部署多次 db001-initial-v1.0-20200101.sql
v2.0 2020.02.01 v2.0全新部署多次
v1.0>v2.0升级部署多次
db001-initial-v1.0-20200101.sql
db002-patch-v2.0-20200201.sql
v3.0 2020.03.01 v3.0全新部署多次
v1.0>v3.0升级部署多次
v2.0>v3.0升级部署多次
db001-initial-v1.0-20200101.sql
db002-patch-v2.0-20200201.sql
db003-patch-v3.0-20200301.sql

数据库文件内容与部署脚本文件内容

  • db001-initial-v1.0-20200101.sql

创建表结构,新增数据

CREATE TABLE IF NOT EXISTS `S`  (
  `Sno` varchar(7),
  `Sname` varchar(10),
  `Sage` int(11),
  PRIMARY KEY (`Sno`)
);
INSERT IGNORE INTO `S` VALUES ('10001', '小明', 21);
INSERT IGNORE INTO `S` VALUES ('10002', '小华', 19);
  • db002-patch-v2.0-20200201.sql

新增表字段,修改表字段,新增表数据,修改表数据

ALTER TABLE S ADD COLUMN `Ssex` varchar(2);
ALTER TABLE S MODIFY COLUMN Sage int(12);
INSERT IGNORE INTO `S` VALUES ('10003', '小王', 20, '男');
UPDATE S SET Ssex='男' WHERE Sno=10001;
UPDATE S SET Ssex='女' WHERE Sno=10002;
  • db003-patch-v3.0-20200301.sql

新增表字段,修改表字段,新增表数据,修改表数据

ALTER TABLE S ADD COLUMN `Sdept` varchar(20);
UPDATE S SET Sdept='理工学院' WHERE Sno=10001;
UPDATE S SET Sdept='人文学院' WHERE Sno=10002;
INSERT IGNORE INTO `S` VALUES ('10004', '小李', 19, '女', '人文学院');
  • deploy.sh

根据文件名顺序读取数据库文件并执行导入

#!/bin/bash
curPath=$(readlink -f "$(dirname "$0")")
files=$(ls $curPath/database/ | sort -n)
for file in $files
do
  mysql -hdemo -uroot -pP@ssw0rd -P3306 -Ddemo < ${curPath}/database/$file
done

版本发行包目录结构(文件名一致即内容一致)

application/
├── v1.0
│   ├── database
│   │   └── db001-initial-v1.0-20200101.sql
│   └── deploy.sh
├── v2.0
│   ├── database
│   │   ├── db001-initial-v1.0-20200101.sql
│   │   └── db002-patch-v2.0-20200201.sql
│   └── deploy.sh
└── v3.0
    ├── database
    │   ├── db001-initial-v1.0-20200101.sql
    │   ├── db002-patch-v2.0-20200201.sql
    │   └── db003-patch-v3.0-20200301.sql
    └── deploy.sh

全新或升级部署数据库至 v1.0 版本

全新或升级部署数据库至 v1.0 版本.png

全新或升级部署数据库至 v2.0 版本

全新或升级部署数据库至 v2.0 版本.png

全新或升级部署数据库至 v3.0 版本

全新或升级部署数据库至 v3.0 版本.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。