热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mycat(1)——Linux环境部署MyCAT数据库

使用Vmware11.创建虚拟机vm机器的操作系统是CentOS6.5vm的具体参数如下:注意修改虚拟机的时间:timezone创建VM后先安装jdk1

使用 Vmware 11. 创建虚拟机

vm 机器的操作系统是CentOS 6.5

vm的具体参数如下:

注意修改虚拟机的时间:time zone

创建VM后先安装jdk 1.8

wget --no-check-certificate --no-COOKIE --header "COOKIE: oraclelicense=accept-securebackup-COOKIE;" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm

 

之后 安装

rpm -ivh jdk-8u45-linux-x64.rpm

安装完毕后 java -version 检验安装

 

之后再这个虚拟机上安装mysql.(参考mysql on centOS, mysql 主从配置)

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

之后下载 mycat server for linux.

mycat 放入 /urs/local/mycat 目录下

创建系统用户和组

 

groupadd mycat

adduser -r -g mycat mycat

chown -R mycat.mycat /usr/local/mycat  //修改mycat目录所属mycat用户

vi /etc/profile 加入:

MYCAT_HOME=/usr/local/mycat

执行source  /etc/profile命令,使环境变量生效

开放防火墙端口

添加需要监听的端口

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

保存设置

/etc/init.d/iptables save

查看状态

/etc/init.d/iptables status

配置环境变量:

cd /usr/local/mycat/

vim /usr/local/mycat/.bash_profile

输入:

export MYCAT_HOME=/usr/local/mycat

PATH=$PATH:$MYCAT_HOME/bin

之后 生效

source .bash_profile

验证配置:

启动mycat: /usr/local/mycat/bin/mycat start

查看mycat 是否正常开启 命令:

ps -ef |grep mycat

 

说明mycat 没有正常启动。

之后到

/usr/local/mycat/logs 下查看wrapper.log

vim /usr/local/mycat/logs/wrapper.log

看到:

之后看看配置文件中需要 配置的host name.

vim /usr/local/mycat/conf/schema.xml

需要修改hosts 文件

vim /etc/hosts

127.0.0.1 hostM1 hostS2

之后再次开启 /usr/local/mycat/bin/mycat start

 ps -ef |grep mycat  这次启动成功。

之后尝试连接 发现 密码不对 需要去 /usr/local/mycat/conf/server.xml

vim /usr/local/mycat/conf/server.xml

配置登录mycat mysql user password. (server.xml,schema.xml的配置会在后面进行详细的解释)

配置多个schema

修改 /usr/local/mycat/conf/server.xml

123456imove,manage,imanageuserimove,manage,imanagetrue

 

 修改 /usr/local/mycat/conf/schema.xml



imove" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">manage" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">imanage" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn3">writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">select user()password="123456">

另一种情况:三个数据库schema配置一个schema(利用切片规则  伪切片)

启动mycat

/usr/local/mycat/bin/mycat start

停止mycat

/usr/local/mycat/bin/mycat stop

修改 schema.xml 文件 mycat/conf/schema.xml

下面的配置中的 schema 节点。

 

验证schema配置成功:

mysql -uroot -p123456 -h127.0.0.1 -P8066 -Dimove

mysql -uroot -p123456 -h127.0.0.1 -P8066 -Dmanage

mysql -uroot -p123456 -h127.0.0.1 -P8066 -Dimanage

说明:

-u 用户名

-p 密码

-h IP地址

-P 端口号

-D 数据库实例schema

 

如果全局查询三个schema(不用指明-D):

mysql -uroot -p123456 -h127.0.0.1 -P8066

mysql> select * from manage.usersinfo

 

 

          mycat相关配置

1. scheme.xml配置文件

 

schema 等于在mycat里定义一个逻辑库

mycat可以有多个逻辑库。

schema标签的相关属性: 属性名

数量限制

dataNode

任意String

(0..1)

checkSQLschema

Boolean

(1)

sqlMaxLimit

Integer

(1)

 

dataNode: 

该属性用于绑定逻辑库到某个具体的database上,

checkSQLschema: 

如果设置为Yes,mycat 会对select * from TestDB.table1 自动改成 select * from table1 以(避免在mycat中查询数据库的时候需要ERROR 1146 (42S02):Table TestDB.table1 doesn’t exist)

sqlMaxLimit: 

对于没有limitselect语句会自动对sql语句添加limit

 

table 标签:

定义需要拆分的表的具体细节。

 

属性名

数量限制

name

String

(1)

dataNode

String

(1..*)

rule

String

(0..1)

ruleRequired

boolean

(0..1)

primaryKey

String

(1)

type

String

(0..1)

autoIncrement

boolean

(0..1)

subTables

String

(1)

needAddLimit

boolean

(0..1)

 

name: 

等于表名。

 

dataNode: 

这个表所属的dataNode

 

primaryKey: 

该逻辑表对于真实表的主键

 

type: 

定义了表的类型:有global和普通表两种类型

 

dataNode 标签

 

 

dataNode:

 标签就是一个独立的数据分片。

 

name: 

schema,table 标签中使用的dataNode相对应。

 

dataHost: 

这个dataNode对应数据库的host,

 

dataHost 标签

定义了具体的数据库实例、读写分离配置和心跳语句。

属性名

数量限制

name

String

(1)

maxCon

Integer

(1)

minCon

Integer

(1)

balance

Integer

(1)

writeType

Integer

(1)

dbType

String

(1)

dbDriver

String

(1)

 

name:

 datahost 的唯一标示,在其他标签中需要dataHost属性的时候便使用这个属性做引用。

maxCon: 

连接池的最大连接数。

minCon:

 连接池的最小连接数。用了初始化连接池

 

balance:

1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

2. balance="1",全部的readHoststand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。

3. balance="2",所有读操作都随机的在writeHostreadhost上分发。

4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。

 

writeType:

负载均衡类型,目前的取值有3种:

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

2. writeType="1",所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐。switchType属性

- -1 表示不自动切换

- 1 默认值,自动切换

- 2 基于MySQL主从同步的状态决定是否切换

 

dbType: 使用数据库的类型,支持二进制的mysql协议,还有其他JDBC连接的数据库。如:

mongodb, oracle, spark, sqlserver等。

 

dbDriver:

指定连接后端数据库使用的Driver,目前可选的值有nativeJDBC。使用native的话,因为这个值执行的是二进制的mysql协议,所以可以使用mysqlmaridb。其他类型的数据库则需要使用JDBC驱动来支持。

1.6版本开始支持postgresqlnative原始协议。

如果使用JDBC的话需要将符合JDBC 4标准的驱动JAR包放到MYCAT\lib目录下,并检查驱动JAR包中包括如下目录结构的文件:META-INF\services\java.sql.Driver。在这个文件内写上具体的Driver类名,例如:com.mysql.jdbc.Driver

 

switchType:

-1 表示不自动切换

1 默认值,自动切换

2 基于MySQL主从同步的状态决定是否切换

心跳语句为 show slave status

3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1)

心跳语句为 show status like wsrep%.

 

heartbeat标签

用于指明和后端数据库进行心跳检查的语句。例如:mysql select user(), oracle 使用select 1 from dual.

 

writeHost 标签、readHost标签

这两个标签都是用于配置mysql实例。每个标签都可以指定一个后端的数据库。

writeHost指定写实例、readHost指定读实例。

一个dataHost内可以有多个writeHostreadHost标签。

属性名

数量限制

host

String

(1)

url

String

(1)

password

String

(1)

user

String

(1)

weight

String

(0-1)

usingDecrypt

String

(0-1)

 

host:

用于标示不同实例。

 

url:

如果是nativedbDriver 可以配置为 address:port。用JDBC或者其他dbDriver,则需要特殊指定。如:jdbc:mysql://localhost:3306/

 

password:

实际数据库的登录密码。

 

user:

实际数据库的用户

 

weight:

权重 配置在readhost 中作为读节点的权重(1.4以后)

 

usingDecrypt:

是否对密码加密默认0 否 如需要开启配置1,同时使用加密程序对密码加密,加密命令为:

 

执行mycat jar 程序(1.4.1以后):

 java -cp Mycat-server-1.4.1-dev.jar org.opencloudb.util.DecryptUtil 1:host:user:password

Mycat-server-1.4.1-dev.jar mycat download 下载目录的jar

 1:host:user:password 1 db端加密标志,hostdataHost host 名称

 

2. server.xml 配置文件

这里面包含所有mycat 的配置信息。

user标签

这个标签用于定义登录mycat的用户和权限。

 

 

 

对于mysql版本5.1以后的版本,可以通过以下方式启动日志记录。能够记录下包括应用程序执行的sql语句。

MariaDB [(none)]> SET GLOBAL log_output = 'TABLE';

Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> SET GLOBAL general_log = 'ON';

Query OK, 0 rows affected (0.00 sec)

 

show databases;

 

use mysql

 select * from general_log  order by event_time desc limit 50;

 

关闭命令:  service iptables stop

        永久关闭防火墙:chkconfig iptables off

 

 

 

为了可以查看读写分离的效果去 mycat 修改log4jlogger level info改成 debug

 

 

备选方案:

Atlas: 下载地址:

https://github.com/Qihoo360/Atlas/releases 

 

sudo rpm -i Atlas-XX.el6.x86_64.rpm

修改配置文件:

/usr/local/mysql-proxy/conf/test.cnf

4. 配置例子

[mysql-proxy]

 

#必须 ,管理端口使用的用户名

admin-username = user

#必须 ,管理端口使用的密码

admin-password = pwd

#必须 ,主数据库的地址:

proxy-backend-addresses = 192.168.0.12:3306

 

# 非必须 ,从数据库的地址:

# The number behind '@'represents the weight used by load balance for reading,

# the default weight is 1. If you want the master backend also can process the read requests,

# add its ip:port to this configuration option.

proxy-read-only-backend-addresses = 192.168.0.13:3306@2

 

# (必须) 设置用了登录主、从数据库的用户名和密码

# 密码不是明文 需要使用 /usr/loca/mysql-proxy/bin/encrypt. 进行加密。

# For example, the username is: myuser, and the password is:mypwd (encrypted ciphertext is:HJBoxfRsjeI=).

pwds = myuser:HJBoxfRsjeI=,myuser2:RePBqJ+5gI4=

 

# (必须) 如果是true , atlas 就用daemon模式启动.

daemon = true

 

# (必须) Atlas will start two processes when the value set true,

# one is monitor process, another is the work process. The monitor process will restart the work process

# automatically when the work process crash unexpectedly.

# If the value set false, Atlas will only start the work process.

keepalive = true

 

# (必须,按照实际情况进行配置) The count of work threads in work process.

# set the value equal to twice of cpu cores

event-threads = 4

 

# (必须, 使用默认值就可以) Log level: message, warning, critical, error, debug

log-level = message

 

# (必须, 使用默认值就可以) Log file path

log-path = /usr/local/mysql-proxy/log

 

# (必须) sql 日志的配置.

#     ON          : log the sql to the log file with buffer.

#     OFF         : not log the sql.

#     REALTIME    : log the sql to the log file without buffer.

sql-log = REALTIME

 

# (必须, 按照实际情况进行配置) 日志里慢速sql的设置.

# 当设置了这个参数的时候日志里只显示运行时间超过设置的sql.

# 否则会显示所有sql

#sql-log-slow = 10

 

# (必须, 按照实际情况进行配置) 关闭和客户端的连接,

# 在设置的时间“wait-timeout”之后

wait-timeout =  10

 

# (必须, 使用默认值就可以) Atlas的端口

proxy-address = 0.0.0.0:1234

 

# (必须, 使用默认值就可以) Atlas 管理端口

admin-address = 0.0.0.0:2345

 

# (非必须, 按照实际情况进行配置) Shard table setting.

# In this case, person is the database name, mt is the table name, id is the shard key,

# the shard table count is 3,and you should create table mt_0, mt_1, mt_2 in mysql manually.

# If you have more shard table,you can set them and separated by commas.

#tables = person.mt.id.3

 

# (非必须,按照实际情况进行配置)字符集,

# 如果不设置 字符集为:latin1.

charset = utf8

 

# (非必须) 允许连接Atlas 的客户端地址

# 如果没有就默认允许所有的IP访问

#client-ips = 127.0.0.1, 192.168.1

 

# (非必须,不要设置这个参数) 如果你使用了client-ips 设置,

#并且客户端是通过LVS 连接Atlas,

#那你才需要设置lvs-ips, LVS的真实IP放在这里.

#lvs-ips = 192.168.1.1

Tips:

 

修改完配置文件后,运行下面的命令开启 atlas:

/usr/local/mysql-proxy/bin/mysql-proxyd test start

使用下面的命令登录atlas, 然后可以像使用MySQL那样进行 sql 查询

mysql -h127.0.0.1 -umyuser -pmypwd -P1234;

使用下面的命令登录atlas管理

mysql -h127.0.0.1 -uuser -ppwd -P2345;

管理接口支持的命令可以通过下面的sql 查询

select * from help;

 

转:https://www.cnblogs.com/xushuyi/articles/6623557.html



推荐阅读
  • Mybatis拦截器实现数据权限的示例代码
    在我们日常开发过程中,通常会涉及到数据权限问题,本文主要介绍了Mybatis拦截器实现数据权限的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
  • kettle 8.3 连接mysql8.0.30 的入坑体验
      写这个东西主要是想吐槽为主,真的无语了。  kettle是java写的java版权是oracle的。mysql是Oracle的。   吐槽:  一般来说,在kettle中新建m ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
author-avatar
此情为谁伤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有