Toggle Navigation
首页
Golang
PHP
Laravel
Magento
Linux
数据库
MySQL
Redis
Mongodb
热门知识
程序与生活
架构师之路
静态站点
GitHub
主页
Magento优化 – MySQL读写分离
Magento优化 – MySQL读写分离
09-12
Mark
1525
Magento使用EAV模型,所以对数据库来说,读操作往往比较大,可以使用读写分离技术有效解决这个问题。所谓读写分离,简单来说就是所有写操作,在A服务器上完成,所有写操作到B服务器上完成,A和B服务器实现主从复制。 ###**Mysql主从复制**### 主从服务器设置的稳健性得以提升,如果主服务器发生故障,可以把本来作为备份的从服务器提升为新的主服务器。 在主从服务器上分开处理用户的请求,读的话,可以直接读取备机数据,可获得更短的响应时间。 用从服务器做数据备份而不会占用主服务器的系统资源。网上关于myaql主从复制的文章很多,这里就不详细介绍了。 ###**Magento数据库读写分离**### Magento程序本身对读写分离提供了内置支持,可以为每个模块都指定读写适配器,如果没有指定就使用默认的读写适配器,而默认的读写适配器又是使用安装时的适配器。 比如模块名叫eav,那么可以在配置文件中指定eav_write和eav_read适配器,如果没有指定就使用系统默认的default_write和default_read,而default_write和default_read通过use节点指定它实际使用default_setup配置的适配器。 ```php # app/etc/local.xml <global> <resources> <db> <table_prefix><![CDATA[]]></table_prefix> </db> <default_setup> <connection> <host><![CDATA[192.168.1.10]]></host> <username><![CDATA[magento]]></username> <password><![CDATA[root]]></password> <dbname><![CDATA[magento]]></dbname> <active>1</active> </connection> </default_setup> </resources> </global> ``` 默认的读写适配器是放置在app/etc/config.xml中的: ```php <default_write> <connection> <use>default_setup</use> </connection> </default_write> <default_read> <connection> <use>default_setup</use> </connection> </default_read> ``` 默认它使用use节点指定使用default_setup适配器,所以我们修改这两个配置就可以实现读写分离: ```php <default_write> <connection> <host><![CDATA[192.168.1.10]]></host> <username><![CDATA[magento]]></username> <password><![CDATA[root]]></password> <dbname><![CDATA[magento]]></dbname> <active>1</active> </connection> </default_write> <default_read> <connection> <host><![CDATA[192.168.1.20]]></host> <username><![CDATA[magento]]></username> <password><![CDATA[root]]></password> <dbname><![CDATA[magento]]></dbname> <active>1</active> </connection> </default_read> ``` 读操作全部到达192.168.1.20服务器,写操作全部在192.168.1.10进行。注意,不要在local.xml中修改这个配置。虽然local.xml的配置最优先,但是默认配置有use节点,只要有use节点,就使用use节点的适配器,所以需要在config.xml中直接修改(不要出现use节点)。 每个模块都可以指定自己的读写适配器,如果没有指定就使用默认的配置。这个为读压力的水平分解提供了内置支持。比如某个模块的读操作非常频繁,可以读定向到单独到一个服务器中。通过指定读写适配器,还可以为模块指定使用另一个库等等。 参考文章:<http://blog.ifeeline.com/745.html>
最新文章
Golang内存问题处理
WebSocket详解
Gopher面试中的Coding(三)
Golang用os/signal包实现平滑重载配置文件
Nginx实现负载均衡的几种方式
Golang中子goroutine与主协程同步的四种实现
Dockerfile文件详解
Golang开发微信公众号
最热文章
Magento实现下载csv数据表格
1815
Laravel带有条件搜索的分页
1716
Magento上传文件、缩略图和导出CSV
1705
Magento添加Advanced Dataflow
1655
Golang开发微信公众号
1590
Magento后台添加rule规则
1560
Magento优化 – MySQL读写分离
1525
Magento常用模块分享
1419
热门标签
下载
laravel分页
上传
导出
Dataflow
微信公众号
rule
规则
读写分离
模块
shell
正则
Collection
binlog
命名空间
内存泄漏
处理
Git
string
解锁
锁表
composer
事务处理
函数
redis sentinel
time
架构
系统
package
读写
事务处理
缓存
日志分析
进阶
golang
表分割
schedule
fmt
事务
分布式锁
交叉编译
HTTPS
日志分割
Gopher面试
Dockerfile
channel
mongodb
git服务器
gogs
多数据库
重载配置
负载均衡
日志过滤
php
protobuf
发展方向
版本号
模型关系
goroutine
concat
json
mongodb
get
post
defer
panic
golang算法
docker
elasticsearch
算法
代码部署
rpc
redis
写文件
protobuf
主从配置
websocket
laravel
package
并发
量级
curl
生成插件
直接下载
数据类型
Shell
错误传递
grpc
成长
Go指针
参数
protobuf
队列
方法
Redis持久化
路上
风景
yum