}
vrrp_script chk_mysql {
script "/etc/keepalived/mysql_check.sh"
interval 2
weight -20
}
vrrp_instance VI_83 { #定义实例
state MASTER #状态参数 master/backup 只是说明
interface eth0 #虚ip绑定网卡位置
virtual_router_id 83 #同一个集群id一致
priority 100 #priority值最大的将成为master
mcast_src_ip 192.168.0.1 #发送组播包的地址,不设置则使用网卡默认ip
advert_int 1 #主备通讯间隔s
authentication { #设置认证
auth_type PASS
auth_pass 1111
}
track_script {
chk_mysql
}
virtual_ipaddress { #虚拟ip
192.168.0.0
}
notify_master /etc/keepalived/sendmail.pl #邮件发送脚本
}
- 一主多从架构部署介绍
文章插图
应用服务器只配置mycat地址即可,mycat可以实现读写分离和故障切换 。
Master负责写入,Slave负责读取,同时MySQL可以支持级联同步部署 。
MySQL为保证事务的完整性,复制在slave上是串行化的,也就是多个master上的并行更新操作不能在同一slave上同时进行 。
Mycat读写分离配置及优化
mycat可用于读写分离和数据切分的高可用中间件,并支持基于心跳检测的自动故障切换,mycat主要包含两个核心配置文件server.xml和schema.xml
1.server.xml配置优化
<user name=“user”> <!—对客户端提供的用户名、密码 及表空间-->
<property name="password">******</property>
<property name="schemas">testdb</property>
<property name="readOnly">false</property>
<!--readOnly设置成false,代表可进行读写操作-->
</user>
2. schema.xml配置优化
<schema name=“testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode=“dn1">
</schema>
<dataNode name=“dn1" dataHost="host001" database=“db1" />
<dataHost name=" host001" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status </heartbeat>
<writeHost host=“mysql-1” url=“192.168.0.1:3306” user=“user” password=“******”>
<!—master可读、写操作,slave只读-->
<readHost host="mysql-1" url="192.168.0.1:3306" user=“user" password="******" />
<readHost host="mysql-2" url="192.168.0.2:3306" user=“user" password="******" />
</writeHost>
<writeHost host=“mysql-2” url=“192.168.0.2:3306” user=“user”password=“******”>
<!—master故障,切换slave读写-->
<readHost host="mysql-2" url="192.168.0.2:3306" user=“user" password="******" />
</writeHost>
</dataHost>
参数说明:
writeType属性负载均衡类型,目前的取值有3种:
- writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
- writeType="1",所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐 。
- writeType="2",不执行写操作
- switchType='-1' 表示不自动切换
- switchType='1' 默认值,表示自动切换
- switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
- switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'
- balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上 。
- balance="1",所有读操作都随机的发送到readHost 。全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡 。
- balance="2",所有读操作都随机的在writeHost、readhost上分发 。
- 程序员该如何进行 SQL 数据库的优化?
- cookie对SEO优化有哪些影响
- 淘宝直通车怎么优化 淘宝如何进行关键词优化
- 软体机器人科技有限公司 软体机器人不可应用于
- 新平县平掌乡,优化茶产业 助农增收
- 淘宝店铺修改主图有影响吗 淘宝店铺主图优化怎么做
- 淘宝产品优化 淘宝店铺优化主要从哪些方面进行
- 淘宝主图加文字影响权重吗 淘宝主图优化有哪些方法
- 零信任下的应用安全网关该如何建设?
- SQL优化技巧总结,及案例分析