[英]Need help writing to multiple database through single Magento installation
我是Magento的新手(我很喜欢),并且正在开发一个桌面应用程序,以与我们的Magento CE 1.7商店并行运行。 桌面应用程序将拥有自己的数据库,但是我们需要从magento中获取几乎所有信息。
因此,我已经复制了magento的整个数据库,并将其用于应用程序的数据库中。 当通过magento的站点在magento的数据库中写入某些内容时,我还需要在应用程序的数据库中进行写入。 我们不需要从应用程序的数据库中读取,只需写入。
我需要做什么更改?在哪里? 如果有人可以向我提供一些深入的指导,我将不胜感激。 请帮我。
谢谢。
Magento的是本身能够分裂关闭读/写到不同数据库服务器的-让你的偏移(有一些断版本的例外,例如,EE 1.11。) select
负载到附加(或多个)服务器(一个或多个); 并将所有update/write
查询转发到单个主服务器。
首先配置您的奴隶。 我们是Percona实用程序和MySQL分支机构的拥护者-它们是用于对现有数据库进行热备份的理想工具-innobackupex。 这是一个很好的写了这里 。
在主人
替换$ TIMESTAMP或制表符完成。
mysql
> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'$slaveip' IDENTIFIED BY '$slavepass';
> quit;
innobackupex --user=username --password=password /path/to/backupdir
innobackupex --user=username --password=password /
--apply-log /path/to/backupdir/$TIMESTAMP/
rsync -avprP -e ssh /path/to/backupdir/$TIMESTAMP TheSlave:/path/to/mysql/
scp /etc/mysql/my.cnf TheSlave:/etc/mysql/my.cnf
在奴隶上
/etc/init.d/mysql stop
mv /path/to/mysql/datadir /path/to/mysql/datadir_bak
mv /path/to/mysql/$TIMESTAMP /path/to/mysql/datadir
chown -R mysql:mysql /path/to/mysql/datadir
sed -i 's#server-id=1#server-id=2#g' /etc/mysql/my.cnf
/etc/init.d/mysql start
cat /var/lib/mysql/xtrabackup_binlog_info
> TheMaster-bin.000001 481
mysql
> CHANGE MASTER TO MASTER_HOST='$masterip', MASTER_USER='repl', MASTER_PASSWORD='$slavepass', MASTER_LOG_FILE='TheMaster-bin.000001', MASTER_LOG_POS=481;
> START SLAVE;
然后,在实践中,一旦您的从属服务器开始运行,只需完成几行代码即可。
在./app/etc/local.xml
<default_read>
<connection>
<use/>
<host><![CDATA[host]]></host>
<username><![CDATA[username]]></username>
<password><![CDATA[password]]></password>
<dbname><![CDATA[dbname]]></dbname>
<type>pdo_mysql</type>
<model>mysql4</model>
<initStatements>SET NAMES utf8</initStatements>
<active>1</active>
</connection>
</default_read>
资料来源
要处理多个数据库,您应该执行以下操作:
1°)在/app/etc/local.xml中创建数据库连接:
你有类似的东西:
<default_setup>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[user]]></username>
<password><![CDATA[password]]></password>
<dbname><![CDATA[dbname]]></dbname>
<active>1</active>
</connection>
</default_setup>
处理你的mysql数据库。 在此处添加另一个节点以处理新的连接
<mysetup>
<connection>
<host>192.168.5.10</host> <!-- host of my local server -->
<username>user</username>
<password>passwd</password>
<dbname>d:\pathtomydb\bin\dbname.FDB</dbname>
<active>1</active>
</connection>
</mysetup>
现在您有了另一个连接。
我的是火鸟,因此您可以对此进行一些更改,但是我将按照以下方式进行处理:
连接:
$config = Mage::getConfig()->getResourceConnectionConfig('mysetup');
$dbConfig = array(
'host' => $config->host,
'username' => $config->username,
'password' => $config->password,
'dbname' => $config->dbname
);
$connexion = Zend_Db::factory('Firebird', $dbConfig);
将Firebird替换为所需的连接类型(例如Pdo_Mysql或类似的东西)。 查询:
$connexion->fetchAll($request);
$connexion->update('table',array('field'=>'value'),$where);
等等
如果您的DNS支持,则可以使用加权路由策略创建记录集。 类似于AWS Route53。为了避免停机,您可以与运行状况检查关联。
一个示例: https : //aws.amazon.com/pt/blogs/aws/domain-name-health-checks-for-route-53/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.