ปัญหา Laravel 5.7 ในการย้ายฐานข้อมูลแบบแยกอ่าน-เขียน

ฉันกำลังประสบกับสถานการณ์ต่อไปนี้:

ฉันต้องการแยกฐานข้อมูลของฉันออกเป็นฐานข้อมูลการอ่านและเขียนแยกกัน ด้วยเหตุนี้ ฉันจึงตั้งค่า 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

ยินดีอย่างยิ่งที่จะลิงก์ไปยังคำแนะนำที่เป็นประโยชน์หรือคำแนะนำในการแก้ปัญหา

ขอบคุณสำหรับความสนใจ.


person Richard Wieditz    schedule 12.02.2019    source แหล่งที่มา
comment
การจำลองฐานข้อมูลของคุณได้รับการกำหนดค่าระหว่างฐานข้อมูลของคุณอย่างไร   -  person Travis Britz    schedule 13.02.2019
comment
อาจซ้ำกันของ stackoverflow.com/ คำถาม/26654846/   -  person Travis Britz    schedule 13.02.2019


คำตอบ (1)


ถึง @Travis Britz: ขอบคุณสำหรับคำใบ้ ฉันไม่มีคำว่า "การจำลอง MySQL" ซึ่งไม่มีความคิดเห็นในเอกสาร laravel ฉันคิดผิดว่าอัลกอริธึม laravel กำลังจัดการการซิงโครไนซ์ด้วยตัวเอง ซึ่งจริงๆ แล้วไม่ได้เกิดขึ้น

การซิงโครไนซ์ระหว่างเซิร์ฟเวอร์ฐานข้อมูลได้รับการจัดการโดยกลไกภายในของ MySQL

ป้อนคำอธิบายรูปภาพที่นี่

ด้วยอัลกอริธึม MySQL เหล่านี้ ฉันสามารถบรรลุโครงสร้างการสื่อสารเช่นนั้นได้ สิ่งที่อาจเป็นงานทั่วไปในขั้นตอนการปรับใช้เว็บแอปพลิเคชัน:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันทำตามคำแนะนำนี้โดย 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

ขอแสดงความนับถืออย่างสูง.

person Richard Wieditz    schedule 13.02.2019