本文介绍如何通过ECS实例内网连接验证RDS MySQL高可用实例的读写分离。
已创建RDS MySQL高可用系列主实例。 已为主实例创建MySQL只读实例。 已为实例创建至少1个数据库(含至少1个表)和1个测试账号(普通账号或高权限账号均可),操作方法请参见创建数据库和账号。 说明 如果您创建的测试账号为普通账号,还需赋予其待操作数据库的读写(DDL+DML)权限。 在本例中创建的数据库为testdb01,表为products,测试账号为cxx1。 已为实例设置IP白名单。 连接RDS MySQL实例的ECS实例与RDS MySQL实例在同一个VPC下,并且已经安装了MySQL客户端。 已开通数据库代理。 已开通SQL洞察和审计。 数据库代理的读写分离功能将写请求转发到主实例,读请求转发到只读实例,实现读写请求的自动分流,减轻主实例的压力。开通并配置了数据库代理服务后,可通过本文操作验证读写请求是否按照配置的比例进行分流,实现读写分离。 本例以ECS实例通过内网连接RDS MySQL实例为例,验证读写分离功能。主要步骤如下: 在RDS控制台设置只读实例权重为100的整数倍,主实例权重为0(例如10000:0),确保所有读请求均分配至只读实例。 通过ECS使用测试账号连接数据库代理地址,分别执行读操作和写操作。 在RDS控制台的SQL洞察和审计功能中,查看只读实例和主实例的SQL命令执行记录。 根据SQL执行记录,判断读请求是否由只读实例处理、写请求是否由主实例处理,从而验证读写分离是否生效。 设置读写分离权重。 将读写属性设置为读写(读写分离)。 读权重分配选择自定义,将只读实例的权重设为10000,主实例的权重设为0,完成后单击确定。 访问RDS实例列表,在上方选择地域,然后单击主实例ID。 在左侧导航栏,单击数据库代理,然后在连接信息区域,找到目标代理连接地址ID(原代理终端ID)。 单击目标代理连接地址操作列的修改配置。 在弹出的对话框中,完成以下配置: 在连接信息区域,获取目标代理连接地址ID关联的内网(专有网络)的代理连接地址。 通过ECS服务器使用账号cxx1连接数据库并执行读操作。 登录到待连接RDS MySQL实例的ECS服务器。 说明 登录ECS的操作,请参见连接ECS实例。 执行如下命令,连接RDS MySQL实例。 命令中的参数说明如下表所示。 名称 含义 说明 代理连接地址 步骤1中获取的实例的类型为内网(专有网络)的代理连接地址。 如果使用本地客户端连接RDS MySQL实例,则需要使用类型为外网的代理连接地址。 大写字母P 之后填写端口 不涉及。 -u 之后填写用户名 不涉及。 小写字母p 之后填写密码 输入密码时,需要在 您也可以不在 执行如下命令,进入数据库testdb01。 执行6次读操作命令,例如执行如下命令: 执行写操作。在数据库testdb01中执行3次写操作命令,例如执行如下命令: 说明 在上一步中已通过ECS服务器连接RDS MySQL实例并进入数据库testdb01(详细步骤请参见步骤2)。 查看主实例和只读实例的SQL请求处理记录。 确认SELECT命令请求均由只读实例处理。确认CREATE命令请求均由主实例处理,在只读实例中未查询到CREATE命令请求记录。 访问RDS实例列表,在上方选择地域,然后单击主实例ID。 在主实例左侧导航栏,选择,选择时间范围,单击查询,未查询到SELECT命令执行记录。 在主实例左侧导航栏,单击基本信息,将鼠标悬停于只读实例的右侧的数字处,在弹出的对话框中,单击只读实例ID。 在只读实例左侧导航栏,选择,选择时间范围,单击查询,可以看到6次SELECT命令的执行记录。在只读实例中查看 SQL 执行记录,可以看到 6 条 在主实例左侧导航栏,选择自治服务 > SQL洞察和审计,选择时间范围,单击查询,可以看到3次CREATE命令的执行记录。三条执行记录分别为 在权重设置为10000:0时,只有写请求由主实例处理,所有读请求均由只读实例处理,实现了读写分离。前提条件
背景信息
验证流程
操作步骤
mysql -h代理连接地址 -P端口 -u用户名 -p密码
-p后面直接输入,不允许有空格。-p后输入密码,在执行命令后再输入,以防止密码明文显示。USE testdb01;
SELECT * FROM products LIMIT 20;
CREATE TABLE Products11 (
prod_id CHAR(10) NOT NULL,
vend_id CHAR(10) NOT NULL,
prod_name CHAR(254) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(1000) NULL
);
SELECT * FROM products LIMIT 2 的执行记录,数据库为 testdb01,操作类型为 SELECT,状态均为成功。CREATE TABLE Products11、CREATE TABLE Products12 和 CREATE TABLE Products13,数据库为 testdb01,状态均为成功。验证结论