Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-如何自动管理多个数据库上的更新?_Php_Mysql_Database - Fatal编程技术网

Php MySQL-如何自动管理多个数据库上的更新?

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

对于我的MySQL应用程序,我要求每个客户端都有自己的数据库,即数据库不是多租户的。因此,我在多台服务器上拥有相同MySQL数据库模式的多个副本

如何在多台服务器上跨多个数据库自动传播SQL DDL,如ALTER TABLE、CREATE TABLE、DROP TABLE、CREATE INDEX等


在未来几个月内,我可能会在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可以满足您的需要;)