magento可以使用多个MySQL从服务器吗?

2024-07-01

以下是我使用单个从站的配置的一部分。

<default_read>                 
    <connection>               
        <use/>                 
        <host><![CDATA[slavedb1.amazonaws.com]]></host>
        <username><![CDATA[username]]></username>
        <password><![CDATA[Password]]></password>
        <dbname><![CDATA[shop]]></dbname>
        <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
        <model><![CDATA[mysql4]]></model>
        <type><![CDATA[pdo_mysql]]></type>
        <pdoType><![CDATA[]]></pdoType>
        <active>1</active>  
    </connection>
</default_read>

但是,我想用多个奴隶。 Magento 可以做到这一点吗?

澄清一下,我已经有了一个与 Magento 一起使用的主/从设置。我想添加另一个奴隶,这样我就有两个奴隶。我想知道配置将如何更改以利用第二个从属设备。


鉴于您的上述评论并假设您的数据库复制设置正确。

解决方案 :-

- 步骤1:

In File

应用程序/etc/config.xml

找到“core_read”结束标签

<resources>
    ....
    <core_read>
            <connection>
                <use>default_read</use>
            </connection>
        </core_read>
    ....
</resources>

在结束标记后添加(与您要使用的数据库一样多),它应如下所示:

<resources>
    ....
        <core_read>
            <connection>
                <use>default_read</use>
            </connection>
        </core_read>
        <slave_db_1>
            <connection>
                <use>slave_one_db</use>
            </connection>
        </slave_db_1>
        <slave_db_2>
            <connection>
                <use>slave_two_db</use>
            </connection>
        </slave_db_2>
    ....
</resources>

- 第2步:

并在 apt/etc/local.xml 之后添加新连接(“/default_setup>”结束标记)

<resources>
    ....            
        <slave_one_db>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[slave_one_db_user]]></username>
                <password><![CDATA[slave_one_db_password]]></password>
                <dbname><![CDATA[slave_db_one_name]]></dbname>
                <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                <model><![CDATA[mysql4]]></model>
                <type><![CDATA[pdo_mysql]]></type>
                <pdoType><![CDATA[]]></pdoType>
                <active>1</active>
            </connection>
        </slave_one_db>
        <slave_two_db>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[slave_tow_db_user]]></username>
                <password><![CDATA[slave_tow_db_password]]></password>
                <dbname><![CDATA[slave_db_one_tow]]></dbname>
                <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                <model><![CDATA[mysql4]]></model>
                <type><![CDATA[pdo_mysql]]></type>
                <pdoType><![CDATA[]]></pdoType>
                <active>1</active>
            </connection>
        </slave_two_db>
    ....
</resources>

- 步骤 3:

将文件从“app/code/core/Mage/Core/Model/Resource.php”复制到==>“app/code/local/Mage/Core/Model/Resource.php”

1-查找受保护的$_mappedTableNames;

2- 添加以下方法:

public function getSlaveDb()
{
    $prefix = 'slave_db_'; // prefix for the slaves databased in the xml file
    $cookieExpireTime = 1209600; // 2 weeks Cookie ( database selection ) expire time
    $dbArray = array(1,2); // All slaves Db in-case the cookie has invalid value
    $slaveDb = array_rand( array_flip($dbArray),1 ); // How to alternate between databases ( in this demo i just use 2 database ) adjust the selection of the database to fit hoe many database you want to use !
    if(!isset($_COOKIE['read_db']) || !in_array($_COOKIE['read_db'],$dbArray)) // Check for the cookie values
    {
        setcookie("read_db", $slaveDb, time()+$cookieExpireTime); // set the current database to the user in cookie so next time user use same connection to database ! to avoid jumping or hopping on different databases in short time
    }else{
        $slaveDb = $_COOKIE['read_db']; // return the database selected if the user has it in the cookies
    }
    return $prefix.$slaveDb;
}

3-修改方法“ public function getConnection($name) ”如下所示:

public function getConnection($name)
{
    if($name =='core_read') // Only applied for READ Connections !!!
    {
        $name = $this->getSlaveDb(); // change the name of the connection to the one we get from our main method
    }
    //....... Leave the rest of the function as it is !!
}

这将允许您使用在 XML 和 PHP 代码中为 core_read 连接指定的数据库以及 magento 中所有其他连接的 default_setup 连接( core_write、 core_setup )

希望这能解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

magento可以使用多个MySQL从服务器吗? 的相关文章

  • PHP - 简单嵌套无序列表 (UL) 数组

    我在 stackoverflow 上看到了这个嵌套 UL 数组问题的一些变体 但我认为我的比其他问题更简单 我正在寻找一个简单的数组循环 它允许无限量的主题 父项 和无限量的项目 子项 例如 ul li Topic li ul li Ite
  • MySQL 外键,无法创建表(错误号:150)

    我正在尝试为我的系统构建数据库和表 但我发现如果我不在代码中添加外键 没有错误 我使用了很多方法尝试使代码正常工作 但仍然有错误 我使用的是MySQL 5 5 31 代码如下 创建数据库服务条款 DROP TABLE TOS USER CA
  • java中sql字符串的单引号无效字符

    由于 java sql 字符串中的单引号 我收到 无效字符常量 我需要双引号 我已将其放入单引号中 new StringBuffer SELECT REPLACE u nombre as Organizacion append CONCAT
  • mysql-connector-java 升级到 8.0.11 更改了从数据库检索的所有日期值

    对于 Spring 项目 mysql connector java已迁移自6 0 6 to 8 0 11 因此与8 0 11问题如下 Caused by com mysql cj exceptions InvalidConnectionAt
  • 对许多站点使用中央数据库服务器:合理吗?

    基本上 我需要在多达几十个站点上同步数据库数据的某些部分 完美的解决方案是创建一个中央服务器来托管该数据 每个页面加载都必须从两个数据库服务器 本地和远程数据库服务器 获取数据 并且写入远程服务器也很常见 虽然数据库服务器在硬件方面可以达到
  • 如何使用 local.xml 在 Magento 1.5 中设置默认布局?

    因此 我已经完成了一些我想要使用的布局 并且我认为在 local xml 文件中设置它可以修复每个页面的问题 像这样
  • 在准备好的语句中使用“like”通配符

    我正在使用准备好的语句来执行 mysql 数据库查询 我想实现基于某种关键字的搜索功能 为此我需要使用LIKE关键字 我知道的就这么多 我以前也使用过准备好的语句 但我不知道如何使用它LIKE因为从下面的代码中我将在哪里添加 keyword
  • 在 MySQL 中使用 BLOB 或 VARBINARY 加密数据?

    我正在开发一个 PHP 应用程序 它通过文本区域接受用户输入 它将加密存储在数据库中 使用 AES ENCRYPT 我应该使用 BLOB 还是 VARBINARY 字段 这两种类型的字段都会对性能产生影响吗 BLOB 和 VARBINARY
  • 主键与主键

    创建包含数据库结构的 mysql 转储时 其中一张表显示以下内容 CREATE TABLE completedTransactions paymentId int 10 unsigned NOT NULL timestamp int 15
  • MySQL 将 COMMENT 添加到外键

    我正在将旧数据库 SyBase 转换为 MySQL 并且有以下 DDL 查询 ALTER TABLE DBA tab prodotto ADD FOREIGN KEY fkey idlinea tpr idlin REFERENCES DB
  • 通过 Eloquent 在 laravel 中找到具有相同值的两列?

    我正在开发一个项目 其中有一个表市场 其中有一个 Buyer id 列和一个 seller id 列 当卖家将商品投放市场时 seller id 和 buyer id 相同 这意味着该产品现在正在销售 销售后 buyer id 更改为购买该
  • 错误 1366 (HY000):整数值不正确:第 1 行的列“id”的“”[已关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 My code sql INSERT INTO static table name sql join array key
  • 我想创建搜索页面,在“div”中显示从数据库中搜索到的数据?

    我想要创建搜索页面 php 在其中我想在 div 中显示从数据库搜索到的数据 我与数据库建立了连接 并在一个 phppage 中搜索数据 并在另一个 phppage 中创建了一个 div 标签 我怎样才能将一个php页面的搜索数据显示在另一
  • 选择两列之和的最大值

    我有一个表格比较 如果我跑 SELECT comparisonID stu1Vers stu2Vers stu1 stu2 from comparisons WHERE stu1 stu2 and assignmentid 9 我得到类似的
  • 随机化大数据集

    我正在尝试找到一种从大型数据集中进行随机选择的方法 我们预计该集合将增长到大约 500K 条记录 因此找到一种在集合增长时保持良好性能的方法非常重要 我尝试了一种技术 http forums mysql com read php 24 16
  • magento可以使用多个MySQL从服务器吗?

    以下是我使用单个从站的配置的一部分
  • Mysql – 使用哈希函数检测表的一部分的数据变化

    我需要对表中的某些数据生成单个哈希 CREATE TABLE Table1 F1 INT UNSIGNED NOT NULL AUTO INCREMENT F2 INT default NULL F3 Varchar 50 default
  • 在MySQL中保存使用触发器删除记录的用户的USER_ID

    我正在尝试设置一系列历史记录触发器 以通过触发器自动收集给定表的历史记录 我想使用触发器 因为这可以保证我捕获所有更改 无论是否有人忘记将其保存在应用程序中 我的问题是我有这个触发器 CREATE TRIGGER db delete his
  • innodb 锁定傻瓜指南

    有关 innodb 锁定的典型文档太混乱了 我认为拥有一本 innodb 锁定傻瓜指南 将会非常有价值 我将开始 并将所有回复收集为维基 The column needs to be indexed before row level loc
  • Hibernate 中的枚举,作为枚举持久存在

    在我的 MySQL 数据库中 有一列 gender enum male female 我创建了我的枚举 com mydomain myapp enums Gender 并在我的Person实体我被定义为 性别 现在我想将枚举类型保留在我的

随机推荐

  • Google 地图中的 Fusion Table 将不会显示整个几何图层

    我在谷歌驱动器中创建了一个新的融合表 其中包含放置在某些城镇上的大型子集几何图形 然而 当我查看地图和相应的融合表叠加层时 只会显示与城镇相关的几何图形的某些部分 有些城镇甚至根本不会显示几何图形 当在谷歌地球中查看相同的 kml 文件时
  • AA 级辅助功能 - 使用文本阴影增强颜色对比度

    我有一个网站 正在根据 WCAG 2 0 AA 级合规性进行编码 但其中一个按钮的颜色对比度未通过 背景 D57405 前景 FFF 是否可以使用文本阴影来增强对比度 这会被视为通过吗 我可以为不支持文本阴影的浏览器提供不同的颜色 但我想尝
  • 客户端验证的 ASP.NET MVC 验证摘要

    我们的服务器端验证 通过数据注释 运行良好 并按照我们喜欢的方式在 ValidationSummary 中发布错误 客户端验证也可以工作 但是错误显示在控件的右侧 并且验证摘要从不显示 有没有一种简单的方法可以使客户端验证显示看起来像服务器
  • github权限错误(ssh密钥无法识别)

    从另一个 本地 存储库推送到 github 帐户后 我似乎失去了对它的权限 我现在收到以下错误 git push Permission denied publickey fatal The remote end hung up unexpe
  • 将搜索放大镜更改为 UIActivityIndi​​catorView

    我有一个应用程序可以在 13 000 个单元格中搜索文本 我知道这是很多细胞 在较旧的 iPhone 上 搜索需要花费几秒钟的时间 因此我想提供一个指示器视图 向用户显示该应用程序仍在运行 我想出了将 UISearchBar 放大镜更改为
  • 如何将 iBATIS 查询与 select 子句中的参数化列映射?

    我想要一种方法 可以从数据库中特定表的列中查找特定值 其中列的名称作为参数传入 因此 Java 方法将具有以下签名 public Integer getFoo String column throws DataAccessException
  • Bloomberg API 请求超时

    设置 ReferenceDataRequest 后 我 将其发送到 EventQueue Service refdata session GetService blp refdata Request request refdata Crea
  • 如何从表格格式的发票中提取数据

    I m trying to extract data from pdf image invoices using computer vision For that i used ocr based pytesseract this is s
  • 取消引用空指针

    即使在强制转换 void 指针之后 我在取消引用它时也会遇到编译错误 谁能告诉我这是什么原因 int lVNum 2 void lVptr lVptr int lVNum printf nlVptr 60 is d n lVptr 1 取消
  • Rails 4 嵌套形式 - 没有将 Symbol 隐式转换为 Integer

    在我的 Rails 4 应用程序中 我有一个三重嵌套路线 devise for users do resources foo do resources marflar end end 我有一个用于创建带有嵌入的 Marflar 对象的新 F
  • 使用 string.endswith() 的匹配大小写来处理不同可能的字符串结尾

    我想迭代一个目录并根据扩展名将文件排序到单独的列表中 我想使用匹配大小写来执行此操作 而不是使用许多单独的 else if 大致如下 for file in os listdir dirpath filename os fsdecode f
  • 如何使用不同的fxml文件创建多个javafx控制器?

    我一直在查看一些博客和其他 stackoverflow 问题 但没有看到我的问题的直接答案 我正在创建一个 javafx gui 客户端 我希望我的菜单栏成为一个 fxml 中的一个控制器 然后我希望内容区域成为附加的 fxml 文件 登录
  • 随机化大数据集

    我正在尝试找到一种从大型数据集中进行随机选择的方法 我们预计该集合将增长到大约 500K 条记录 因此找到一种在集合增长时保持良好性能的方法非常重要 我尝试了一种技术 http forums mysql com read php 24 16
  • 与 NULL 合并

    我在视图中发现了这段 SQL 片段 我对它的用途感到相当困惑 为简洁起见 实际的 SQL 被缩短了 SELECT COALESCE b Foo NULL AS Foo FROM a LEFT JOIN b ON b aId a Id 我想不
  • php artisan 迁移除少数表之外的所有表

    是否可以执行php artisan migrate以一种迁移所有表但只保留少数迁移文件的方式database migrations 场景是 我们的业务需求需要2个DB 因此 很少有迁移文件明确提及第二个数据库 当我为 PHPUnit 创建另
  • 无法在 Alamofire 4.0 中使用类型为“(String, withName: String)”的参数列表调用“append”

    我正在使用 Alamofire 4 0 在通过设备 相机选择或录制视频后将视频上传到服务器 但是当我尝试使用append调用上传函数时 在所有append语句中都出现了这个错误 我的代码有什么问题 第二个问题是我是否想在上传过程中显示进度以
  • 计算复杂的数学(积分、求导……)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何用编程语言计算复杂的数学 例如 一体化 推导 其他一些不平凡的数学 例如对于这些语言 Java 红宝石 on Rails 我知道对于
  • 是否有适当的算法来检测图形的背景颜色?

    在大学里 我们接到了一项作业 给定图像 我们必须识别 图形 它们的颜色以及其中 像素组 的数量 让我解释 上图有一张figure 图像中可以有多个人物 但让我们暂时忘记这一点 画布的背景颜色是 0 0 处的像素 在本例中为黄色 图形的边框颜
  • 构造函数 Sort(Sort.Direction, String) 未定义

    我想使用带有默认排序方向的 Spring Data JPA 和最新的 spring boot starter parent 2 2 1 RELEASE Override public Page
  • magento可以使用多个MySQL从服务器吗?

    以下是我使用单个从站的配置的一部分