-
MyCAT读写分离
2019-03-28 10:56:04MyCAT读写分离 mycat读写分离依赖于MySQL主从复制,所以需要先配置MySQL的主从复制,然后在配置mycat读写分离。 1.MySQL配置主从复制 配置MySQL主从复制链接:link 2.mycat配置读写分离 配置读写分离schema.xml文件...MyCAT读写分离
mycat读写分离依赖于MySQL主从复制,所以需要先配置MySQL的主从复制,然后在配置mycat读写分离。
1.MySQL配置主从复制
配置MySQL主从复制链接:link
2.mycat配置读写分离
配置读写分离schema.xml文件如下
<!-- 配置逻辑库USERDB,逻辑库数据节点配置到dn1上 --> <schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema> <!-- 配置数据节点,配置节点主机node1,数据库实例库user_db --> <dataNode name="dn1" dataHost="node1" database="user_db" /> <!-- 配置节点主机 --> <dataHost name="node1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <!-- 各个数据库实例,心跳检测 --> <heartbeat>select user()</heartbeat> <!-- 配置写库1 --> <writeHost host="hostM1" url="192.168.5.180:3306" user="root"password="123456"> <!-- 配置读库1 --> <readHost host="hostS1" url="192.168.5.180:3307" user="root" password="123456" /> <!-- 配置读库2 --> <readHost host="hostS2" url="192.168.5.180:3308" user="root" password="123456" /> </writeHost> <!-- 配置写库2,当配置双主时多从时使用 --> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>
-
mycat读写分离
2016-07-05 10:15:12mycat读写分离MyCat 实现读写分离,是为了更好的提高数据库性能,优化数据库查询。
首先mycat的读写分离基于mysql主从集群
1、mysql主从配置
三台机器 其中190是主,其余俩是节点
192.168.0.190 master
192.168.0.162 slave
192.168.0.163 slave
mysql 的主从集群配置详情参考:http://blog.csdn.net/linlinv3/article/details/51783976 ,这里就不做讲解了。
2、mycat配置文件修改
mycat schema.xml配置如下
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
- <table name="employee" rule="auto-sharding-long" dataNode="dn1" />
- </schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
- <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.0.190:3306" user="root" password="fulong">
</writeHost>
<writeHost host="hostS1" url="192.168.0.162:3306" user="root" password="fulong" />
<writeHost host="hostS2" url="192.168.0.163:3306" user="root" password="fulong" />
</dataHost>
</mycat:schema>
server.xml 为了简单起见,用的mycat的原始配置,不一一列出
3、启动mycat并登陆
mycat安装部署可以参考:http://blog.csdn.net/linlinv3/article/details/51776059
lin@lin190:~$ mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB
创建数据库
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
CREATE TABLE employee ( ID int(3) NOT NULL DEFAULT 0 , PRIMARY KEY ( ID ) );
insert into employee (id ) values (1);
查询数据
select * from employee
4、查看mysql的日志
通过日志记录可以看到 那个表进行的写操作,哪个进行的读操作。
或者,停掉190mysql服务。此时在执行insert语句 就不能执行,但是依旧可以执行select语句,也可以说明了已经读写分离。
管理端口9066
mysql -utest -ptest -h127.0.0.1 -P9066 -DTESTDB
查看管理命令:
mysql> show @@help;
错误:
ERROR 1105 (HY000): backend connect: ConnectionException [code=1129, msg=Host 'lin190.lin' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts']
原因:
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
解决办法:
set global max_connect_errors = 1000;
或者
/usr/bin/mysqladmin flush-hosts -h192.168.0.190 -P3306 -uroot -pfulong;
-
Mycat 读写分离
2020-05-29 21:45:44Mycat 读写分离 首先配置好主从复制,我们这里使用百度1作为master,百度2作为slave 配置mycat,核心是schema.xml文件的配置 server.xml ... …… <user name="mycat" defaultAccount="true"> <...Mycat 读写分离
-
首先配置好主从复制,我们这里使用百度1作为master,百度2作为slave
-
配置mycat,核心是schema.xml文件的配置
- server.xml
... …… <user name="mycat" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">TESTDB</property> <property name="defaultSchema">TESTDB</property> </user> …… ...
- schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost="localhost1" database="testdb" /> <!--重点配置--> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- 写主机 百度1 --> <writeHost host="hostM1" url="jdbc:mysql://106.13.127.37:3306" user="root" password="4513zzk."> <!-- 读从机 百度2--> <readHost host="hostS1" url="jdbc:mysql://106.13.32.222:3306" user="root" password="4513zzk."></readHost> </writeHost> </dataHost> </mycat:schema>
这里着重关注一下balance这个属性,主要代表负载均衡的类型
目前的取值有4 种:-
balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
-
balance=“1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从 模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
-
balance=“2”,所有读操作都随机的在 writeHost、readhost 上分发。
-
balance=“3”,所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力
-
-
MyCat读写分离
2019-01-22 13:19:54一、MyCat读写分离 数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决...一、MyCat读写分离
-
数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个读节点的配置
-
-
MySQL主从复制
-
主从配置需要注意的地方:
-
主DB server和从DB server数据库的版本一致
-
主DB server和从DB server数据库数据一致【这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录】
-
主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一
-
二、MySQL主服务器配置
- 第一步:修改my.cnf文件,在主服务器上
- 在[mysqld]段下添加:
# 往哪个数据库中进行增删改查 binlog-do-db=db1 binlog-ignore-db=mysql # 启用二进制日志 log-bin=mysql-bin # 服务器唯一ID,一般取IP最后一段 server-id=134
-
第二步:重启mysql服务
-
systemctl restart mysqld.service
-
-
第三步:建立帐户并授权slave【创建一个账号,来供从服务器来访问主服务器】
# 创建账号 mysql> GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456'; # 授权 mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; # 一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。 # 刷新权限 mysql> FLUSH PRIVILEGES; # 查看mysql现在有哪些用户 mysql> select user,host from mysql.user;
-
-
第四步:查询master的状态
-
mysql> show master status;
-
-
三、从服务器配置
-
第一步:修改my.conf文件,在从服务器上
-
在[mysqld]段下添加:
-
server-id=166
-
-
-
第二步:配置从服务器
mysql> change master to master_host='192.168.25.134',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120; # 注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。
- 第三步:启动从服务器复制功能
- mysql> start slave;
- 第四步:检查从服务器复制功能状态
- mysql> show slave status;
四、MyCat的配置
- Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:
<dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost1" database="db2" /> <dataNode name="dn3" dataHost="localhost1" database="db3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> <heartbeat>show slave status</heartbeat> <writeHost host="hostM" url="192.168.25.134:3306" user="root" password="root"> <readHost host="hostS" url="192.168.25.166:3306" user="root" password="root" /> </writeHost> </dataHost>
-
Balance参数设置:
-
balance=“0”, 所有读操作都发送到当前可用的writeHost上。
-
balance=“1”,所有读操作都随机的发送到readHost。
-
balance=“2”,所有读操作都随机的在writeHost、readhost上分发。
-
-
WriteType参数设置:
-
writeType=“0”, 所有写操作都发送到可用的writeHost上。
-
writeType=“1”,所有写操作都随机的发送到readHost。
-
writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。
-
-
“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”
-
switchType 目前有三种选择:
-
-1:表示不自动切换
-
1 :默认值,自动切换
-
2 :基于MySQL主从同步的状态决定是否切换
-
-
“Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType="2" 与slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检测 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master主从复制时延。“
-
-
Mycat读写分离
2018-08-17 16:44:41Mycat读写分离 Mycat不负责数据的同步问题,需要配置mysql端的主从同步(文末) 1.相关配置属性: 1.1balance属性: 1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。... -
mysql 主从同步 mycat 读写分离 分库分表(二) mycat 读写分离
2018-04-09 12:12:27基于mysql主从同步:https://blog.csdn.net/qq_35119422/article/details/79816705首先writeHost和readHost需实现主从同步mycat读写分离核心配置:在schema.xml中配置:<dataHost name="localhost1"... -
MyCat 读写分离
2020-11-20 15:12:45提供数据读写分离服务; 提供数据分片服务;基于阿巴巴cober进行演发的开源软件。 2. 分片规则 Mycat支持提供10种分片规则,以下是5种常用的 ①. 枚举法 //sharding-by-intfile ②. 固定分片 //rule1 ③. 范围约定 //...
-
基于和声搜索算法的模糊软集近似正态参数约简
-
gwinthis.github.io-源码
-
QueTy:支持时间边际效益的云服务协同框架
-
ACPIspec40a.pdf
-
LeetCode每日一题:二叉搜索树的范围和
-
构建简单OAuth授权服务器
-
ACPI Methods for Display Devices.doc
-
获取地址栏的参数url
-
iptables 企业级防火墙配置(四表五链)
-
甲状腺的作用,甲状腺癌症的治疗与术后康复情况,甲亢及其治疗//2021-2-24
-
敏捷设计,让设计更高效
-
Samba 服务配置与管理
-
2021-02-24
-
JMETER 性能测试基础课程
-
vue前端设置跨域(跨端口)
-
在多软粗糙集上
-
DOS命令:graftabl
-
stc15,原理图,参考
-
严格型多元二次拟群的推导和生成算法
-
Unity ILRuntime框架设计