mysql读写主从配置

上传人:平*** 文档编号:13353119 上传时间:2017-10-23 格式:DOCX 页数:12 大小:87.73KB
返回 下载 相关 举报
mysql读写主从配置_第1页
第1页 / 共12页
mysql读写主从配置_第2页
第2页 / 共12页
mysql读写主从配置_第3页
第3页 / 共12页
mysql读写主从配置_第4页
第4页 / 共12页
mysql读写主从配置_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《mysql读写主从配置》由会员分享,可在线阅读,更多相关《mysql读写主从配置(12页珍藏版)》请在金锄头文库上搜索。

1、最近在研究 Web 服务端负载均衡方面的技术,参考网上资料,总体思路可以分为如下几类:1.应用服务器集群,典型的代表就是 Nginx+Tomcat 实现负载均衡;2.数据库集群。 本文主要关注数据库集群。实现思路1.应用层解决方案通过应用层对数据源做路由来实现读写分离,项目是 SpringMVC+myBatis,SQL 路由交给 Spring,通过 AOP 或者Annotation 由代码显示的控制 Datasource。优点是路由策略的扩展性和可控性较强。缺点是耦合到 Spring;需要加入控制代码。2.中间件解决方案通过 mysql 中间件做主从集群,Mysql Proxy、Amoeba

2、、Atlas 等中间件貌似都能符合需求。优点是与应用层解耦。缺点是增加一个服务维护的风险点,性能及稳定性待测试,需要支持代码强制主从和事务。3.驱动解决方案Mysql 自带的 ReplicationDriver 提供主从库访问的驱动,是通过保持多个数据源的链接并根据 ReadOnly True/False来选择数据源。相当于应用层解决方案的一个现有实现,扩展性更弱。并且貌似不能使用其他驱动。由于耦合较高暂不考虑。三种实现思路关键技术1.在应用层使用 Spring 对数据源做路由,关键字: Spring AOP;2.增加中间代理层,Amoeba 就属于这种情况,此外还有 Mysql 官方提供的

3、Mysql Proxy;3.在驱动层使用 Mysql 提供的主从库访问驱动,直接与数据库连接驱动耦合,扩展性弱,目前还未做原型尝试。综合上述分析,考虑到需要与应用层解耦,现采用中间件解决方案,使用 Amoeba 做 SQL 路由,实现数据库读写分离。既然选择使用 Amoeba,让我们先了解什么是 Amoeba?它能做什么?要怎么做?最后再看看它不能做什么。AmoebaAmoeba 是什么Amoeba(变形虫)项目,该开源框架于 2008 年开始发布一款 Amoeba for Mysql 软件。详细资料可参阅 Amoeba 官方文档(需翻墙) 。Amoeba 能做什么Amoeba 致力于 MyS

4、QL 的分布式数据库前端代理层,它主要在应用层访问 MySQL 的时候充当 SQL 路由功能,专注于分布式数据库代理层 (Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过 Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能。Amoeba 不能做什么既然知道 Amoeba 能为我们解决什么问题,也要做到 Amoeba 不擅长的事情。这样在具体项目技术方案选择时,方能权衡考虑。Amoeba 对于以下几点暂时无能为力: 1.

5、目前还不支持事务;2.暂时不支持存储过程,官方说近期会支持;3.不适合从 Amoeba 导数据的场景或者对大数据量查询的 query 并不合适,比如一次请求返回 10w 以上甚至更多数据的场合;4.暂时不支持分库分表,amoeba 目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致。若实际项目中所需要的功能正式 Amoeba 的短板,建议使用 Mysql Proxy 作为中间件,或者在应用层通过程序控制数据源,手动实现数据库读写分离。原型环境1.服务器 AIP: 1XX.XX.XX.181运行 Mysql 主数据库和 Amoeba。2.服务器 BIP: 1XX.XX.XX.182运行

6、 Mysql 从数据库。3.服务器 CIP: 1XX.XX.XX.183 运行 Mysql 从数据库。OS 版本。rootchenllcentos # cat /etc/redhat-release CentOS release 6.5 (Final)具体实现Mysql 数据库读写分离的具体实现主要包括两个部分配置,即数据主从复制和 Amoeba 代理,现分别进行介绍。主从复制为什么要进行主从复制呢,其实很容易理解,因为数据要同步啊。查看服务器 A 是否已经安装 Mysql 数据库。rootchenllcentos # rpm -aq | grep mysql若无消息显示,则进行 Mysql

7、安装,否则跳过此步骤。yum install -y mysql-server mysql mysql-devel mysql-libsMysql 安装完毕,默认开机不启动 Mysql 服务。rootchenllcentos # chkconfig -list | grep mysqldmysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭现在我们更改下配置,让 Mysql 开机启动。rootchenllcentos # chkconfig mysqld onrootchenllcentos # chkconfig -list | grep mysqldmysqld

8、0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭接下来,设置 Mysql 账户密码。rootchenllcentos # mysqladmin -u root password yourpassword此时, 可以用刚才设置的账户密码登陆数据库。rootchenllcentos # mysql -uroot -pyourpassword至此,Mysql 数据库安装成功。同样的,对服务器 B 和服务器 C 安装 Mysql 数据库,此处略去。接下来,开始进行数据库主从复制的配置。1.主数据库配置修改主数据库配置文件 f。rootchenllcentos # vi /etc/f

9、新增如下标注内容:mysqldmax_connections=1000binlog-ignore-db=mysql #新增binlog-ignore-db=information_schema #新增log-bin=mysql-bin #新增server-id=1 #新增datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0mysqld_s

10、afelog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid关于新增的几项配置,有什么作用呢?其中 binlog-ignore-db 用来指定忽略同步的数据库,未指定的默认都进行主从复制。log-bin 指定数据库操作日志,主从复制的过程本质就是从数据库在主数据库读取该日志文件,并且再执行一次。server-id 只要满足在数据库集群中不重复即可。保存退出,重启 Mysqld 服务,使配置生效。额外提个原则,凡是修改到配置文件,最好都重启该配置相关的程序或服务。rootchenllcentos # service mys

11、qld restart停止 mysqld: 确定正在启动 mysqld: 确定登陆主数据库。rootchenllcentos # mysql -uroot -pyourpassword查看主数据库 master 状态。mysql show master statusG* 1. row *File: mysql-bin.000015Position: 106Binlog_Do_DB: Binlog_Ignore_DB: mysql,information_schema可以看出,Binlog_Ignore_DB 显示的信息就是刚才我们在配置文件所配置的信息。此外,还有两个重要的参数需要记下:mys

12、ql-bin.000015 和 106。从数据库就是根据这两个参数,完成主从复制,以达到数据同步的效果。从数据库要读取主数据库日志文件,需要主数据开放授权用户。mysql GRANT REPLICATION SLAVE ON *.* to slave1XX.XX.XX.182 identified by rootmysql GRANT REPLICATION SLAVE ON *.* to slave11XX.XX.XX.183 identified by root进行从数据库配置时,将使用到这两个授权用户。出于数据安全性考虑,Mysql 提供访问权限控制,若以主机的方式远程访问数据库,需要开

13、启相应权限。mysql GRANT ALL PRIVILEGES ON *.* TO root1XX.XX.XX.181 IDENTIFIED BY root WITH GRANT OPTION;mysql FLUSH PRIVILEGES;mysql GRANT ALL PRIVILEGES ON *.* TO root1XX.XX.XX.182 IDENTIFIED BY root WITH GRANT OPTION;mysql FLUSH PRIVILEGES;mysql GRANT ALL PRIVILEGES ON *.* TO root1XX.XX.XX.183 IDENTIFIE

14、D BY root WITH GRANT OPTION;mysql FLUSH PRIVILEGES;最后,还需要修改 iptables,对数据库端口 3306 放行。rootchenllcentos # vi /etc/sysconfig/iptables新增如下语句:# 放行 Mysql 端口-A INPUT -m state -state NEW -m tcp -p tcp -dport 3306 -j ACCEPT至此,完成主数据库配置。接下来,让我们进行从数据库配置。2.从数据库配置从数据库配置相对主数据配置相对简单,主要包括配置文件修改和主从复制设置。现以服务器 B 为例进行说明。

15、 修改从数据库配置文件。mysqldmax_connections=1000server-id=2 #新增datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0mysqld_safelog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid设置主从数据库同步点。mysql change master to master_host=1XX.XX.XX.181,master_user=slave,master_password=root,master_log_file=mysql-bin.000015,master_log_pos=106;还记得 mysql-bin.000015 和 10

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号