Laravel 5.7迁移拆分读写数据库的问题

时间:2019-02-12 15:05:14

标签: mysql database migration laravel-5.7 read-write

Laravel开发人员,

我可能需要一些帮助,因为我无法自行解决问题。

这是szenario:

我想将数据库拆分为单独的读写数据库。因此,我已经设置了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_WRITEDB_HOST_READ,我已经设置了运行数据库的服务器的IP地址。

对于DB_DATABASEDB_USERNAMEDB_PASSWORD,我已经设置了数据库名称和登录凭据。

当我尝试使用像这样的mysql控制台命令访问它们时,两个服务器都是可访问的:mysql -u USERNAME -h IPADDRESS -p

这是问题所在:当我试图从这样的第三台服务器运行迁移时

php artisan migrate

仅建立写数据库。

这是预期的行为吗?

我必须手动迁移每个数据库吗?

迁移命令是否有标志,可以让我指定要迁移的连接?

我用google搜索时找不到任何有关读写数据库迁移的信息。

没有进一步的数据库设置完成。我的信息来源是以下指南:https://laravel.com/docs/5.7/database#read-and-write-connections

非常欢迎链接到有用的指南或解决方案建议。

感谢您的关注。

1 个答案:

答案 0 :(得分:0)

@Travis Britz:谢谢提示。我缺少术语“ MySQL复制”,laravel文档中未对此进行评论。我误以为laravel算法是自己处理同步的,实际上没有发生。

数据库服务器之间的同步由MySQL内部机制处理

enter image description here

使用这些MySQL算法,我能够实现类似的通信结构,这可能是Web应用程序部署步骤中的常见任务:

enter image description here

我遵循本指南通过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

最诚挚的问候。