MyCat实现数据库与数据库之间的读写分离
一、Mycat的安装准备:
1、jdk:要求jdk必须是1.7及以上版本
2、Mysql:推荐mysql是5.5以上版本
3、Mycat:
Mycat的官方网站:
下载地址:
https://github.com/MyCATApache/Mycat-download
Mycat的安装
Mycat有windows、linux多种版本。本教程为linux安装步骤,windows基本相同。
第一步:下载Mycat-server-xxxx-linux.tar.gz
第二步:将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。
第三步:进入mycat目录,启动mycat
./mycat start
停止:
./mycat stop
mycat 支持的命令{ console | start | stop | restart | status | dump }
Mycat的默认端口号为:8066
二、Mycat的分片
两台mysql数据库服务器
Host1:192.168.37.101
Host2:192.168.37.102
host1环境:
操作系统版本:centos6.4
数据库版本:mysql-5.6
mycat版本::1.4release(发行版)
数据库名:db1、db3
mysql节点2环境:
操作系统版本 : centos6.4
数据库版本 : mysql-5.6
mycat版本 :1.4 release
数据库名 : db2
配置重要文件Schema.xml
<schema name="mycatName" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) --> id自动分片的规则
<table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
</schema>
给mycat创建个虚拟的数据库名mycatName,给mycatName创建指定表名,和db1、db2、db3表名相同才能进行分片
MyCat安装到节点1上(需要安装jdk)
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost2" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.37.101:3306" user="root"
password="root">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.37.102:3306" user="root"
password="root">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
</mycat:schema>
schema.xml中删除<!--type="global"-->,不删除的话分节的话三张表都会有相3同数据
配置重要文件Server.xml
|
<user name="gaoxiansheng"> <property name="password">123456</property> <property name="schemas">mycatName</property> <property name="readOnly">false</property> </user> |
配置重要文件rule.xml
三、mycat读写分离:
主从配置需要注意的地方
1、主DB server和从DB server数据库的版本一致
2、主DB server和从DB server数据库数据名称一致
3、主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一
1.拷贝my.cnf cp /usr/share/mysql/my-default.cnf /etc/
改名 mv my-default.cnf my.cnf
编辑 vim my.cnf 加入 lower_case_table_names=1 不区分大小写
重启mysql service mysql restart
2.主从复制:读写,删除增加一致性
主服务器配置:(在192.168.37.101上配置)
第一步:更改/etc/my.cnf 文件
|
binlog-do-db=db1 binlog-ignore-db=mysql #启用二进制日志 log-bin=mysql-bin #服务器唯一ID,一般取IP最后一段 server-id=134 |
第二步:重启mysql服务
service mysql restart
第三步:建立一个用户
mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';
刷新权限
mysql> FLUSH PRIVILEGES;
查看mysql现在有哪些用户
mysql>select user,host from mysql.user;
第四步:查询master的状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 517| db1 | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set
从服务器配置:(在192.168.37.102上配置)
第一步:
在从服务器Hadoop02上复制文件
cp /usr/share/mysql/my-default.cnf /etc/
改名
mv my-default.cnf my.cnf
更改配置vim /etc/my.cnf
server-id=106
第二步:重启mysql服务
service mysql restart
第三步:配置从服务器
change master to master_host='192.168.37.101',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=517
注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的 mysql-bin.000001就是file对应的值)。
第四步:启动从服务器复制功能
Mysql>start slave;
第五步:检查从服务器复制功能状态:
mysql> show slave status
……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
错误处理:
如果出现此错误:
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。
配置mycat实现读写分离:
|
<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.101:3306" user="root"password="root"> <readHost host="hostS" url="192.168.25.102:3306" user="root"password="root" /> </writeHost> </dataHost> |
MyCat实现数据库与数据库之间的读写分离的更多相关文章
- 阿里P8架构师谈:数据库分库分表、读写分离的原理实现,使用场景
本文转载自:阿里P8架构师谈:数据库分库分表.读写分离的原理实现,使用场景 为什么要分库分表和读写分离? 类似淘宝网这样的网站,海量数据的存储和访问成为了系统设计的瓶颈问题,日益增长的业务数据,无疑对 ...
- JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法
1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL ...
- Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 本文主 ...
- MHA + Maxscale 数据库的高可用和读写分离
MySQL 常见发行版本 MySQL 标准化.自动化部署 深入浅出MySQL备份与恢复 深入理解MySQL主从复制 MySQL构架设计与容量规划 MHA Maxscale MySQL 常见发行版本 M ...
- MHA+atlas(数据库的高可用与读写分离)
学习完了mycat的高可用还是复习一下MHA+atlas吧,个人感觉还是比mycat好用,毕竟MHA有数据补全和切换主从的机制 1 MHA是什么? MHA(Master High Availabili ...
- Mysql主从数据库(master/slave),实现读写分离
在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+uwsgi+负载均衡配置,但是不要以为这样做了就是一劳永逸的,到了数据业务 ...
- 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_85 在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+ ...
- 应用集成mycat,实现mycat的高可用与mysql的读写分离
前言 开心一刻 一个女人自朋友圈写道:我家老公昨天和别人家的老婆出去旅游,迄今未归,我则被别人家的老公折腾了一天,好累哦! 圈子下面,评论无数,老公在下面评论到:能不能好好说话,我只不过陪女儿去毕业旅 ...
- 利用mycat实现基于mysql5.5主从复制的读写分离
整体步骤: 1.准备好两台服务器,一台作为主数据库服务器,一台作为从服务器,并安装好mysql数据库,此处略 2.配置好主从同步 3.下载JDK配置mycat依赖的JAVA环境,mycat采用java ...
随机推荐
- td标签里内容不换行
在一些页面开发中,除自己操作外,引起换行的情况一般有: Ex一.td标签里内容长度过长引起换行: Ex二.div标签(或其他标记)里内容有文本和图片引起换行: 解决方法: 针对例子一用<nobr ...
- 位运算(2)——Number of 1 Bits
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...
- python面试题——网络编程和并发
1.简述 OSI 七层协议. 物理层(电信号.比特流) 基于电器特性发送高低电压(电信号) RJ45.IEEE802.3 数据链路层(数据帧) 定义了电信号的分组方式,分组方式后来形成了统一的标准,即 ...
- 移动web基础
接触retina屏 基础知识(移动Web的基础知识)排版布局(高效的移动Web布局)开发效率终端交互优化 pixel像素基础viewport视图viewport_meta标签viewport_codi ...
- HTML5 笔记之 HTML5 的常见用法介绍
阅读目录 介绍 网页标题.文章标题.文章段落 介绍 字体大小.字体颜色.字体类型.字体位置.背景颜色 介绍 插入图片 介绍 网页内的超链接.网页间的超链接 介绍 有序列表.无序列表 介绍 表格制作 介 ...
- nginx启动时报错
nginx启动时报错 原因:nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed /var/cache/ngin ...
- OMD开源监控软件
参考 Best Monitoring Solution - OMD (Nagios + Check_MK) 官网 mathias-kettner.com OMD labs.consol.de Conf ...
- Ionic+AngularJS 开发的页面在微信公众号下显示不出来原因查究
ionic 页面 微信浏览器遇到的坑 公司的微信公众号一部分页面是用AngularJS+Ioinc开发,发现在本地浏览器测试的时候都没问题,传到服务器在微信公众号下跑就出问题来,经查是: index- ...
- DFS+BFS(POJ3083)
题目链接:http://poj.org/problem?id=3083 解题报告:这个题目,搜最短路,没有什么问题.优先走左边,走右边,有很多说法,思路大概都相同,都是记录当前朝向,根据数学公式(i+ ...
- Python 连接、操作数据库
使用python3+pymysql 一.安装python3 a) 从网上下载安装吧 二.安装pymysql https://pypi.python.org/pypi/PyMySQL h ...