步骤六:连接DDM实例或逻辑库
用户申请DDM实例后,可以使用Navicat等客户端连接DDM实例,也可以使用CLI或JDBC驱动连接DDM实例中的目标逻辑库。
本章节指导用户如何连接DDM实例或逻辑库。
准备工作
连接DDM实例或逻辑库前,需要获取DDM实例或逻辑库的连接地址。
获取DDM实例连接地址
- 登录DDM管理控制台。
- 在左侧选择“数据库> 分布式数据库中间件”,进入实例管理页面。
- 单击左侧菜单栏的“实例管理”。在实例管理界面单击DDM实例名称。
- 在实例信息页的“网络信息”模块,找到“连接地址”。
连接DDM时,如果5次输入错误密码,系统将会自动锁定20分钟。
获取DDM逻辑库连接地址
- 登录DDM管理控制台。
- 在左侧选择“数据库> 分布式数据库中间件”,进入实例管理页面。
- 单击左侧菜单栏的“实例管理”,在实例管理界面单击DDM实例名称,进入实例基本信息页。
- 在左侧导航栏选择“逻辑库列表”。
- 单击逻辑库名称进入逻辑库基本信息页面。
- 在“连接地址栏”获取“命令行连接地址”和“jdbc连接地址”。
图1 逻辑库连接地址
连接DDM时,如果5次输入错误密码,系统将会自动锁定20分钟。
- 为保证系统安全,请使用与DDM实例处于同一VPC的弹性云服务器。
- 弹性云服务器已安装MySQL客户端或已配置MySQL连接驱动。
- 连接DDM实例前,需要先在工具中配置DDM实例信息。
Navicat客户端连接DDM实例
- 登录分布式数据库中间件服务,单击需要连接的DDM实例名称,进入实例基本信息页面。
- 在“实例信息”模块的弹性公网IP单击“绑定”。绑定已申请的公网IP。
- 在DDM管理控制台左侧选择虚拟私有云图标。单击“访问控制>安全组”
- 在安全组界面,单击操作列的“配置规则”,进入安全组详情界面。在安全组详情界面,单击“添加规则”,弹出添加规则窗口。根据界面提示配置安全组规则,设置完成后单击“确定”即可。
绑定弹性公网IP后,建议您在内网安全组中设置严格的出入规则,以加强数据库安全性。
- 打开Navicat客户端,单击“连接”。在新建连接窗口中填写主机IP地址(弹性公网IP地址)、用户名和密码(DDM账号、密码)。
Navicat客户端推荐使用版本为Navicat12。
- 单击“连接测试”,若显示连接成功,单击“确定”,等待1-2分钟即可连接成功。连接失败会直接弹出失败原因,请修改后重试。
通过其他可视化的MySQL工具(例如 Workbench)连接DDM实例的操作与此章基本一致,不做详细描述。
MySQL命令行连接DDM逻辑库
- 登录弹性云服务器,打开命令行工具,输入以下命令。
mysql -h ${DDM_SERVER_ADDRESS} -P${DDM_SERVER_PORT} -u${DDM_USER} -p [-D${DDM_DBNAME}] [--default-character-set=utf8][--default_auth=mysql_native_password]
表1 参数说明 参数示例
参数填写说明
参数举例
DDM_SERVER_ADDRESS
DDM实例所在IP地址。
192.168.0.200
DDM_SERVER_PORT
DDM实例连接端口。
5066
DDM_USER
DDM实例账号。
dbuser01
DDM_DBNAME
DDM实例逻辑库名,选填。
-
default-character-set=utf8
指定字符编码为UTF-8,选填。
当MySQL连接编码和实际编码不一致,导致DDM解析出现乱码时请配置该参数。
-
default_auth=mysql_native_password
默认使用密码认证插件。
-
假如您使用了 MySQL 8.0的客户端,需要增加 default_auth=mysql_native_password参数。
- 下面为Windows服务器命令行窗口中使用表中举例参数MySQL命令连接服务器的回显情况。
C:\Users\testDDM>mysql -h192.168.0.200 -P5066 -Ddb_5133 -udbuser01 -p Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ;or \g. Your MySQL connection id is 5 Server version: 5.6.29 Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
JDBC驱动连接DDM逻辑库
- 加载驱动程序。
Class.forname(com.mysql.jdbc.Driver);
建议JDBC驱动版本为5.1.35~5.1.45。
- 打开数据库连接。
String username = "dbuser01" ; String password = "xxxxxx" ; String url = "jdbc:mysql://192.168.0.200:5066/db_5133"; Connection con = DriverManager.getConnection(url , username , password);
- 创建Statement对象。
Statement stmt = con.createStatement();
- 执行SQL语句。
ResultSet rs = stmt.executeQuery("select now() as Systemtime"); con.close();
- (可选)优化代码。
loadBalanceAutoCommitStatementThreshold=5&loadBalanceHostRemovalGracePeriod=15000&loadBalanceBlacklistTimeout=60000&loadBalancePingTimeout=5000&retriesAllDown=10&connectTimeout=10000";
- loadBalanceAutoCommitStatementThreshold和retriesAllDown参数必须按照以上样例进行配置,否则在连接切换时可能进入死循环,导致栈溢出。
- loadBalanceAutoCommitStatementThreshold:表示执行多少个语句后重新选择连接。
- loadBalanceHostRemovalGracePeriod:设置宽限期,以等待主机从负载均衡连接中移除,当主机当前是活动主机时释放主机。
- loadBalanceBlacklistTimeout:通过控制服务器在全局黑名单中的生存时间,检查不可用服务器之间的时间间隔(以毫秒为单位)。
- loadBalancePingTimeout:使用负载平衡连接时,等待每个负载平衡物理连接ping响应的时间(以毫秒为单位)。
- retriesAllDown:当所有的连接地址都无法连接时,轮询重试的最大次数。重试次数达到阈值仍然无法获取有效连接,将会抛出SQLException
- connectTimeout:套接字连接的超时(毫秒),其中0表示没有超时。只能在JDK-1.4或更高版本上工作。默认为“0”。