美文网首页
Mycat知识精粹-ing

Mycat知识精粹-ing

作者: ___Kevin | 来源:发表于2020-12-20 21:38 被阅读0次
  1. mycat是什么---作用:
    java应用程序与数据库紧耦合-----解耦application和db
    高访问量高并发对数据库压力----分库分表,多数据源整合
    读写请求数据量不一致---(双主双从)读写分离(基于mysql的主从复制)
    2.Mycat的安装
    需要事先安装jvm环境和安装mysql(jdk采用解压缩,mysql:sudo apt install mysql-server),Mycat压缩包:Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz,解压安装(安装包通常放在/opt路径下,解压后文件通常放在/usr/local路径下)
    windows文件拷贝到linux系统,pscp工具,对应命令:pscp 本地文件dir root@IP:/home/dir,随后mv移动文件到/opt路径下(pscp/scp时提示connection refused,原因可能目标linux中没有安装ssh-server或没有启动,sudo apt-get install openssh-server命令安装)
    linux解压命令 tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar,随后mv文件夹到/usr/local路径下
    3.mycat的配置
    备份config路径下server.xml,schema.xml,rule.xml文件
    修改配置文件server.xml
    mycat-server-config.png (vi模式下显示行号:set nu,删除多行是dnd,如d27d)修改配置文件schema.xml:
    mycat-schema-config.png 4.Mysql远程访问验证
    Mycat作为数据库中间件,要和不同地址的数据库建立访问,准备3台虚拟机数据库地址
    mysql -uroot -p556600 -h 10.0.0.214 -P 3306
    mysql -uroot -p556600 -h 10.0.0.212 -P 3306
    mysql -uroot -p556600 -h 10.0.0.177 -P 3306
    如果无权远程访问,主机间授权:grant all privileges on . to root@被受限的主机IP identified by '556600';
    如果遇到报错:Can't connect to MySQL server on (111),修改mysql配置:/etc/mysql/mysql.cnf.d/mysqld.cnf,注释bind地址或者改成0.0.0.0,重启mysql服务:service mysql restart
    如果遇到报错Can't connect to MySQL server on (110),需关闭防火墙,ubuntu16.04 开启/关闭防火墙:sudo ufw enable/sudo ufw disable
    5.Mycat的启动/访问
    linux系统中6个任意目录都可以执行的路径:bin sbin usr/bin usr/sbin usr/local/bin usr/local/sbin
    控制台启动:mycat/bin目录下执行 ./mycat console(推荐)
    后台启动: mycat/bin目录下执行 ./mycat start
    运维登录方式访问:mysql -uuser1 -p556600 -h 10.0.0.162 -P9066
    数据查询方式访问:mysql -uuser1 -p556600 -h 10.0.0.162 -P8066
    注:大p和小p都要写,并且mycat服务器本分要开启远程访问,否则localhost方式只能适合访问本地mysql而不能访问mycat配置的数据库

6.mysql 一主一从搭建
1.不同于redis的主从复制,redis从头复制,替换rdb文件,而mysql从主从复制的切入点开始复制
2.从机读主机的binary log后写入自身的relay log,多次io操作,数据有延迟

主机配置-修改配置文件:vim /etc/mysql/mysql.conf.d/mysqld.cnf(提前备份)
1.主机唯一id server-id=1
2.启动二进制日志 log-bin=mysql-bin
3.设置需要复制的数据库 binlog-do-db=需要复制的主数据的名字
4.设置不需要复制的数据库 binlog-ignore-db=mysql binlog-ignore-db=information_schema
5.设置logbin格式 binlog_format=STATEMENT(默认)

从机配置-修改配置文件:vim /etc/mysql/mysql.conf.d/mysqld.cnf(提前备份)
1.从机唯一id server-id=2
2.启用中继日志
relay-log=mysql-relay

重启mysql主机从机的服务
主机从机关闭防火墙

在主机上以-hlocalhost而非主机ip方式登录,建立账户并授权salve,授权命令 GRANT REPLICATION SALVE ON . TO 'slave'@'可以以这个用户名密码访问主机的ip(%表示任意ip)' IDENTIFIED BY '556600';

查看主机状态
show master status;

从机复制主机的命令 CHANGE MASTER TO MASTER_HOST = '主机ip'
,MASTER_USER='slave'
,MASTER_PASSWORD='556600'
,MASTER_LOG_FILE='mysql-bin.具体数字'---show master status信息
,MASTER_LOG_POS=722;---show master status信息
(如果报错ERROR3021,表示已经启动了从机复制,需要stop slave(停止主从复制关系),然后reset master(重新配置主从),再执行上面的语句)

启动从机复制功能 start slave

查看从机状态
show slave status\G;---Slave_IO_Running和Slave_SQL_Running都是Yes表示主从复制搭建成功
如果MySQL报错:master and slave have equal MySQL server UUIDs 或者A slave with the same server_uuid/server_id as this slave has connected to the master,主要是因为两台虚拟服务器是经过链路复制生成的,导致auto.cnf中的UUID一样,此时vi /var/lib/mysql/auto.cnf修改auto.cnf中的UUID即可,如cd时permission denied,sudo su,cd openfiledir
注:从机一旦复制报错,就停止复制操作,即便stop后再start slave,目前验证下来有效的方式是删除库,stop slave后reset slave,start slave就可以了(实际生产环境可操作性待商榷)

验证读写分离
基于之前mycat的配置,启动mycat,进入配置的数据库TESTDB(逻辑库),use TESTDB,select * from mytbl可以查到数据
验证查询的配置的主机的数据还是从机的数据,方式:
分别在各机器的mysqll设置set @hostname=主机名,在写主机中执行insert into mytbl(1,@@hostname);在mycat中看插入数据的主机名---(@@系统变量)
结果:显然一定是查询的主机,因为需要更改<dataHost>的balance属性,通过此属性配置读写分离的类型,
为了能看到读写分离的效果,把balance设置成2,会在两个主机间切换查询,实际应用场景中使用1或者3,配置负载均衡类型,目前的取值有4 种:
(1)balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
(2)balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
(3)balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
(4)balance="3",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力

7.mysql 双主双从搭建
基于前面的一主一从的环境,首先stop slave和reset master,删除已存在各个机器上的mycat库
注:提前确保都安装了ssh,命令sudo apt-get install openssh-server
参照一主一从设置权限配置,同上修改mysql配置和主机间访问权限,其次:
对于主机M1特殊配置增加:
log-slave-updates
auto-increment-increment = 2
auto-increment-increment = 1
对于主机M2特殊配置增加:
log-slave-updates
auto-increment-increment = 2
auto-increment-increment = 2

s1机器reset master to m1,s2机器reset master to m2,m1机器reset master to m2,m2机器reset master to m1,命令如change master to master_host = '192.168.0.11',master_user='slave',master_password='556600',master_log_file='mysql-bin.000001',master_log_pos=154;具体master_log_file和master_log_pos以主机show master status信息为准
各主机登录mysql,授权从机拷贝主机数据,命令grant replication slave on . to slave@从机IP identified by ‘556600’;
各从机start slave,查看slave状态

双主双重读写分离
修改schema.xml配置,其中
balance="1": 全部的readHost与stand by writeHost参与select语句的负载均衡
writeType="0": 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐

switchType="1": 1 默认值,自动切换,-1 表示不自动切换,2 基于 MySQL 主从同步的状态决定是否切换 mycat-schema-double-config.png

启动mycat

相关文章

  • Mycat知识精粹-ing

    mycat是什么---作用:java应用程序与数据库紧耦合-----解耦application和db高访问量高并发...

  • JVM知识精粹

    1.jvm执行字节码文件 流程:jvm通过类加载器加载字节码文件----字节码校验器---翻译字节码(解释执行,反...

  • ActiveMQ知识精粹

    0.JMS:java消息服务1.使用消息中间件的好处:解耦A和B系统,B系统可以异步运行,削锋B系统 2.acti...

  • myCat MyCat读写分离多主库配置切换

    起因:学完mysql,了解一下mycat,对数据相关知识进一步了解。 1. MyCat读写分离多主库配置切换 读写...

  • MyCat使用教程

    前言 接着上一篇文章:MyCat基础知识 本文以实际操作为主,理论性比较少,主要包含mycat安装,mysql主从...

  • MyCAT源码分析环境搭建

    1.mycat简介 1.1什么是Mycat? 简单的说,Mycat就是(官网:http://www.mycat.o...

  • 知识精粹之一

    李志欣校长来校访问时,说:教育就是过日子。闻言,忽觉教育如此可爱,又深入人心。这本书对于文化的解读,让我们感知文化...

  • mycat安装步骤

    一、下载mycat mycat的官网网址http://www.mycat.org.cn/,我使用的是mycat的1...

  • mycat安装步骤

    一、下载mycat mycat的官网网址http://www.mycat.org.cn/,我使用的是mycat的1...

  • MyCat基础知识

    前言 哈喽,大家好,最近换了工作,为了更快的熟悉新环境,大部分精力都在学习公司的项目业务以及技术,所以公众号更新就...

网友评论

      本文标题:Mycat知识精粹-ing

      本文链接:https://www.haomeiwen.com/subject/vgsknktx.html