mycat是什么?

mycat是什么?,第1张

Mycat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。\r\n数据库系统(databasesystems),是由数据库及其管理软件组成的系统。主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库系统DBS(DataBaseSystem,简称DBS)通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高、资历较深的人员担任。\r\n

首先,准备开发工具套件,我们并不会引入过多工具包,仅仅需要:

java8

vert.x 3

如果你是用maven做为项目管理工具,请将vert.x 3引入:

1

2

3

4

5

<dependency>

<groupId>io.vertx</groupId>

<artifactId>vertx-core</artifactId>

<version>3.3.2</version>

</dependency>

代码实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

package

com.maxleap.mysqlproxy

import

io.vertx.core.AbstractVerticle

import

io.vertx.core.Vertx

import

io.vertx.core.logging.Logger

import

io.vertx.core.logging.LoggerFactory

import

io.vertx.core.net.NetClient

import

io.vertx.core.net.NetServer

import

io.vertx.core.net.NetSocket

/**

*

@author sneaky

*

@since 1.0.0

*/

public

class

MysqlProxyServer

{

private

static

final

Logger

logger

=

LoggerFactory.getLogger(MysqlProxyServer.class)

public

static

void

main(String[]

args)

{

Vertx.vertx().deployVerticle(new

MysqlProxyServerVerticle())

}

public

static

class

MysqlProxyServerVerticle

extends

AbstractVerticle

{

private

final

int

port

=

3306

private

final

String

mysqlHost

=

"10.10.0.6"

@Override

public

void

start()

throws

Exception

{

NetServer

netServer

=

vertx.createNetServer()//创建代理服务器

NetClient

netClient

=

vertx.createNetClient()//创建连接mysql客户端

netServer.connectHandler(socket

->

netClient.connect(port,

mysqlHost,

result

->

{

//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接

if

(result.succeeded())

{

//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法

new

MysqlProxyConnection(socket,

result.result()).proxy()

端口映射,在代理服务器上安装端口映射工具,例如PortMap。然后进行配置,把代理服务器的数据库端口映射到数据库服务器的数据库端口上。例如sqlserver是1433,oracle是1521.

这样你访问代理服务器的数据库端口就等于访问数据库服务器的对应端口了。

为了更加安全,你还可以在客户端上设置使用非默认的端口访问代理服务器,然后在代理服务器上把你指定的端口映射到数据库服务器的数据库端口。比如在代理服务器上把8000端口映射到服务器1433端口,然后在客户端上配置为使用8000端口来访问数据库。这样你就可以通过代理服务器的8000端口来连接sqlserver数据库了。

另外,也可以不用代理服务器,直接用路由器做端口映射。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/367929.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存