情况描述:
现在管理着10多台windows服务器,每台服务器上有3个MySQL数据库实例,每个实例上有150个数据库,每次都要升级这4500个数据库。
升级的内容就是数据表增加字段,修改字段,修改存储过程等等,要保持这些库结构一致。
我现在想的思路是:
在这10台服务器上都装上一个服务A,由服务A来接收指令执行对应服务器上的3个实例的450个数据库进行语句升级。
装一个总控制程序B,由程序B告诉服务A需要执行什么升级语句。
因为升级语句在这么多库上执行时不能保证100%都执行通过,如果有100多个库执行失败了,那就需要对这些失败的库重新执行升级更新语句,所以还想对升级语句进行处理,保证这些语句可以重复多次执行。
由于mysql的语句特性,不能在语句文本(非存储过程)中执行IF 代码块,如果语句中新增列,需要先判断该列是不是已经存在了,不存在再新增,如果存在就不新增了。 在服务A中对语句分析,发现语句是ADD COLUMNS 则程序先判断该字段是否存在,再执行
我想问:
想问问大家这种情况都是怎么升级数据库的?用的什么方法?如果自己写软件,那实现的思路大概是什么样呢?