Mysql 数据库升级shell脚本编写与测试心得
来源:互联网 发布:电脑qq多开器软件 编辑:程序博客网 时间:2024/06/03 19:09
1.数据库使用到的账户信息及动态可变的信息最好定义为变量,放置服务器变更或表名变更需要修改多个地方,如果有遗漏,引发执行shell中断等问题:例如服务器IP地址 ,登录用户名,登录密码 ,端口号 ,AB表机制中的每天轮训切换的表名等。
2.在shell脚本中使用 mysql -h$mysqlhost -u$mysqluser -p$mysqlpasswd -e 方式执行 Mysql SQL脚本时,最后不要超过1000行,否则会提示 参数过长错误 。
3.最后给shell脚本中引入zc_log日志部分代码,每次执行完后将执行结果保存至日志中,使用 “ $? ” 获取前一次执行命令的返回结果,返回0表示执行成功没有错误信息,便于对shell脚本执行情况监控与执行过程中的问题定位与处理
4.数据库升级shell脚本编写时应注意,最后将一个大升级shell分割为多个小shell,避免shell过大,如果执行过程中有问题,不方便定位问题与对应shell执行情况掌握不清楚,回退等比较困难。一般建议分割为:新增表(upgradeCreateTables.sh) 、修改表 (upgradeAlterTables.sh) 、新增存储过程与触发器(upgradeCreateProc_triggers.sh)、修改存储过程与触发器(upgradeUpdateProc_triggers.sh)、新增表数据插入(upgradeCreateTablesData.sh)、修改表历史数据(upgradeUpdateOldData.sh) 、 清空对时效性要求不高的历史表数据(upgradeClearOldData.sh),例如 db_log与user_log ,保留近一个月左右的即可,升级前讨论确定
5.编写升级完成后检查项:新增表(个数,表结构) ,修改表(个数与表结构),存储过程(个数与内容),触发器(个数与内容)
6.使用zc_log时应注意,zc_log代码中的 "`"符号,一个都不能少,否则会在执行Shell时出现不必要的错误,数据库脚本中最后将" `"替换为空格,不要在升级shell脚本中直接替换,应该在其他文件中替换,防止将zc_log中的"`"替换掉。
7.在编写触发器与存储过程部分升级Shell脚本时,如果没有drop相关语句,后期手动添加时应该注意多次检查防止将目标删除对象名下错了,导致删除其他存储过程或触发器,引发不必要的错误。
8.在执行升级Shell前,备份数据库时,建议将表结构和标数据 与触发器和存储过程分别备份(防止由于部分表有触发器,导致在将备份数据导出数据库时,触发器执行导致数据备份前后不一致问题),再做一次完整备份(防止之前备份有问题,还有一个备份,双保险)
mysqldump备份参数简单介绍: --sikp-triggers 不导出触发器 -R 导出存储过程与自定义函数 --triggers 导出触发器 --no-data 不导出数据 --no-create-info 不导出表结构
2.在shell脚本中使用 mysql -h$mysqlhost -u$mysqluser -p$mysqlpasswd -e 方式执行 Mysql SQL脚本时,最后不要超过1000行,否则会提示 参数过长错误 。
3.最后给shell脚本中引入zc_log日志部分代码,每次执行完后将执行结果保存至日志中,使用 “ $? ” 获取前一次执行命令的返回结果,返回0表示执行成功没有错误信息,便于对shell脚本执行情况监控与执行过程中的问题定位与处理
4.数据库升级shell脚本编写时应注意,最后将一个大升级shell分割为多个小shell,避免shell过大,如果执行过程中有问题,不方便定位问题与对应shell执行情况掌握不清楚,回退等比较困难。一般建议分割为:新增表(upgradeCreateTables.sh) 、修改表 (upgradeAlterTables.sh) 、新增存储过程与触发器(upgradeCreateProc_triggers.sh)、修改存储过程与触发器(upgradeUpdateProc_triggers.sh)、新增表数据插入(upgradeCreateTablesData.sh)、修改表历史数据(upgradeUpdateOldData.sh) 、 清空对时效性要求不高的历史表数据(upgradeClearOldData.sh),例如 db_log与user_log ,保留近一个月左右的即可,升级前讨论确定
5.编写升级完成后检查项:新增表(个数,表结构) ,修改表(个数与表结构),存储过程(个数与内容),触发器(个数与内容)
6.使用zc_log时应注意,zc_log代码中的 "`"符号,一个都不能少,否则会在执行Shell时出现不必要的错误,数据库脚本中最后将" `"替换为空格,不要在升级shell脚本中直接替换,应该在其他文件中替换,防止将zc_log中的"`"替换掉。
7.在编写触发器与存储过程部分升级Shell脚本时,如果没有drop相关语句,后期手动添加时应该注意多次检查防止将目标删除对象名下错了,导致删除其他存储过程或触发器,引发不必要的错误。
8.在执行升级Shell前,备份数据库时,建议将表结构和标数据 与触发器和存储过程分别备份(防止由于部分表有触发器,导致在将备份数据导出数据库时,触发器执行导致数据备份前后不一致问题),再做一次完整备份(防止之前备份有问题,还有一个备份,双保险)
mysqldump备份参数简单介绍: --sikp-triggers 不导出触发器 -R 导出存储过程与自定义函数 --triggers 导出触发器 --no-data 不导出数据 --no-create-info 不导出表结构
0 0
- Mysql 数据库升级shell脚本编写与测试心得
- MySQL数据库升级脚本
- shell脚本远程升级数据库
- 数据库升级的shell脚本
- 编写shell脚本对mysql数据库进行定时备份
- Shell脚本学习--护眼程序编写心得
- Shell备份数据库脚本编写
- shell 脚本 与 shell 脚本的编写
- CentOS下编写shell脚本自动备份数据库与网站
- Mysql压力测试shell脚本
- Eclipse下面编写并测试shell脚本
- mysql数据库备份shell脚本
- shell脚本备份mysql数据库
- shell脚本操作mysql数据库
- shell脚本操作mysql数据库
- shell脚本操作mysql数据库
- shell脚本操作mysql数据库
- shell脚本操作mysql数据库
- 生成器
- linux C语言获取本机ip地址
- POJ 1163 The Triangle
- C++编程:XAudio2 API应用示例
- 七周七种前端框架四:Vue.js 概览
- Mysql 数据库升级shell脚本编写与测试心得
- HDU 4152 ZZYs Dilemma(枚举 or dfs)
- compose,takeUntil ,Share
- HTML5 Audio/Video 标签,属性,方法,事件汇总 (转)
- 进程与线程的区别
- epoll 水平触发和边缘触发的区别
- 最小生成树prim算法
- myeclipse打开文件选择程序
- Android 控件 下拉刷新 android-uitra-pull-to-refresh