平台数据库采用的是MySQL数据库,目前采用的是独立数据库,为了适应更大数据量的访问请求,需要对MySQL数据库架构进行调整,从网上查找大量资料研究后的结论是:采用MySQL主从备份 + MyCat读写分离的方案,可以有效的提高数据库的访问量。
MySQL主从备份是MySQL自带功能,这是一种热备份方式,数据同步过程相对较快,可以备份到多台机器上去。
MyCat读写分离阿里公司的开源项目,是替代Ameoba、cobar两项读写分离的最新方案,目前是1.6版。
目前平台采用的数据库是5.1.3版的,为了能更好的提高数据库处理的效能,数据库版本应提高到5.6以上,最好采用最新的5.7版。
这需要对主数据库、从数据库分别处理。
2.1 主数据库设置
1 修改主服务器配置
#vi /etc/my.cnf
在[mysqld]节点下,增加
server-id=214 #服务器唯一ID,一般取当前机器IP最后一段
log-bin=master-bin #启用二进制日志
log-bin-index=master-bin.index
binlog-do-db=dbtest1 #需要备份的数据库名
2重启MySQL
/etc/init.d/mysql restart 或是 service mysqld restart
重启命令视服务器安装环境决定
3建立同步帐户并授权slave
mysql>GRANT REPLICATIONSLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'192.168.1.214' IDENTIFIED BY '123';
mysql> FLUSH PRIVILEGES;
说明:
repl: 从服务器获取主服务器上数据时的帐号
192.168.1.214: 从服务器IP地址
123: 帐号密码
FLUSH PRIVILEGES; 刷新权限
注:如有多个从服务器,需要逐个创建帐户,使用%通配符设置IP值有时会无法登录到主服务器。
4查看主服务器状态
mysql> show master status;
说明:
Dbtest1 : 备份的数据库名
master-bin.000003 : 二进制日志文件名
2766 : 文件偏迁量位置
注:上边两个参数需要特别注意,在配置从服务器参数时会用到。
以上几个步骤便完成主服务器配置。
2.2 从数据库设置
1 修改从服务器配置
#vi /etc/my.cnf
在[mysqld]节点下,增加
server-id=213 #服务器唯一ID,一般取当前机器IP最后一段
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
master-host=192.168.1.214 #主服务器IP
master-user=repl #主服务器上设置的同步用户名
master-password=123 #同步用户密码
master-port=3306 #主服务器mysql端口
replicate-do-db=dbtest1 #要同步的数据名
slave-net-timeout=10 #同步超时秒数
#log-slave-updates
skip-slave-start#防止复制随着mysql启动而自动启动。即slave端的mysql服务重启后需手动来启动主从复制(slave start),最好加上,slave端数据库服务重启后手动启动slave比较安全
2重启MySQL、登录mysql
3同步指令
停止slave服务: mysql>slavestop;
启动slave服务: mysql>slavestart;
设置与master服务器相关的配置参数 :
mysql>change master to master_host=’192.168.15.132’,master_user=’backup’,master_password=’123456’,MASTER_LOG_FILE=’log-error.000010’,MASTER_LOG_POS=106;
u 检查从服务器复制功能状态
mysql> show slave status\G
以下两个参数必须为YES:
Slave_IO_Running: Yes
Slave_SQL_Running:Yes
以上几个步骤便完成主服务器配置。
2.3 错误检查
配置错误时,可通过
cat/var/log/mysqld.log | tail -30
指令查看错误信息,然后根据错误内容进行排查、解决。
3.1 Mycat的下载
Mycat可以从http://www.mycat.org.cn/下载
网站上有个权威下载,可以学习Mycat的原理、配置及使用。
3.2 Mycat部署方法
Mycat具体的部署方法可以参见权威指南的入门篇中的第四章快速入门
3.3 Mycat使用方法
Mycat具体的使用方法可以参见高级进队篇中1.3节内容:
3.4 实践说明
server.xml配置说明:
这里配置的用户名、密码是连接Mycat的用户名、密码,schemas是Mycat里创建出的数据库。
schema.xml
Schema节点中的table必须要填写,不然Mycat启动会报错。
Table节点中的dataNode可以是不同的、多来源的数据节点。
Balance说明
1、balance=0 不开启读写分离机制,所有读操作都发送到当前可用的writehostle .
2、balance=1 全部的readhost与stand by writeHost 参与select语句的负载均衡。简单的说,双主双从模式(M1àS1,M2àS2,并且M1和M2互为主备),正常情况下,M1,S1,S2都参与select语句的复杂均衡。
3、balance=2 所有读操作都随机的在readhost和writehost上分发
writeType说明
负载均衡类型,目前的取值有3种:
1、writeType="0", 所有写操作发送到配置的第一个writeHost。
2、writeType="1",所有写操作都随机的发送到配置的writeHost。
3、writeType="2",不执行写操作。
switchType
1、switchType=-1 表示不自动切换
2、switchType=1 默认值,自动切换
3、switchType=2 基于MySQL 主从同步的状态决定是否切换