Laravel 5.7 迁移拆分读写数据库时出现问题
Laravel 5.7 problems migrating split read-write database
我遇到了以下情况:
我想将我的数据库拆分成单独的读写数据库。出于这个原因,我设置了 config/database.php
'mysql' => [
'driver' => 'mysql',
'write' => ['host' => env('DB_HOST_WRITE', 'localhost'),],
'read' => ['host' => env('DB_HOST_READ', 'localhost'),],
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
对于 DB_HOST_WRITE
和 DB_HOST_READ
我已经设置了数据库 运行 正在运行的服务器的 IP 地址。
对于 DB_DATABASE
、DB_USERNAME
、DB_PASSWORD
我已经设置了数据库名称和登录凭据。
两个服务器都可以访问,当我尝试使用 mysql 控制台命令访问它们时,如下所示:mysql -u USERNAME -h IPADDRESS -p
这是问题所在:当我尝试 运行 我从第三台服务器迁移时
php artisan migrate
但是只设置了写入数据库。
这是预期的行为吗?
我是否必须手动迁移每个数据库?
迁移命令是否有标志,允许我指定要迁移的连接?
当我 google 时,我找不到任何关于读写数据库迁移的信息。
没有完成进一步的数据库设置。我的信息来源是以下指南:https://laravel.com/docs/5.7/database#read-and-write-connections
非常欢迎指向有用指南或解决方案建议的链接。
感谢您的关注。
致@Travis Britz:感谢您的提示。我漏掉了术语 "MySQL Replication",laravel 文档中没有注释。我误以为 laravel 算法正在自行处理同步,但实际上并没有发生。
数据库服务器之间的同步由MySQL内部机制处理
通过这些 MySQL 算法,我能够实现这样的通信结构,这可能是 Web 应用程序部署步骤中的常见任务:
我按照 digital ocean 的指南手动设置了 mysql 复制:https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql
Digital Ocean 是我托管应用程序的服务器提供商。
图片来自:
https://www.toptal.com/mysql/mysql-master-slave-replication-tutorial
此致。
我遇到了以下情况:
我想将我的数据库拆分成单独的读写数据库。出于这个原因,我设置了 config/database.php
'mysql' => [
'driver' => 'mysql',
'write' => ['host' => env('DB_HOST_WRITE', 'localhost'),],
'read' => ['host' => env('DB_HOST_READ', 'localhost'),],
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
对于 DB_HOST_WRITE
和 DB_HOST_READ
我已经设置了数据库 运行 正在运行的服务器的 IP 地址。
对于 DB_DATABASE
、DB_USERNAME
、DB_PASSWORD
我已经设置了数据库名称和登录凭据。
两个服务器都可以访问,当我尝试使用 mysql 控制台命令访问它们时,如下所示:mysql -u USERNAME -h IPADDRESS -p
这是问题所在:当我尝试 运行 我从第三台服务器迁移时
php artisan migrate
但是只设置了写入数据库。
这是预期的行为吗?
我是否必须手动迁移每个数据库?
迁移命令是否有标志,允许我指定要迁移的连接?
当我 google 时,我找不到任何关于读写数据库迁移的信息。
没有完成进一步的数据库设置。我的信息来源是以下指南:https://laravel.com/docs/5.7/database#read-and-write-connections
非常欢迎指向有用指南或解决方案建议的链接。
感谢您的关注。
致@Travis Britz:感谢您的提示。我漏掉了术语 "MySQL Replication",laravel 文档中没有注释。我误以为 laravel 算法正在自行处理同步,但实际上并没有发生。
数据库服务器之间的同步由MySQL内部机制处理
通过这些 MySQL 算法,我能够实现这样的通信结构,这可能是 Web 应用程序部署步骤中的常见任务:
我按照 digital ocean 的指南手动设置了 mysql 复制:https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql
Digital Ocean 是我托管应用程序的服务器提供商。
图片来自: https://www.toptal.com/mysql/mysql-master-slave-replication-tutorial
此致。