doker+mycat
目录
配置集成
不废话上链接 快速集成 ,找了几百个博客才解决的问题,统一在这整理好!!!!!
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 这里
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&serverTimezone=UTC&allowPublicKeyRetrieval=TRUE" user="root" password="1234"> <!-- 读写分离时使用--> <readHost host="hostS2" url="jdbc:mysql://127.0.0.1:3307?useSSL=false&serverTimezone=UTC&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 三者结合,从应用层方面来解决主从延时,进行切换操作