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