天翼云RDS试用系列之二----使用天翼云RDS需注意的主要事项

    如果你从天翼云申请了RDS服务,进入天翼云RDS后一般会创建一些新的数据库账号,将账号给开发测试人员使用,最高权限账号只有数据库管理员DBA使用,然后你还会对数据库的时区做调整,默认天翼云的数据库时区在0区,与中国相隔8个时区,最后你会根据自己对mysql数据库的理解程度结合业务实际情况对数据库的一些高级参数进行调整,大概就是这些吧,下面我将就以上这些操作从创建用户包括权限分配、RDS参数调优、RDS自动备份与数据恢复及RDS的读写分离四个方面写一下我的做法和理解:

一、新创建用户

个人理解:在经典模式下,所有账号均通过天翼云的RDS控制台或者API创建,不能通过SQL创建,且账号之间是平等关系。天翼云创建的第一个账号root为初始账号,需通过RDS控制台或API创建和管理。

初始账号创建成功后,用初始账号登录数据库,通过SQL命令来创建和管理其它普通账号。但您不能使用初始账号去修改其它普通账号的密码,如果需要修改普通账号的密码,只能删除后重新创建。

实验步骤:

使用mysql客户端用root账号登陆rds,创建测试用户xftest,创建成功后使用xftest登陆数据库,观察该用户可以看到哪些数据库,然后通过授权语句对xftest授权其操作前面创建的testdb数据库后再观察该用户可以看到哪些数据库;

1、使用root账号用mysql客户端登陆rds数据库

mysql -u xftest -h 192.168.1.116 --port 8635 -p

mysql -u root -h 192.168.1.116 --port 8635 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 873917
Server version: 5.6.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testdb             |
+--------------------+
4 rows in set (0.01 sec)

2、创建测试用户xftest

天翼云为了数据安全,强制对RDS新建用户的密码规定了高强度密码策略,比如长度不能小于8位,必须是字母、数字与特殊符合的组合,数据库的登录名称默认为root,所设置的密码,长度为8到32位之间,必须包含大写字母、小写字母、数字、特殊字符:~!@#%^*-_=+?

下面展示的是出错场景,如果采用不符合密码规则的弱密码是无法创建新用户的。

create user 'xftest'@'%' identified by 'wu6Oop5B;';

3、新建一个mysql客户端使用xftest账号登陆后观察可以查看的数据库

如上图所示,只能看到一个数据库information_schema,不能查看到实际的业务数据库testdb

4、通过root账号登陆的mysql终端上执行授权命令给账号xftest授权方法指定数据库testdb

由于root账号并不是系统最高权限用户,前面一篇文章也说过,这个root用户是被限制权限的root,其权限要严格符合其账号的权限。

 

grant select,insert,update,delete on testdb.* to 'xftest'@'%' identified by 'wu6Oop5B;';

记住权限授权完成后需要及时执行flush命令刷新权限。

5、再用xftest登陆的账号查看数据库中情况

mysql -u xftest -h 192.168.1.116 --port 8635 -p

我们发现执行授权完成后,xftest用户就可以看到testdb数据库了,下面我们继续查看是否可以操作testdb中的表格。

6、测试新用户xftest的其它权限

 发现xftest用户无法在数据库中创建新的表格,前面的授权不完整,只允许用户对数据库中已有表格进行增删改查,对数据库索引、创建或删除新的表格等权限都有赋予,但是由于天翼云RDS中的root账号不是真正意义上的root,没有root权限所以授权时要将新用户所需的具体权限都选上。

 grant create,alter,drop,index,references on testdb.* to 'xftest'@'%' identified by 'wu6Oop5B;';

 7、一般情况下相对完整的授权语句总结:

grant select,insert,update,delete,create,alter,drop,index,references on testdb.* to 'xftest'@'%' identified by 'wu6Oop5B;';

select Select_priv 表 
insert Insert_priv 表 
update Update_priv 表 
delete Delete_priv 表 
index Index_priv 表 
alter Alter_priv 表 
create Create_priv 数据库、表或索引 
drop Drop_priv 数据库或表 
grant Grant_priv 数据库或表 
references References_priv 数据库或表 
reload Reload_priv 服务器管理 
shutdown Shutdown_priv 服务器管理 
process Process_priv 服务器管理 
file File_priv 在服务器上的文件存取

二、修改数据库参数组

1、RDS的参数组管理功能中新建一个参数组

2、在新建参数组中修改指定参数 

比如修改参数与时区有关,注意观察参数名称后是否需要重启选项,如果是否,表示只要在第三步中应用了该选项组即可生效,如果需要重启,则意外修改完成后,必须要重启RDS实例,否则修改后的参数不会生效。天翼云RDS默认的时区是SYSTEM,这一点很坑人,天翼云应该绝大部分人在中国国内使用,却用了一个外国的时区,所以在国内使用RDS的用户必须要修改时区。

3、应用修改到RDS中 

通过返回实例管理的变更参数组选项,然后将参数组更改为新的参数组,点击确定确认修改。

 

确认后,大概需要30秒时间在屏幕的右上角会有更改参数组是否成功的提示窗口显示。

4、验证时区更改是否成功

当前时间是12月24日的13:09分

使用mysql客户端登陆RDS数据库,然后执行select now(); 查看当前RDS数据库的时间,效果如下图:

5、使用RDS与以往在单机上设置mysql数据库存在的区别

a、mysql最大连接数,mysql默认为151,在天翼云中这个参数设置为default,与用户申请的rds硬件性能相关,不建议手工修改。

查看最大连接数命令

show variables like '%max_connections%';

在1核4G内存的硬件情况下,最大连接数是312。

b、mysql客户端与服务端的连接最长闲置时间wait_timeout

天翼云默认设置为28800秒,默认8小时时间 ,该参数用于mysql客户端与服务端的连接最长闲置时间,到达后将会被强行关闭。MySQL默认的wait_timeout为8个小时。天翼云这个参数与mysql官方默认值一致。

  1. MySQL服务器所支持的最大连接数是有上限的,因为每个连接的建立都会消耗内存,因此我们希望客户端在连接到MySQL Server处理完相应的操作后,  
  2. # 应该断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,  
  3. # 最终肯定会达到MySQL Server的连接上限数,这会报'too many connections'的错误。对于wait_timeout的值设定,应该根据系统的运行情况来判断。  
  4. # 在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,  
  5. # 可以进行适当的调整小些。要同时设置interactive_timeout和wait_timeout才会生效。

c、每个数据库用户的最大连接max_user_connection

天翼云默认设置为0,标识不限制数据库用户的最大连接数,除非你觉得需要限制,否则没有必要修改这个参数。

d、天翼云字符集默认是utf8,已经解决了原装mysql数据库字符集会产生乱码的问题

mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

三、RDS数据库实例自动备份与恢复

在RDS备份管理中,可以看到天翼云RDS默认开启了备份,时间是凌晨4:20分,对RDS进行完整备份,备份每天做一次,备份策略可以自定义修改。天翼云RDS通过这些每天创建的数据库备份文件可以将数据库的状态恢复到每天的4:20分,天翼云的数据库备份可以直接通过恢复成一个新实例来创建一个新的RDS数据库。

选择备份管理中的一份备份 数据,选择恢复,恢复到新实例,就相当于你创建一个新的RDS加将这些数据导入到新实例中,这个新的实例起来就带有业务数据。

 

当选择恢复为当前实例,天翼云RDS采用的是覆盖式方式,不会对比备份数据与现在数据库数据的差值,采用将RDS实例down掉再导入的方式进行灌数据,当前运行数据会全部丢失。整个恢复过程根据数据的大小,至少10分钟,也就是说恢复数据操作会导致数据库中断10分钟。 并且在数据库恢复完成后,会自动在当前位置再创建一个新的备份。

修改天翼云默认的数据库备份策略

进入实力管理,选择备份恢复菜单,然后选择修改备份策略选项。

从修改备份策略选项中选择需要变更的项目,比如备份数据保留天数,默认7天,可选择0-35天内的任意时间,备份时间段默认4:00-5:00,如果你的业务系统该时间段比较忙,可以根据业务系统实际情况灵活定制自己的备份时间策略。

四、关于天翼云RDS的读写分离

支持读写分离,一个RDS集群中最多可创建5个只读副本。目前不支持Proxy代理,需要在应用侧配置判断和分配读写请求,自行寻址。这一点阿里做得好些,只读库通过proxy在用户应用上无需自行判断分配,不需要修改程序适应,电信的天翼云必须要用户自己开发实现。

创建非常简单,在实例管理中点击创建只读即可完成创建,创建过程根据数据库已有数据的大小决定,相当于是新建了一个只读的RDS实例,然后再把当前实例中的数据全部load进这个只读实例中,所以如果你的数据库中数据比较多,创建时间就会很长,空库创建一般20分钟左右。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值