情况描述:
现在管理着10多台windows服务器,每台服务器上有3个MySQL数据库实例,每个实例上有150个数据库,每次都要升级这4500个数据库。
升级的内容就是数据表增加字段,修改字段,修改存储过程等等,要保持这些库结构一致。
我现在想的思路是:
在这10台服务器上都装上一个服务A,由服务A来接收指令执行对应服务器上的3个实例的450个数据库进行语句升级。
装一个总控制程序B,由程序B告诉服务A需要执行什么升级语句。
因为升级语句在这么多库上执行时不能保证100%都执行通过,如果有100多个库执行失败了,那就需要对这些失败的库重新执行升级更新语句,所以还想对升级语句进行处理,保证这些语句可以重复多次执行。
由于mysql的语句特性,不能在语句文本(非存储过程)中执行IF 代码块,如果语句中新增列,需要先判断该列是不是已经存在了,不存在再新增,如果存在就不新增了。 在服务A中对语句分析,发现语句是ADD COLUMNS 则程序先判断该字段是否存在,再执行
我想问:
想问问大家这种情况都是怎么升级数据库的?用的什么方法?如果自己写软件,那实现的思路大概是什么样呢?
我觉得大家都遇不到这种情况
如果你遇到了会怎么做,可以想想,面试的时候问道了你怎么办?
配置主从同步
多租户数据库更新?
是的
我之前工作有这种业务,有2台服务器,几百个mysql 数据库管理 。 在服务器上运行 winform 数据中心程序,直接进行数据库操作,每次需要更新数据库结构,从iis网站上传sql 脚本,然后用 websocket,消息队列等技术通知winform软件执行该sql脚本
嗯,思路查不多
最后在工作中也遇到类似情况,不过比楼主好一点,没有4500个数据库这么多。
我自己编写了一个工具,可以同时批量对多数据库执行相同脚本,并记录执行结果,你可以试一下。
软件名字:库飞侠
https://download.csdn.net/download/vernyang/86394556