使用Docker 安装mysql8(centos7) 使用mycat(win)

docker安装包

https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz

1. 安装docker

1.下载docker-20.10.7.tgz二进制文件

2.下载完成后将文件放进任意文件夹中

3.解压docker-20.10.7.tgz

tar -zxvf docker-20.10.7.tgz

4.将docker文件移到可执行文件目录下 例如:

mv docker/* /usr/bin

5.配置docker.service

vim docker.service

如下

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

6.启动docker服务

systemctl daemon-reload

systemctl start docker.service

docker info

设置开启docker

systemctl enable docke

2. 安装mysql

1.下载mysql镜像(可以在有网的环境下拉取自己需要的版本,这里使用的是mysql8)

https://pan.baidu.com/s/1O0jaD57ZM3BccBquhP3k0g
提取码:shx7

2.进入mysql安装包目录

3.加载mysql镜像

docker load -i mysql.tar

4.查看镜像

docker images

5.启动mysql镜像,创建一个mysql容器

docker run -d --name mysql -p 3306 :3306 -e MYSQL_ROOT_PASSWORD=123456 9e64d176cd8a2

-d: 表示在让容器后台运行
–name: 给容器起一个名字
-p 3306:3306: 把宿主机的3306端口(port)映射到Mysql容器的3306端口
-e MySQL: 容器的环境配置
MYSQL_ROOT_PASSWORD=123456 指定mysql根用户的密码,用户名默认为root,注意如果没有指定密码,会启动失败。

6.进入容器bash交互界面

docker exec -it mysql bash

3. 安装mycat(win)

1.下载mycat

https://pan.baidu.com/s/1eb-JYOfvVzRPn9j4jkpdzw
提取码:soh0

2.修改conf下的配置文件

(1)wrapper.conf

在这里插入图片描述

(2)schema.xml

在这里插入图片描述

schema标签

 <schema name="forum" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
1). name

指定逻辑库的库名 , 可以自己定义任何字符串 ;

2). checkSQLschema

取值为 true / false ;

如果设置为true时 , 如果我们执行的语句为 “select * from ITCAST.TB_TEST;” , 则MyCat会自动把schema字符去掉, 把SQL语句修改为 “select * from TB_TEST;” 可以避免SQL发送到后端数据库执行时, 报table不存在的异常 。

不过当我们在编写SQL语句时, 指定了一个不存在schema, MyCat是不会帮我们自动去除的 ,这个时候数据库就会报错, 所以在编写SQL语句时,最好不要加逻辑库的库名, 直接查询表即可。

3). sqlMaxLimit

当该属性设置为某个数值时,每次执行的SQL语句如果没有加上limit语句, MyCat也会自动在limit语句后面加上对应的数值 。也就是说, 如果设置了该值为100,则执行 select * from TB_TEST 与 select * from TB_TEST limit 100 是相同的效果 。

dataNode 标签

 <dataNode name="dn1" dataHost="host1" database="forum" />
1). name

数据节点的名称:需要唯一 ; 在table标签中会引用这个名字, 标识表与分片的对应关系

2). dataHost

数据库实例主机名称:引用自 dataHost 标签中name属性

3). database

定义分片所属的数据库。

dataHost 标签

<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="jdbc:mysql://localhost:3306" user="root"
                                   password="ok">
                        <readHost host="hostS1" url="jdbc:mysql://localhost:3306" user="root" password="ok"></readHost>
						<readHost host="hostS2" url="jdbc:mysql://localhost:3306" user="root" password="ok"></readHost>
                </writeHost>
        </dataHost>
1). name

数据节点名称: 唯一标识, 供上层标签使用

2). maxCon

最大连接数: 内部的writeHost、readHost都会使用这个属性

3). minCon

最小连接数: 内部的writeHost、readHost初始化连接池的大小

4). balance

负载均衡类型: 取值0,1,2,3 ;

· 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":所有的读请求都随机分发到writeHost对应的readHost上执行,writeHost不负担读压力,注意balance=3只在Mycat 1.4及之后的版本中有,在Mycat 1.3中没有。

5). writeType

写操作分发方式: 写操作都转发到第1台writeHost, writeHost1挂了, 会切换到writeHost2上;
1 : 所有的写操作都随机地发送到配置的writeHost上 ; ;

6). dbType

后端数据库类型:mysql, mongodb , oracle

7). dbDriver

数据库驱动:指定连接后端数据库的驱动,目前可选值有 native和JDBC。native执行的是二进制的MySQL协议,可以使用MySQL和MariaDB。其他类型数据库需要使用JDBC(需要在MyCat/lib目录下加入驱动jar)

8). switchType

数据库切换策略:取值 -1,1,2,3;

·-1表示不自动切换。

· 1为默认值,表示自动切换。

· 2表示基于MySQL主从同步的状态决定是否切换,心跳语句如下:

· 3表示基于MySQL Galary Cluster的切换机制(适合集群,Mycat 1.4.1及以上版本支持),心跳语句如下:

子标签 heartbeat

配置MyCat与后端数据库的心跳,用于检测后端数据库的状态。heartbeat用于配置心跳检查语句。例如 : MySQL中可以使用 select user(), Oracle中可以使用 select 1 from dual等。

子标签writeHost、readHost

指定后端数据库的相关配置, 用于实例化后端连接池。 writeHost指定写实例, readHost指定读实例。

1). host

实例主机标识:对于writeHost一般使用 *M1;对于readHost,一般使用 *S1;

2). url

后端数据库连接地址: 如果是native,一般为 ip:port ; 如果是JDBC, 一般为jdbc:mysql://ip:port/

3). user

数据库用户名

4). password

数据库密码

5). weight

权重 : 在readHost中作为读节点权重

6). usingDecrypt

密码加密:默认 0 否 , 1 是

(2)server.xml

在这里插入图片描述

<property name="schemas">forum</property>

与schema.xml的 schema name=“forum” 一致

3.启动mycat

端口为8006
在这里插入图片描述

4.通过命令行管理Mycat

管理端口默认为9006

mysql -hlocalhost -uroot -P9066 -pok
在这里插入图片描述

Reload 命令

reload @@config

该命令用于更新 schema.xml 配置文件,例如更新 schema.xml 文件后在命令窗口输入该命令,不用重启即可进行配置文件的更新,示例如下:

reload @@config_all

该命令用于更新所有配置文件,不用重启即可进行配置文件的更新,示例如下:

show @@database

该命令用于查询显示 Mycat 的数据库列表(逻辑库),示例如下:

show @@datanode

该命令用于查询显示 Mycat 数据节点列表,还可以通过 show @@datanode where schema = ? 的方式查询指定逻辑库(区分大小写)的数据节点,示例如下:

name:表示数据节点的名称

datahost:表示对应的数据主机

active:表示活动连接

idle:表示空闲连接

size:表示最大连接数量

show @@heartbeat
该命令用于报告心跳状态,示例如下:

name:数据主机名称

type:表示数据库类型

host:表示主机地址

rs_code:表示心跳状态

0:INIT_STATUS 表示初始化状态
1:OK_STATUS 表示正常状态
-1:ERROR_STATUS 表示连接出错
-2:TIMEOUT_STATUS 表示连接超时
若节点发生故障,会连续进行默认5个周期的检测,心跳连续失败后会变成 -1 ,节点故障确认,然后可能发生切换

show @@connection

该命令用于获取 Mycat 前端的连接状态,示例如下:

如果需要关闭连接,可以使用 kill @@connection id,id,id,… ,示例如下:

show @@backend

查询后端连接(Mycat 连接实际数据库)状态,示例如下:

show @@cache

用于查看 Mycat 缓存使用情况,示例如下:

SQLRouteCache:SQL语句路由缓存

TableID2DataNodeCache.TESTDB_ORDERS:缓存表主键与分片的对应关系

ER_SQL2PARENTID:缓存ER分片中子表与父表的关系

show @@datasource

查看数据源的状态,如果配置了主从或者多主,则可以切换,示例如下:

如果需要切换数据源,可以使用 switch @@datasource name:index 来切换,示例如下:

name:是 schema 配置文件中,配置的 dataNode 中的 name值

index:是 schema 配置文件中,配置的 dataNode 的 dataHost 的 writeHost 的索引,按照从上往下的配置顺序,索引从 0 开始

show @@sql

查看在 Mycat 中执行过的SQL语句,需要确认 server.xml 配置文件中的 1 ,示例如下:

show @@sql.slow

查看在 Mycat 中执行的比较慢的 SQL 语句,使用 reload @@sqlslow=? 来设置慢的阈值,如果需要在查询后,移除本次结果不在下次查询显示,可以在命令后 增加标识,show @@sql.slow true,示例如下:

设置执行SQL语句慢的阈值,示例如下:

show @@sql.sum

显示SQL语句的整体执行情况、读写比例等,示例如下:

原文地址:https://www.cnblogs.com/li3807/p/8461883.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值