Проблемы Laravel 5.7 при переносе разделенной базы данных чтения-записи - PullRequest
0 голосов
/ 12 февраля 2019

Привет, разработчики Laravel,

Мне может понадобиться помощь, потому что я не могу самостоятельно разобраться в проблеме.

Вот сценарий:

Я хочу разделить свою базу данных на отдельные базы данных для чтения и записи.По этой причине я настроил 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

Ссылки на полезные руководства или предложения решений приветствуются.

Спасибо за ваше внимание.

1 Ответ

0 голосов
/ 13 февраля 2019

@ Travis Britz: Спасибо за подсказку.Мне не хватало термина «MySQL Replication», что не комментируется в документации laravel.Я ошибочно думал, что алгоритмы Laravel обрабатывают синхронизацию самостоятельно, чего на самом деле не происходит.

Синхронизация между серверами баз данных осуществляется внутренними механизмами MySQL

enter image description here

С помощью этих алгоритмов MySQL мне удалось создать такую ​​структуру связи, как эта, что может быть обычной задачей на этапе развертывания веб-приложений:

enter image description here

Я следовал этому руководству по цифровому океану, чтобы вручную настроить репликацию 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

С уважением.

...