Mycat+docker实现mMySQL读写分离!8.0保姆教程

doker+mycat

目录

doker+mycat 配置集成

1.配置doker

2.安装mycat

3.测试


配置集成

不废话上链接 快速集成 ,找了几百个博客才解决的问题,统一在这整理好!!!!!

1.配置doker

1.1配置 yum加速镜像

 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

1.2 安装docker仓库

yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

1.3安装docker

yum install docker-ce docker-ce-cli containerd.io

1.4启动doker

systemctl start docker

配置加速镜像 vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
​
}

1.6拉取镜像

docker pull mysql

1.7 启动镜像

docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart unless-stopped \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

docker run 创建一个新的容器 , 同时运行这个容器 –name mysql 启动容器的名字 -d 后台运行 -p 3306:3306 将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口 –restart unless-stopped 容器重启策略 -v /mydata/mysql/log:/var/log/mysql 将日志文件夹挂载到主机 -v /mydata/mysql/data:/var/lib/mysql 将mysql储存文件夹挂载到主机 -v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机 -e MYSQL_ROOT_PASSWORD=root 设置 root 用户的密码 mysql:5.7 启动哪个版本的 mysql (本地镜像的版本) \ shell 命令换行符

我 docker启动2个mysql 测试用 快速启动

docker run -p 3306:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=1234 -d mysql

docker run -p 3307:3306 --name mysql8.1 -e MYSQL_ROOT_PASSWORD=1234 -d mysql

1.8 拉取下载jdk

拉取jdk 的时候 拉取不下来 jdk 配置liun系统的代理

vi /etc/resolv.conf DNS服务器地址

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114

拉取jdk

docker pull openjdk:8   

2.安装mycat

Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

2.1解压到 local /uer目录 tar -xvf CMycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

2.2 8.0数据库更换jar包

mv lib 这里

mysql-connector-j-8.0.33.jar

rm-rf 删除老的数据库

2.2开放端口 9066端口是管理端口, 8066是数据端口

firewall-cmd --zone=public --add-port=8066/tcp --permanent
firewall-cmd --reload

2.3打开mycat 的conf 目录 找到 vim /usr/local/mycat/conf/server.xml

server文件是配置mycat 系统配置

name :登入名

passwrod :登入密码

schemas:逻辑库

<user name="mycat">
 <property name="password">123456</property>
 <property name="schemas">schema1</property>
</user>

8.0 数据库添加

MySQL 4.0 协议版本进行握手

将使用阿里的 Druid SQL 解析器

<property name="useHandshakeV10">1</property>
<property name="defaultSqlParser">druidparser</property>

2.4 打开 vim /usr/local/mycat/conf/schema.xml

schema.xml 配置(逻辑数据库设置,逻辑表设置)

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="schema1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
          <!-- 配置当操作某张表时,访问指定的数据节点<table name="TB_TEST" dataNode="dn2"/>-->
        </schema>
        <!--指定cs库和cs2库-->
          <!-- 数据节点1,用于存储除了TB_TEST数据表以外的其他表的数据 -->
        <dataNode name="dn1" dataHost="mysql21"="cs"/>
        <!-- 数据节点2,仅用于存储TB_TEST数据表的数据 -->
         <dataNode name="dn2" dataHost="mysql21" database="cs2"/>
         <!--balance="3" 读写分离 -->
        <dataHost name="mysql21" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
                <!-- MyCat向Mysql服务器发送心跳检测的语句 -->
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="jdbc:mysql://127.0.0.1:3306?useSSL=false&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=TRUE" user="root"  password="1234">
                <!-- 读写分离时使用-->
                         <readHost host="hostS2" url="jdbc:mysql://127.0.0.1:3307?useSSL=false&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=TRUE" user="root" password="1234" />
                </writeHost>
        </dataHost>
</mycat:schema>

checkSQLschema="true" 为true select * from TESTDB.company 。 mycat会把语句修改为 select * from company 去掉TESTDB。

sqlMaxLimit mycat 查询限制条数 基本不要写 根据自己的sql来

dataNode 指向数据节点

database 数据库真实的库名

dataHost 每一个集群节点

balance 负载均衡类型

    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":所有读请求随机的分发到writeHst对应的readHost执行,writeHost不负担读写压力。(1.4之后版本有)

writeType 负载均衡类型(一般指定0即可)

writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties .

dbType 指定后端连接的数据库类型

dbDriver 指定连接后端数据库使用的driver 目前可选的值有 native 和 JDBC 。

switchType 主从切换策略

  2 基于 MySql 主从同步(是否延时)的状态决定是否切换,心跳语句为 show slave status
   备注:switchType=2、slaveThreshold="100"(设置延时时间)、心跳语句 show slave status 三者结合,从应用层方面来解决主从延时,进行切换操作

3.测试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值