赞
踩
在《Jenkins+maven+Git实现源码的部署和发布》这一篇文章中,已经介绍了如何基于Jenkins+Maven+Git实现从代码库到项目部署的自动化部署全流程。然而在实际的生产环境中,新功能的上线,往往会带来数据库结构的变化,初始化数据的增加等。而在生产环境一般应用服务器、数据库服务器都是分离的,同时应用服务器在互联网可以访问的环境,而数据库服务器是互联网隔离的环境(一般情况)。这篇文章,主要介绍基于这种网络环境的生成环境,如何实现带数据表更新的自动化部署流程。
这部分是本篇内容的核心,如何实现在项目部署前,先更新对应的Sql语句呢?这些Sql语句应该如何管理呢?带着这些问题,我们开始这进行下面内容。
#!/bin/sh
for dir in $(find /usr/soft/sql/sql/*.sql) #循环sql文件所在的目录
do
if [ ! -f "/usr/soft/sql/sql/bak/${dir##*/}" ];then#判断备份文件中是否存在,存在说明已经执行过,就不再执行
echo $dir;
echo ${dir##*/};
scp -r $dir root@192.168.1.9:/usr/local/soft/sql #复制文件到数据库服务器,指定目录
ssh root@192.168.1.9 "mysql -hlocalhost -uroot -p123456 test --default-character-set=utf8 < /usr/local/soft/sql/${dir##*/};exit;" #通过ssh命令执行数据SQL更新语句,注意:执行命令需要使用双引号
mv $dir /usr/soft/sql//sql/bak/${dir##*/};#把执行过的SQL文件,放到本分目录下
fi
done
访问系统,出现如下页面,说明项目部署成功了(中文乱码未处理,见谅)。
然后查看数据库表,如果数据插入成功,说明SQL也执行成功了。
注: 该项目单纯是为了演示部署和数据更新,所以,这次更新的SQL语句和项目是没有任何关系的,只是为了测试可以在部署前,完成SQL文件的执行而已。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。