linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离
1.基础设施

  两台虚拟机:172.20.79.232(主) 172.20.79.233(从)
  1.1软件设施

    mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本
2.实现步骤一(mycat实现读写分离)

  1.首先在两台服务器安装mysql

    1.下载mysql的repo源

 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

    2.安装mysql-community-release-el7-5.noarch.rpm包

 $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

      安装这个包后,会获得两个mysql的yum repo源:

 /etc/yum.repos.d/mysql-community.repo
 /etc/yum.repos.d/mysql-community-source.repo

    3.安装mysql

$ sudo yum install mysql-server

      根据提示安装就可以了,不过安装完成后没有密码,需要重置密码
    4.重置mysql密码

 $ mysql -u root

      登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

      

$ sudo chown -R root:root /var/lib/mysql

    5.开启mysql远程连接
    

grant all on *.* to [email protected]‘%‘ identified by ‘admin123‘ with grant option;
flush privileges;

    6.重启mysql服务
     

 $ service mysqld restart

    7.接下来登录重置密码:
  

 $ mysql -u root  //直接回车进入mysql控制台
      mysql > use mysql;
      mysql > update user set password=password(‘123456‘) where user=‘root‘;
      mysql > exit;

  2.在主服务器安装mycat
    1.下载mycat1.6
  

https://github.com/MyCATApache/Mycat-download

  

    2.上传至主服务器解压安装    

tar zxvf  Mycat-server-1.6-RELEASE-20160405120037-linux.tar.gz -C /usr/local
      cd /usr/local/mycat
      groupadd mycat
      useradd -g mycat mycat
      passwd mycat
      chown -R mycat.mycat /usr/local/mycat
      export  MYCAT_HOME=/usr/local/mycat 

     2.1 修改(新增)   

 vi /etc/hosts
   172.20.79.232 root232
   172.20.79.233 root233


     2.2 修改mycat启动jdk路径
     

vi /usr/local/mycat/conf/wrapper.conf
   修改wrapper.java.command=%JAVA_HOME%/bin/java


     2.3 配置mycat 文件schema.xml
        

vi /usr/local/mycat/conf/schema.xml
  <?xml version="1.0"?>
  <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  <mycat:schema xmlns:mycat="http://io.mycat/">
  <!-- 这里的mycatdb与server.xml 里面名称一致 dataNode有几个节点就配置几个节点,用逗号分隔-->
  <schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" />
  <!-- database有几个数据库就配置几行即可-->
  <dataNode name="dn1" dataHost="localhost1" database="db01" />
  <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
  writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  <!--
  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",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
  writeType表示写模式
  writeType="0",所有的操作发送到配置的第一个writehost
  writeType="1",随机发送到配置的所有writehost
  writeType="2",不执行写操作
  switchType指的是切换的模式,目前的取值也有4种:
  switchType=‘-1‘ 表示不自动切换
  switchType=‘1‘ 默认值,表示自动切换
  switchType=‘2‘ 基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status
  switchType=‘3‘基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为show status like ‘wsrep%‘。
  -->
  <heartbeat>select user()</heartbeat>
  <!--配置mysql写入的节点-->
  <writeHost host="hostM1" url="172.20.79.232:3306" user="root"
  password="admin123">
  <!--配置mysql读取的节点-->
  <readHost host="hostS2" url="172.20.79.233:3306" user="root" password="admin123" />
  </writeHost>
  </dataHost>
  </mycat:schema>

  

    2.4 配置mycat 文件server.xml

vi /usr/local/mycat/conf/schema.xml<?xml version="1.0" encoding="UTF-8"?>

  <!DOCTYPE mycat:server SYSTEM "server.dtd">
  <mycat:server xmlns:mycat="http://io.mycat/">
  <system>
  <property name="useSqlStat">0</property> <!-- 1为开启实时统计、0为关闭 -->
  <property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 -->
  <property name="sequnceHandlerType">2</property>
  <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
  <property name="processorBufferPoolType">0</property>
  <property name="handleDistributedTransactions">0</property>
  <!--
  off heap for merge/order/group/limit 1开启 0关闭
  -->
  <property name="useOffHeapForMerge">1</property>
  <!--
  单位为m
  -->
  <property name="memoryPageSize">1m</property>
  <!--
  单位为k
  -->
  <property name="spillsFileBufferSize">1k</property>
  <property name="useStreamOutput">0</property>
  <!--
  单位为m
  -->
  <property name="systemReserveMemorySize">384m</property>
  <!--是否采用zookeeper协调切换 -->
  <property name="useZKSwitch">true</property>
  </system>
  <user name="root">
  <property name="password">admin123</property>
  <property name="schemas">mycatdb</property>
  </user>
  <user name="user">
  <property name="password">user</property>
  <property name="schemas">mycatdb</property>
  <property name="readOnly">true</property>
  </user>
  </mycat:server>

  

 3.实现步骤二(mysql实现主从复制)

原文地址:https://www.cnblogs.com/coes/p/8480384.html

时间: 2024-10-15 01:09:53

linux下mysql基于mycat做主从复制和读写分离之基础篇的相关文章

Linux下mysql基于MyCat实现主从复制和读写分离

1.1 MyCat介绍及应用场景MyCat介绍MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里.MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL.S

利用mycat实现基于mysql5.5主从复制的读写分离

整体步骤: 1.准备好两台服务器,一台作为主数据库服务器,一台作为从服务器,并安装好mysql数据库,此处略 2.配置好主从同步 3.下载JDK配置mycat依赖的JAVA环境,mycat采用java语言开发运行依赖jre 4.配置mycat的相关文件 5.测试 一.配置mysql主从环境 MYSQL主从同步的作用 (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availability)和容错 MYSQL主从同步的原理 关于MYSQ

Linux 下 tomcat基于nginx做负载均衡

测试目的:在一台装有nginx服务器上访问nginx这台的ip地址,刷新一次就会显示后端三台不同的tomcat服务器的测试页. 测试环境:三台centos 6.8 一台 centos 7.3 软件版本: nginx 1.12.1 tomcat 8 软件部署的话 就不操作了 之前已经部署好了的,不会的话 看我之前的博客里都有. nginx 安装 http://dklwj.blog.51cto.com/9199080/1949570 tomcat 安装: http://dklwj.blog.51ct

mysql Replication(mysql5.7主从复制以及读写分离)

Replication: 即在多个数据库服务器之间实现数据的自动复制. 策略一:基于binary log file(二进制日志文)件的方法 实现机制: 1.The master server 数据库所有的 写入.更新 操作都以"事件"的形式记录到bin log file. 2.The slave servers  从master上读取bin log file的内容,并在 slave server本地执行bin log file中记录的事件. slave server会接收 bin lo

Linux下Mysql主从复制

一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. 二.MySQL主从复制(读写分离)和集群的区别:我对MySQL也是刚开始研究,不是很专业.我的理解是:1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用

mysql学习(3)-linux下mysql主从复制

前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. MySQL主从复制(读写分离)和集群的区别: 1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作).局限性:(1)配置好主从复制之后,同一张表

重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践

一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库与分表等.这篇文章主要讲述数据库分库与分表 (1)业务拆分 在?大型网站应用之海量数据和高并发解决方案总结一二?一篇文章中也具体讲述了为什么要对业务进行拆分. 业务起步初始,为了加快应用上线和快速迭代,很多应用都采用集中式的架构.随着业务系统的扩大,系统变得越来越复杂,越来越难以维护,开发效率变得越

linux下mysql主从复制(第二篇读写分离) mycat 中间件

linux下mysql主从复制(第二篇读写分离) mycat 中间件 接着上篇文档补全,mysql 读写分离,在上篇文章案例下准备好Mycat-server-1.4-release-20151019230038-win.tar.gz 解压包 1.解压后的文件如下: 1.1 接下来进入到conf 目录下配置四个文件server.xml.schema.xml.rule.xml.log4j.xml 下面一一介绍 1.2 首先在我们主服务上面test 库下新建两张表如下: CREATETABLE`t_u

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下)

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下) 昨天谈到了Mysql实现主从复制,但由于时间原因并未讲有关读写分离的实现,之所以有读写分离,是为了使数据库拥有双机热备功能,至于双机热备,特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状