Php MySQL-如何自动管理多个数据库上的更新?
对于我的MySQL应用程序,我要求每个客户端都有自己的数据库,即数据库不是多租户的。因此,我在多台服务器上拥有相同MySQL数据库模式的多个副本 如何在多台服务器上跨多个数据库自动传播SQL DDL,如ALTER TABLE、CREATE TABLE、DROP TABLE、CREATE INDEX等Php MySQL-如何自动管理多个数据库上的更新?,php,mysql,database,Php,Mysql,Database,对于我的MySQL应用程序,我要求每个客户端都有自己的数据库,即数据库不是多租户的。因此,我在多台服务器上拥有相同MySQL数据库模式的多个副本 如何在多台服务器上跨多个数据库自动传播SQL DDL,如ALTER TABLE、CREATE TABLE、DROP TABLE、CREATE INDEX等 在未来几个月内,我可能会在4台或更多服务器上拥有300多个数据库。您可以使用cronjob和mysql客户端自动化您的工作流(如果操作始终相同): mysql -uUSER -pPASSWORD D
在未来几个月内,我可能会在4台或更多服务器上拥有300多个数据库。您可以使用cronjob和mysql客户端自动化您的工作流(如果操作始终相同):
mysql -uUSER -pPASSWORD DATABASE < /home/aFileWithSQLStatements.txt
mysql-uUSER-pPASSWORD数据库
这就是您想要的吗?您可以使用cronjob和mysql客户端自动化您的工作流(如果操作始终相同):
mysql -uUSER -pPASSWORD DATABASE < /home/aFileWithSQLStatements.txt
mysql-uUSER-pPASSWORD数据库
这就是你要找的吗?是时候毕业使用迁移库了。迁移将允许您在给定的模式上应用或回滚更改(特别是当您有多个相同db模式的副本时,非常适合管理)。可以将其视为DB模式的版本控制 单个迁移运行应用或恢复给定更改所需的SQL。一些迁移系统只是原始SQL文件,另一些使用抽象模型定义迁移,然后自动生成SQL(通常能够跨MySQL、oracle或sqlite等不同的DB技术工作) 因为您使用的是PHP,所以我喜欢
phinx
。编写迁移后,只需更新当前环境变量,即可针对许多不同的数据库运行迁移:
...some migrations written, now apply them...
$> export PHINX_DBHOST=127.0.0.1
$> export PHINX_DBUSER=root
$> export PHINX_DBPASS=password
$> export PHINX_DBNAME=db1
$> phinx migrate
$> export PHINX_DBNAME=db2
$> phinx migrate
$> export PHINX_DBNAME=db3
$> phinx migrate
.... etc....
这将使所有具有相同修改的数据库保持同步。Phinx还跟踪针对给定数据库运行的迁移,因此您只需查看迁移表(跟踪迁移运行)即可轻松确定特定数据库架构的当前状态,而无需检查各个表中的特定更改
然后,为了实现自动化,您只需编写一个脚本或在每个数据库上应用迁移的作业,它们甚至不需要在同一台机器上 是时候开始使用迁移库了。迁移将允许您在给定的模式上应用或回滚更改(特别是当您有多个相同db模式的副本时,非常适合管理)。可以将其视为DB模式的版本控制 单个迁移运行应用或恢复给定更改所需的SQL。一些迁移系统只是原始SQL文件,另一些使用抽象模型定义迁移,然后自动生成SQL(通常能够跨MySQL、oracle或sqlite等不同的DB技术工作) 因为您使用的是PHP,所以我喜欢
phinx
。编写迁移后,只需更新当前环境变量,即可针对许多不同的数据库运行迁移:
...some migrations written, now apply them...
$> export PHINX_DBHOST=127.0.0.1
$> export PHINX_DBUSER=root
$> export PHINX_DBPASS=password
$> export PHINX_DBNAME=db1
$> phinx migrate
$> export PHINX_DBNAME=db2
$> phinx migrate
$> export PHINX_DBNAME=db3
$> phinx migrate
.... etc....
这将使所有具有相同修改的数据库保持同步。Phinx还跟踪针对给定数据库运行的迁移,因此您只需查看迁移表(跟踪迁移运行)即可轻松确定特定数据库架构的当前状态,而无需检查各个表中的特定更改
然后,为了实现自动化,您只需编写一个脚本或在每个数据库上应用迁移的作业,它们甚至不需要在同一台机器上 编写一个脚本,在每台服务器上的每一个数据库上运行SQL升级。使用有问题的数据库(服务器、数据库名)创建一个表。选择您选择的编程语言(我可以推荐Python、Java、c#)。循环。编写一个脚本,在每台服务器上的每一个数据库上运行SQL升级。使用有问题的数据库(服务器、数据库名)创建一个表。选择您选择的编程语言(我可以推荐Python、Java、c#)。我希望能找到一个能自动完成这个过程的工具。我同意你的观点,我可以像你提到的那样用php编写脚本。我认为php会更好一点,这样我就可以编写错误通知的代码。使用php或bash可以满足您的需要;)我希望能找到一个工具来自动化这个过程。我同意你的观点,我可以像你提到的那样用php编写脚本。我认为php会更好一点,这样我就可以编写错误通知的代码。使用php或bash可以满足您的需要;)