mysql - 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
但只有写入数据库被设置。
这是预期的行为吗?
我必须手动迁移每个数据库吗?
迁移命令是否有一个标志,允许我指定要迁移的连接?
当我搜索它时,我找不到任何关于读写数据库迁移的信息。
没有进行进一步的数据库设置。我的信息来源是以下指南:https ://laravel.com/docs/5.7/database#read-and-write-connections
非常欢迎提供有用指南或解决方案建议的链接。
感谢您的关注。
解决方案
致@Travis Britz:感谢您的提示。我错过了“MySQL 复制”一词,在 laravel 文档中没有评论。我错误地认为 laravel 算法自己处理同步,实际上并没有发生。
数据库服务器之间的同步由 MySQL 内部机制处理
使用这些 MySQL 算法,我能够实现这样的通信结构,这可能是 Web 应用程序部署步骤中的常见任务:
我按照数字海洋的本指南手动设置了 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
最好的祝福。
推荐阅读
- javascript - subscription.unsubscribe() 和 subscription.remove() 有什么区别?
- python - 使用 selenium 时 Python 文件对话框冻结问题
- javascript - FullCalendar - 多个 Google 日历
- java - Java并发:可重置启用/禁用等待条件
- javascript - 我收到 SyntaxError:WordPress 主题中的解析器错误
- r - spatstat 不均匀 K-、F- 和 G- 函数中的意外行为
- python - 如何用特定键而不是键盘中断异常停止无限循环?
- javascript - 使用本地存储查找返回用户的特定用户名
- javascript - 在 datepicker 中选择日期后,在我的年龄字段中获取 NaN
- angular - 模板解析错误:意外字符“EOF”