• 沒有找到結果。

查看或下载审计日志_云数据库 RDS_用户指南_SQL Server用户指南_日志管理_华为云

N/A
N/A
Protected

Academic year: 2022

Share "查看或下载审计日志_云数据库 RDS_用户指南_SQL Server用户指南_日志管理_华为云"

Copied!
557
0
0

加載中.... (立即查看全文)

全文

(1)

用户指南

文档版本 62

发布日期 2022-01-28

(2)

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址: https://www.huawei.com

客户服务邮箱:[email protected] 客户服务电话:4008302118

(3)

目 录

1 MySQL 用户指南...1

1.1 连接实例...1

1.1.1 连接 MySQL 实例的方式... 1

1.1.2 通过 DAS 连接 MySQL 实例(推荐)... 2

1.1.3 通过 MySQL 命令行客户端连接实例... 2

1.1.3.1 使用 MySQL 命令行内网连接实例... 3

1.1.3.2 使用 MySQL 命令行公网连接实例... 5

1.1.3.3 安装 MySQL 客户端... 6

1.1.4 通过图形化界面连接 MySQL 实例...7

1.1.5 通过 JDBC 连接 MySQL 实例...10

1.2 使用规范建议...13

1.3 数据迁移... 14

1.3.1 迁移方案概览... 14

1.3.2 使用 DRS 迁移 MySQL 数据...15

1.3.3 使用 mysqldump 迁移 MySQL 数据...15

1.4 性能调优... 18

1.4.1 MySQL 参数调优建议... 18

1.4.2 RDS 支持的最大 IOPS 是多少...21

1.4.3 如何提高 RDS 数据库的查询速度...22

1.4.4 排查 RDS for MySQL CPU 使用率高的原因和解决方法... 22

1.4.5 MySQL 数据库内存使用率过高怎么处理... 25

1.4.6 RDS 实例磁盘满导致实例异常的解决方法... 26

1.4.7 RDS for MySQL 元数据锁 MDL 导致无法操作数据库的解决方法...26

1.4.8 MySQL 慢 SQL 问题定位... 28

1.5 权限管理... 30

1.5.1 创建用户并授权使用 RDS... 30

1.5.2 RDS 自定义策略... 31

1.6 实例生命周期...32

1.6.1 购买与原实例相同配置的数据库实例...32

1.6.2 停止实例... 33

1.6.3 开启实例... 34

1.6.4 重启实例... 35

1.6.5 自定义列表项... 37

(4)

1.6.6 导出实例... 38

1.6.7 删除按需实例... 38

1.6.8 回收站... 40

1.7 变更实例... 42

1.7.1 升级内核小版本...42

1.7.2 大版本升级... 44

1.7.3 修改实例名称... 45

1.7.4 修改实例备注... 45

1.7.5 修改数据同步方式... 46

1.7.6 切换主备实例的可用性策略... 47

1.7.7 变更实例的 CPU 和内存规格... 48

1.7.8 磁盘扩容... 50

1.7.9 存储空间自动扩容... 52

1.7.10 设置可维护时间段... 54

1.7.11 单机转主备实例... 55

1.7.12 只读转单机实例... 56

1.7.13 手动切换主备实例... 57

1.7.14 迁移可用区... 58

1.8 只读实例... 58

1.8.1 只读实例简介... 59

1.8.2 高可用只读简介...60

1.8.3 创建单个只读实例... 60

1.8.4 批量创建只读实例... 63

1.8.5 管理只读实例... 64

1.9 灾备管理... 65

1.9.1 使用 DRS 创建灾备实例... 65

1.10 备份与恢复... 66

1.10.1 备份概述... 66

1.10.2 恢复方案概览...67

1.10.3 设置自动备份策略... 67

1.10.4 设置跨区域备份策略...69

1.10.5 创建手动备份...72

1.10.6 查看并导出备份信息...74

1.10.7 下载全量备份文件... 75

1.10.8 下载 Binlog 备份文件... 78

1.10.9 设置 MySQL 本地 Binlog 日志清理... 81

1.10.10 下载 mysqlbinlog 工具... 82

1.10.11 通过备份文件恢复云数据库(MySQL)实例数据... 83

1.10.12 通过备份文件恢复到自建数据库(MySQL)...86

1.10.13 将数据库实例恢复到指定时间点...88

1.10.14 将库表数据恢复到指定时间点... 91

1.10.15 复制备份... 93

(5)

1.10.16 删除手动备份... 94

1.11 参数模板管理... 95

1.11.1 创建参数模板...95

1.11.2 修改实例参数...97

1.11.3 导出参数模板...99

1.11.4 比较参数模板... 100

1.11.5 查看参数修改历史...102

1.11.6 复制参数模板... 103

1.11.7 重置参数模板... 104

1.11.8 应用参数模板... 105

1.11.9 查看参数模板应用记录... 106

1.11.10 修改参数模板描述... 107

1.11.11 删除参数模板... 107

1.12 连接管理... 108

1.12.1 配置和修改内网地址... 108

1.12.2 绑定和解绑弹性公网 IP... 109

1.12.3 修改数据库端口... 110

1.12.4 申请和修改内网域名... 111

1.12.5 重置和下载证书... 113

1.12.6 设置安全组规则... 114

1.13 数据库代理(读写分离)... 117

1.13.1 读写分离简介... 117

1.13.2 数据库代理使用规范建议...117

1.13.3 数据库代理计费说明... 118

1.13.4 数据库代理内核版本说明...119

1.13.5 数据库代理最佳实践... 120

1.13.6 设置事务拆分... 122

1.13.7 开通读写分离... 123

1.13.8 设置延时阈值和读写分离权重... 125

1.13.9 修改读写分离地址...126

1.13.10 变更数据库代理的规格... 127

1.13.11 调整代理节点数量... 129

1.13.12 升级数据库代理(Proxy)内核版本...130

1.13.13 开启或关闭访问控制... 132

1.13.14 关闭读写分离... 133

1.13.15 系统权重分配规则... 134

1.13.16 测试读写分离效果... 135

1.14 应用无损透明(ALT)... 136

1.14.1 技术架构... 136

1.14.2 约束条件... 138

1.14.3 开启应用无损透明(ALT)...138

1.14.4 应用无损透明(ALT)最佳实践... 139

(6)

1.14.5 关闭应用无损透明(ALT)...139

1.14.6 应用无损透明(ALT)体验...140

1.15 数据库管理... 143

1.15.1 创建数据库...143

1.15.2 数据库授权...145

1.15.3 删除数据库...146

1.15.4 开启或关闭事件定时器... 146

1.16 帐号管理(非管理员权限)...147

1.16.1 创建数据库帐号... 148

1.16.2 重置数据库帐号密码... 150

1.16.3 修改数据库帐号权限... 151

1.16.4 删除数据库帐号... 152

1.17 数据安全性... 153

1.17.1 数据库安全设置... 153

1.17.2 重置管理员密码和 root 帐号权限... 155

1.17.3 修改实例安全组... 157

1.17.4 服务端加密...158

1.17.5 设置 SSL 数据加密... 159

1.17.6 设置密码过期策略...160

1.17.7 解绑弹性公网 IP 外部链接... 161

1.17.8 使用最新版本数据库... 161

1.17.9 使用数据安全服务 DBSS(建议)...162

1.18 监控指标与告警... 163

1.18.1 支持的监控指标... 163

1.18.2 设置告警规则... 175

1.18.3 设置秒级监控... 177

1.18.4 查看监控指标... 179

1.19 CTS 审计...180

1.19.1 支持审计的关键操作列表...181

1.19.2 查看追踪事件... 182

1.20 日志管理... 183

1.20.1 查看或下载错误日志... 183

1.20.2 查看或下载慢日志...184

1.20.3 查看主备切换日志...187

1.20.4 开启 SQL 审计日志... 188

1.20.5 下载 SQL 审计日志... 189

1.21 任务中心... 191

1.21.1 查看任务... 191

1.21.2 删除任务... 192

1.22 计费管理... 193

1.22.1 实例续费... 194

1.22.2 按需实例转包周期...195

(7)

1.22.3 包周期实例转按需...197

1.22.4 退订包周期实例... 197

1.23 标签... 200

1.24 配额... 202

2 PostgreSQL 用户指南... 204

2.1 连接实例... 204

2.1.1 连接 PostgreSQL 实例的方式...204

2.1.2 通过 DAS 连接 PostgreSQL 实例(推荐)... 205

2.1.3 通过 psql 命令行客户端连接实例... 205

2.1.3.1 通过 psql 命令行内网连接实例... 205

2.1.3.2 通过 psql 命令行公网连接实例... 207

2.1.3.3 安装 PostgreSQL 客户端...209

2.1.4 通过图形化界面连接 PostgreSQL 实例... 211

2.1.5 通过 JDBC 连接 PostgreSQL 实例... 212

2.2 使用规范建议... 215

2.2.1 设计开发规范...215

2.2.2 管理维护规范...216

2.3 数据迁移... 218

2.3.1 迁移方案概览...218

2.3.2 使用 DRS 迁移 PostgreSQL 数据...218

2.3.3 使用 psql 命令迁移 PostgreSQL 数据... 218

2.4 参数调优... 220

2.4.1 PostgreSQL 参数调优建议... 221

2.5 PostgreSQL 增强版... 221

2.5.1 PostgreSQL 增强版简介... 221

2.5.2 函数... 222

2.5.3 系统视图... 227

2.5.4 数据类型... 228

2.5.5 隐式类型转换...229

2.5.6 预定义参数... 229

2.5.7 宏变量...230

2.5.8 操作符...230

2.5.9 语法... 231

2.5.10 功能增强... 233

2.5.11 安全加固... 233

2.5.12 其他功能... 233

2.6 PostgreSQL 内核功能... 234

2.6.1 逻辑订阅故障转移(Failover Slot)... 234

2.7 权限管理... 235

2.7.1 创建用户并授权使用 RDS... 235

2.7.2 RDS 自定义策略... 236

2.8 实例生命周期... 237

(8)

2.8.1 购买与原实例相同配置的数据库实例... 237

2.8.2 停止实例... 238

2.8.3 开启实例... 239

2.8.4 重启实例... 240

2.8.5 自定义列表项...241

2.8.6 导出实例... 242

2.8.7 删除按需实例...243

2.8.8 回收站...245

2.9 变更实例... 246

2.9.1 修改实例名称...246

2.9.2 修改实例备注...247

2.9.3 修改数据同步方式... 248

2.9.4 切换主备实例的可用性策略...249

2.9.5 变更实例的 CPU 和内存规格... 250

2.9.6 磁盘扩容... 251

2.9.7 设置可维护时间段... 253

2.9.8 单机转主备实例... 254

2.9.9 手动切换主备实例... 255

2.9.10 迁移可用区...256

2.10 只读实例... 257

2.10.1 只读实例简介... 257

2.10.2 创建只读实例... 258

2.10.3 管理只读实例... 260

2.11 备份与恢复... 262

2.11.1 备份概述... 262

2.11.2 恢复方案概览... 263

2.11.3 设置自动备份策略...263

2.11.4 设置跨区域备份策略... 265

2.11.5 创建手动备份... 268

2.11.6 查看并导出备份信息... 269

2.11.7 下载全量备份文件...270

2.11.8 下载增量备份文件...273

2.11.9 通过备份文件恢复云数据库(PostgreSQL)实例数据...274

2.11.10 通过全量备份文件恢复到自建数据库(PostgreSQL)... 275

2.11.11 通过增量备份文件恢复到自建数据库(PostgreSQL)... 278

2.11.12 将数据库实例恢复到指定时间点... 280

2.11.13 复制备份... 281

2.11.14 删除手动备份... 282

2.12 参数模板管理...283

2.12.1 创建参数模板... 283

2.12.2 修改实例参数... 284

2.12.3 导出参数模板... 286

(9)

2.12.4 比较参数模板... 287

2.12.5 查看参数修改历史...289

2.12.6 复制参数模板... 290

2.12.7 重置参数模板... 291

2.12.8 应用参数模板... 292

2.12.9 查看参数模板应用记录... 293

2.12.10 修改参数模板描述... 294

2.12.11 删除参数模板... 294

2.13 连接管理... 295

2.13.1 配置和修改内网地址... 295

2.13.2 配置和修改内网域名... 296

2.13.3 绑定和解绑弹性公网 IP... 297

2.13.4 修改数据库端口... 299

2.13.5 通过 pgAdmin 连接实例... 299

2.14 插件管理... 302

2.14.1 创建和删除插件... 302

2.14.2 支持的插件列表... 304

2.14.3 使用 pg_profile_pro 插件... 309

2.14.4 使用 pg_repack 插件...313

2.15 表空间管理... 314

2.16 数据库代理(读写分离)... 316

2.16.1 读写分离简介... 317

2.16.2 开通读写分离... 318

2.16.3 设置延时阈值和读写分离权重... 319

2.16.4 变更数据库代理的规格... 321

2.16.5 关闭读写分离... 322

2.16.6 系统权重分配规则...322

2.16.7 测试读写分离效果...324

2.17 数据库安全设置... 324

2.18 数据安全性... 325

2.18.1 重置管理员密码和 root 帐号权限... 325

2.18.2 修改实例安全组... 328

2.18.3 服务端加密...328

2.19 监控指标与告警... 329

2.19.1 支持的监控指标... 329

2.19.2 设置告警规则... 344

2.19.3 查看监控指标... 345

2.20 CTS 审计...346

2.20.1 支持审计的关键操作列表...346

2.20.2 查看追踪事件... 348

2.21 日志管理... 349

2.21.1 查看或下载错误日志... 349

(10)

2.21.2 查看或下载慢日志...350

2.22 任务中心... 352

2.22.1 查看任务... 352

2.22.2 删除任务... 353

2.23 计费管理... 354

2.23.1 实例续费... 354

2.23.2 按需实例转包周期...355

2.23.3 包周期实例转按需...357

2.23.4 退订包周期实例... 357

2.24 大版本升级... 360

2.24.1 使用转储与还原升级大版本... 360

2.25 标签... 362

2.26 配额... 364

3 SQL Server 用户指南... 366

3.1 连接实例... 366

3.1.1 连接 SQL Server 实例的方式...366

3.1.2 通过 DAS 连接 SQL Server 实例(推荐)... 366

3.1.3 通过 SQL Server Management Studio 客户端连接实例... 367

3.1.3.1 通过内网连接 SQL Server 实例...367

3.1.3.2 通过公网连接 SQL Server 实例...370

3.1.3.3 安装 SQL Server Management Studio... 373

3.2 使用规范建议... 374

3.3 实例字符集... 376

3.4 数据迁移... 378

3.4.1 迁移方案概览...378

3.4.2 使用 DRS 迁移 SQL Server 数据...378

3.5 权限管理... 378

3.5.1 创建用户并授权使用 RDS... 378

3.5.2 RDS 自定义策略... 380

3.6 实例生命周期... 380

3.6.1 购买与原实例相同配置的数据库实例... 380

3.6.2 重启实例... 381

3.6.3 自定义列表项...382

3.6.4 导出实例... 383

3.6.5 删除按需实例...384

3.6.6 回收站...386

3.7 变更实例... 387

3.7.1 修改实例名称...387

3.7.2 修改实例备注...388

3.7.3 切换主备实例的可用性策略...389

3.7.4 克隆实例... 389

3.7.5 变更实例的 CPU 和内存规格... 391

(11)

3.7.6 磁盘扩容... 392

3.7.7 设置可维护时间段... 394

3.7.8 单机转主备实例... 394

3.7.9 手动切换主备实例... 395

3.8 只读实例... 396

3.8.1 只读实例简介...396

3.8.2 创建只读实例...397

3.8.3 管理只读实例...399

3.9 备份与恢复... 401

3.9.1 备份概述... 401

3.9.2 恢复方案概览...402

3.9.3 设置自动备份策略... 402

3.9.4 设置跨区域备份策略...404

3.9.5 创建手动备份...407

3.9.6 查看并导出备份信息...409

3.9.7 下载备份文件...409

3.9.8 通过备份文件恢复云数据库(SQL Server)实例数据... 413

3.9.9 通过备份文件恢复到自建数据库(SQL Server)...419

3.9.10 将数据库实例恢复到指定时间点...422

3.9.11 复制备份... 428

3.9.12 删除手动备份... 428

3.10 参数模板管理...429

3.10.1 创建参数模板... 429

3.10.2 修改实例参数... 431

3.10.3 导出参数模板... 433

3.10.4 比较参数模板... 434

3.10.5 查看参数修改历史...436

3.10.6 复制参数模板... 437

3.10.7 重置参数模板... 438

3.10.8 应用参数模板... 439

3.10.9 查看参数模板应用记录... 440

3.10.10 修改参数模板描述... 441

3.10.11 删除参数模板... 441

3.11 升级版本... 442

3.11.1 升级内核小版本... 442

3.11.2 升级 SQL Server 数据库引擎版本... 443

3.12 连接管理... 444

3.12.1 配置和修改内网地址... 445

3.12.2 绑定和解绑弹性公网 IP... 445

3.12.3 修改数据库端口... 447

3.13 数据库和帐号管理(非管理员权限)... 448

3.14 数据库安全设置... 448

(12)

3.15 数据安全性... 449

3.15.1 重置管理员密码和 rdsuser 帐号权限... 449

3.15.2 修改实例安全组... 452

3.15.3 服务端加密...452

3.15.4 开启透明数据加密功能... 453

3.16 分布式事务... 456

3.17 集成服务(SSIS)... 460

3.18 监控指标与告警... 463

3.18.1 支持的监控指标... 464

3.18.2 设置告警规则... 469

3.18.3 查看监控指标... 471

3.19 CTS 审计...472

3.19.1 支持审计的关键操作列表...472

3.19.2 查看追踪事件... 474

3.20 日志管理... 475

3.20.1 查看或下载运行日志... 475

3.20.2 查看或下载审计日志... 476

3.20.3 查看或下载慢日志...480

3.21 任务中心... 483

3.21.1 查看任务... 483

3.21.2 删除任务... 484

3.21.3 授权任务... 486

3.22 计费管理... 486

3.22.1 实例续费... 486

3.22.2 按需实例转包周期...487

3.22.3 包周期实例转按需...489

3.22.4 退订包周期实例... 490

3.23 开启或关闭 FileStream 存储... 492

3.24 开启 CLR 集成功能... 495

3.25 设置 SQL Server 默认语言... 498

3.26 存储过程的使用... 500

3.26.1 创建主帐号...500

3.26.2 域帐号授权 SSIS... 501

3.26.3 部署 SSIS 工程...501

3.26.4 修改自定义数据库名称... 502

3.26.5 查看错误日志... 503

3.26.6 跟踪标记... 503

3.26.7 变更数据捕获(CDC)... 504

3.26.8 将自定义数据库移出可用性组... 505

3.26.9 数据库复制...505

3.26.10 限制子帐户只能看到具有权限的数据库清单... 506

3.26.11 删除自定义数据库... 507

(13)

3.26.12 更新数据库统计信息... 508

3.26.13 SQL Server agent 错误日志轮转... 508

3.26.14 SQL Server 错误日志轮转... 509

3.26.15 创建警报... 509

3.26.16 设置警报通知... 512

3.26.17 创建用于警报和作业的操作员... 513

3.26.18 更新警报设置... 516

3.26.19 更新警报通知... 519

3.26.20 更新警报和作业所用的操作员信息...520

3.26.21 删除警报... 522

3.26.22 删除特定警报和操作员的 SQL Server 代理通知定义... 523

3.26.23 删除操作员... 524

3.26.24 收缩数据库... 525

3.26.25 设置数据库 trustworthy 属性... 526

3.26.26 查看任意数据库权限变更... 527

3.26.27 授予库级 db_owner 角色权限...527

3.27 标签... 528

3.28 配额... 530

A 修订记录... 532

(14)

1 MySQL 用户指南

1.1 连接实例

1.1.1 连接 MySQL 实例的方式

云数据库MySQL提供使用命令行、图形化界面、JDBC和数据管理服务(Data Admin Service,简称DAS)的连接方式。

1-1 RDS 连接方式

连接方式 使用场景

通过DAS连接 MySQL实例(推 荐)

通过华为云数据管理服务(Data Admin Service,简称DAS)

这款可视化的专业数据库管理工具,可获得执行SQL、高级数 据库管理、智能化运维等功能,做到易用、安全、智能地管理 数据库。华为云关系型数据库服务默认开通DAS连接权限。

通过mysql命令行

客户端连接实例 在Linux操作系统中,您需要在弹性云服务器上安装MySQL客

户端,通过mysql命令行连接实例。支持公网和内网两种连接 方式:

● 系统默认提供内网IP地址。

当应用部署在弹性云服务器上,且该弹性云服务器与 MySQL实例处于同一区域,同一VPC时,建议单独使用内 网IP连接弹性云服务器与MySQL实例。

● 不能通过内网IP地址访问RDS实例时,使用公网访问,建议 单独绑定弹性公网IP连接弹性云服务器(或公网主机)与 MySQL实例。

通过图形化界面连

接MySQL实例 在Windows操作系统中,您可以使用任何通用的数据库客户端

连接到MySQL实例。

(15)

连接方式 使用场景 通过JDBC连接

MySQL实例 通过JDBC连接实例的方式有无需下载SSL证书连接和用户下载 SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具 有更高的安全性。MySQL新实例默认关闭SSL数据加密,开启 SSL请参考设置SSL数据加密。SSL连接实现了数据加密功能,

但同时也会增加网络连接响应时间和CPU消耗,不建议开启 SSL数据加密。

1.1.2 通过 DAS 连接 MySQL 实例(推荐)

操作场景

华为云数据管理服务(Data Admin Service,简称DAS)是一款专业的简化数据库管 理工具,提供优质的可视化操作界面,大幅提高工作效率,让数据管理变得既安全又 简单。您可以通过数据管理服务连接并管理实例。华为云关系型数据库服务默认为您 开通了远程主机登录权限,推荐您使用更安全便捷的数据管理服务连接实例。

操作步骤

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域和项目。

步骤3 在页面左上角单击 ,选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页 面。

步骤4 在“实例管理”页面,选择目标实例,选择操作列的“更多 > 登录”,进入数据管理 服务实例登录界面。

您也可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“登录”,

进入数据管理服务实例登录界面。

步骤5 正确输入数据库用户名和密码,单击“登录”,即可进入您的数据库并进行管理。

----结束

后续操作

登录实例后,您可以创建数据库,进行数据迁移等操作,具体请参见:

● 通过界面可视化创建MySQL数据库

● 通过调用API创建MySQL数据库

● 使用DRS迁移MySQL数据库

● 使用mysqldump迁移MySQL数据

1.1.3 通过 MySQL 命令行客户端连接实例

(16)

1.1.3.1 使用 MySQL 命令行内网连接实例

华为云提供两种连接方式通过MySQL客户端连接实例:非SSL连接和SSL连接。其中,

SSL连接实现了数据加密功能,具有更高的安全性。

前提条件

1. 登录弹性云服务器。

– 创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性 云服务器”和“登录弹性云服务器”。

– 通过弹性云服务器连接云数据库RDS实例,需要具备以下条件。

该弹性云服务器与目标实例必须处于同一VPC内。

该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。

○ 如果目标实例所属安全组为默认安全组, 则无需设置安全组规则。

○ 如果目标实例所属安全组非默认安全组,请查看安全组规则是否允 许该弹性云服务器访问。具体操作请参考设置安全组规则。

如果安全组规则允许弹性云服务器访问,即可连接实例。

如果安全组规则不允许弹性云服务器访问,则需添加安全组规则。

该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。

2. 使用客户端连接实例。

在Linux操作系统中,您需要在可访问云数据库RDS的设备上安装MySQL客户端。

建议您下载的MySQL客户端版本高于已创建的RDS实例中数据库版本。

请参见安装MySQL客户端。

SSL 连接

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域和项目。

步骤3 在页面左上角单击 ,选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页 面。

步骤4 在“实例管理”页面,单击实例名称进入“基本信息”页面。

步骤5 在“数据库信息”模块的“SSL”处,查看SSL开关状态。

● 开关打开,执行步骤6。

● 开关关闭,单击 ,在弹出框中,单击“是”,开启SSL加密。然后执行步骤 6。

步骤6 单击“SSL”处的 ,下载根证书或捆绑包。

步骤7 将根证书导入弹性云服务器Linux操作系统,请参见将根证书导入Windows/Linux操 作系统。

(17)

说明

● 云数据库RDS服务在2017年4月提供了20年有效期的新根证书,该证书在实例重启后生效。

请在原有根证书到期前及时更换正规机构颁发的证书,提高系统安全性。

请参见如何确认SSL根证书的有效期。

● 云数据库RDS服务还提供根证书捆绑包下载,其中包含2017年4月之后的新根证书和原有根 证书。

步骤8 连接云数据库RDS实例。以Linux系统为例,执行如下命令。

mysql -h <host>-P <port>-u <userName>-p--ssl-ca=<caDIR>

1-2 参数说明

参数 说明

<host> 内网地址。在目标实例的“基本信息”页面,“连接信息”模块 的“内网地址”。

<port> 数据库端口,默认3306。在目标实例的“基本信息”页面,“连

接信息”模块的“数据库端口”。

<userName> 用户名,即云数据库RDS帐号(默认管理员帐号为root)。

<caDIR> CA证书路径,该文件需放在执行该命令的路径下。

使用root用户SSL连接数据库实例,示例如下:

mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=ca.pem 出现如下提示时,输入数据库帐号对应的密码:

Enter password:

说明

若连接失败,请参见ECS无法连接到RDS实例的原因。

----结束

常见问题

连接RDS实例失败的排查思路

后续操作

登录实例后,您可以创建数据库,进行数据迁移等操作,具体请参见:

● 通过界面可视化创建MySQL数据库

● 通过调用API创建MySQL数据库

● 通过DAS管理MySQL数据库

● 使用DRS迁移MySQL数据库

● 使用mysqldump迁移MySQL数据

(18)

1.1.3.2 使用 MySQL 命令行公网连接实例

华为云提供两种连接方式通过MySQL客户端连接实例:非SSL连接和SSL连接。其中,

SSL连接实现了数据加密功能,具有更高的安全性。

前提条件

1. 绑定弹性公网IP并设置安全组规则。

a. 对目标实例绑定弹性公网IP。

关于如何绑定弹性公网IP,请参见绑定弹性公网IP。

b. 获取本地设备的IP地址。

c. 设置安全组规则。

将1.b中获取的IP地址及目标实例的端口加入安全组允许访问的范围中。

关于如何设置安全组规则,请参考设置安全组规则。

d. 使用ping命令连通1.a中绑定的弹性公网IP,确保本地设备可以访问该弹性公 网IP。

2. 使用客户端连接实例。

在Linux操作系统中,您需要在弹性云服务器上安装MySQL客户端。建议您下载的 MySQL客户端版本高于已创建的RDS实例中数据库版本。

请参见安装MySQL客户端。

SSL 连接

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域和项目。

步骤3 在页面左上角单击 ,选择“数据库 > 云数据库 RDS”。进入云数据库 RDS信息页 面。

步骤4 在“实例管理”页面,单击实例名称进入“基本信息”页面。

步骤5 在“数据库信息”模块的“SSL”处,查看SSL开关状态。

● 开关打开,执行步骤6。

● 开关关闭,单击 ,在弹出框中,单击“是”,开启SSL加密。然后执行步骤 6。

步骤6 单击“SSL”处的 ,下载根证书或捆绑包。

步骤7 将根证书导入弹性云服务器Linux操作系统,请参见将根证书导入Windows/Linux操 作系统。

说明

● 云数据库RDS服务在2017年4月提供了20年有效期的新根证书,该证书在实例重启后生效。

请在原有根证书到期前及时更换正规机构颁发的证书,提高系统安全性。

请参见如何确认SSL根证书的有效期。

● 云数据库RDS服务还提供根证书捆绑包下载,其中包含2017年4月之后的新根证书和原有根 证书。

(19)

步骤8 连接云数据库RDS实例。以Linux系统为例,执行如下命令。

mysql -h <host>-P <port>-u <userName>-p--ssl-ca=<caDIR>

1-3 参数说明

参数 说明

<host> 目标实例的弹性公网IP。

<port> 目标实例的数据库端口。

<userName> 用户名,即云数据库RDS帐号(默认管理员帐号为root)。

<caDIR> CA证书路径,该文件需放在执行该命令的路径下。

使用root用户SSL连接数据库实例,示例如下:

mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=ca.pem 出现如下提示时,输入数据库帐号对应的密码:

Enter password:

说明

若连接失败,请确保各项前提条件正确配置后,重新尝试连接。

----结束

常见问题

连接RDS实例失败的排查思路

后续操作

登录实例后,您可以创建数据库,进行数据迁移等操作,具体请参见:

● 通过界面可视化创建MySQL数据库

● 通过调用API创建MySQL数据库

● 通过DAS管理MySQL数据库

● 使用DRS迁移MySQL数据库

● 使用mysqldump迁移MySQL数据

1.1.3.3 安装 MySQL 客户端

MySQL官网提供了针对不同操作系统的客户端安装包,以5.6为例。单击此处下载 MySQL最新版本,单击此处下载其他归档版本。下面将以Red Hat Linux为例介绍如何 获取相应安装包及完成安装。

操作步骤

步骤1 获取安装包。

(20)

在下载页面找到对应版本链接,以MySQL-client-5.6.31-1.el6.x86_64.rpm为例,即可 下载安装包。

1-1 下载

步骤2 将安装包上传到弹性云服务器。

1. 创建弹性云服务器时,要选择操作系统,例如Redhat6.6,并为其绑定EIP

(Elastic IP,弹性公网IP)。

2. 使用远程连接工具通过绑定的EIP连接到弹性云服务器,即可将安装包上传到弹性 云服务器。

步骤3 执行以下命令安装MySQL客户端。

sudo rpm -ivh MySQL-client-5.6.31-1.el6.x86_64.rpm 说明

● 如果安装过程中报conflicts,可增加replacefiles参数重新安装,如下:

rpm -ivh --replacefiles MySQL-client-5.6.31-1.el6.x86_64.rpm

● 如果安装过程中提示需要安装依赖包,可增加nodeps参数重新安装,如下:

rpm -ivh --nodeps MySQL-client-5.6.31-1.el6.x86_64.rpm

----结束

1.1.4 通过图形化界面连接 MySQL 实例

在Windows操作系统中,您可以使用任何通用的数据库客户端连接到RDS实例且连接 方法类似。

以MySQL-Front为例,具体操作请参见使用MySQL-Front连接实例。

使用 MySQL-Front 连接实例

步骤1 启动MySQL-Front客户端。

步骤2 在连接管理对话框中,单击“新建”。

(21)

1-2 连接管理

步骤3 输入需要连接的云数据库RDS实例信息,然后单击“确定”。如图1-3所示。

1-3 添加信息

(22)

1-4 参数说明

参数 说明

名称 连接数据库的任务名称。若不填写,系统默认与Host一致。

主机 目标实例的内网地址。查看目标实例的内网地址及端口信息的步骤如 下:

1. 登录云数据库RDS的管理控制台。

2. 选择目标实例所在区域。

3. 单击目标实例名称,进入“基本信息”页面。

4. 在“连接信息”模块,可查看“内网地址”信息。

如果通过公网连接,主机IP为目标实例的弹性公网IP。

端口 输入RDS实例的内网端口。

用户 需要访问RDS实例的帐号名称。默认root。

密码 要访问云数据库RDS实例的帐号所对应的密码。

步骤4 在“连接管理”窗口,选中步骤3创建的连接,单击“打开”,如下图所示。若连接信 息无误,即会成功连接实例。

1-4 打开登录信息

说明

若连接失败,请参见ECS无法连接到RDS实例的原因。

----结束

常见问题

连接RDS实例失败的排查思路

(23)

后续操作

登录实例后,您可以创建数据库,进行数据迁移等操作,具体请参见:

● 通过界面可视化创建MySQL数据库

● 通过调用API创建MySQL数据库

● 通过DAS管理MySQL数据库

● 使用DRS迁移MySQL数据库

● 使用mysqldump迁移MySQL数据

1.1.5 通过 JDBC 连接 MySQL 实例

通过JDBC连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中 使用SSL证书连接通过了加密功能,具有更高的安全性。MySQL新实例默认关闭SSL数 据加密,开启SSL请参考设置SSL数据加密。SSL连接实现了数据加密功能,但同时也 会增加网络连接响应时间和CPU消耗,不建议开启SSL数据加密。

前提条件

用户需要具备以下技能:

● 熟悉计算机基础知识。

● 了解java编程语言。

● 了解JDBC基础知识。

使用 SSL 证书连接

说明

该方式属于SSL连接模式,需要下载SSL证书,通过证书校验并连接数据库。

您可以在“实例管理”页面,单击实例名称进入“基本信息”页面,如果SSL开关未打开,单击

,在弹出框中单击“是”,开启SSL加密,完成后单击“数据库信息”模块“SSL”处的

,下载根证书或捆绑包。

步骤1 通过JDBC连接MySQL数据库,代码中的JDBC链接格式如下:

jdbc:mysql://<instance_ip>:<instance_port>/<database_name>?sslmode=verify-full&sslrootcert=<ca.pem>

1-5 参数说明

参数 说明

<instance_ip> 如果通过弹性云服务器连接,“instance_ip”是主机IP,即

“基本信息”页面该实例的“内网地址”。

如果通过连接了公网的设备访问,“instance_ip”为该实例已 绑定的“弹性公网IP”。

<instance_port> 端口,默认3306,当前端口,参考“基本信息”页面该实例的

“数据库端口”。

<database_name

> 数据库名,即需要连接的数据库名(默认的管理数据库是 mysql)。

(24)

参数 说明

sslmode ssl连接模式,默认全认证模式。

sslrootcert ssl连接CA证书路径,该文件需放在执行该命令的路径下。

连接MySQL数据库的java代码,可参考以下示例:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.sql.SQLException;

public class MyConnTest {

final public static void main(String[] args) { Connection conn = null;

Statement stat = null;

// set sslmode here.

// with ssl certificate and path.

String url = "jdbc:mysql://192.168.0.225:3306/my_db_test?sslmode=verify- full&sslrootcert=/home/Ruby/ca.pem";

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(url, "root", "password");

System.out.println("Database connected");

Statement stmt = conn.createStatement();

String sql = "SELECT * FROM mytable WHERE columnfoo = 500";

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {

System.out.println(rs.getString(1));

}

rs.close();

stmt.close();

conn.close();

} catch (Exception e) { e.printStackTrace();

System.out.println("Test failed");

} finally {

// release resource ....

} } }

----结束

无证书连接

说明

该方式属于SSL连接模式,但不对服务端进行证书校验,用户无需下载SSL证书。

步骤1 通过JDBC连接MySQL数据库实例,代码中的JDBC链接格式如下:

jdbc:mysql://<instance_ip>:<instance_port>/<database_name>?sslmode=require

(25)

1-6 参数说明

参数 说明

<instance_ip> 如果通过弹性云服务器连接,“instance_ip”是主机IP,即

“基本信息”页面该实例的“内网地址”。

如果通过连接了公网的设备访问,“instance_ip”为该实例已 绑定的“弹性公网IP”。

<instance_port> 端口,默认3306,当前端口,参考“基本信息”页面该实例的

“数据库端口”。

<database_name

> 数据库名,即需要连接的数据库名(默认的管理数据库是 mysql)。

sslmode ssl连接模式,require模式表示进行数据加密。

连接MySQL数据库的java代码,可参考以下示例:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class MyConnTest {

final public static void main(String[] args) { Connection conn = null;

// set sslmode here.

// no ssl certificate, so do not specify path.

String url = "jdbc:mysql://192.168.0.225:3306/my_db_test?sslmode=require";

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(url, "root", "password");

System.out.println("Database connected");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");

while (rs.next()) {

System.out.println(rs.getString(1));

}

rs.close();

stmt.close();

conn.close();

} catch (Exception e) { e.printStackTrace();

System.out.println("Test failed");

} finally {

// release resource ....

} } }

----结束

(26)

1.2 使用规范建议

数据库实例

数据库实例类型选择

● 主备

– 一主一备的经典高可用架构。适用于大中型企业的生产数据库,覆盖互联 网、物联网、零售电商、物流、游戏等行业应用。

– 备机提高了实例的可靠性,创建主机的过程中,同步创建备机,备机创建成 功后,用户不可见。

– 当主节点故障后,会发生主备切换,数据库客户端会发生短暂中断,数据库 客户端需要支持重新连接。

● 单机

– 采用单个数据库节点部署架构,与主流的主备实例相比,它只包含一个节 点,但具有高性价比。

– 适用于个人学习、微型网站以及中小企业的开发测试环境。

– 单机版出现故障后,无法保障及时恢复。

实例性能规格选择

● 独享型

– 完全独享的CPU和内存,性能长期稳定,不会因为物理机上其它实例的行为 而受到影响,适用于对性能稳定性要求较高的应用场景。

● 通用型

– 与同一物理机上的其他通用型规格实例共享CPU资源,通过资源复用换取 CPU使用率最大化,性价比较高,适用于对性能稳定性要求较低的应用场 景。

数据库只读实例

● 只读实例是单机版本,当物理机故障或者数据库复制异常后,需要较长时间重建 和恢复(取决于数据量)。

● 对只读有较强依赖的业务场景,推荐开启Proxy功能,并购买冗余的只读实例。当 单个只读故障后,Proxy可以将流量分担到其它只读节点。

数据库连接

● 根据业务的复杂度,合理配置MySQL参数。

● 建议保持合理的活跃连接数。

● 避免长连接,长连接的缓存可能较大,导致内存不足,建议定期释放长连接。

可靠性和可用性

● 生产数据库的实例类型请选择主备类型。

● 选择主备实例时,建议主备可用区选择不同的可用区。

● 读写业务并发较高时,建议创建只读实例,并开启读写分离。

(27)

● 建议在业务低峰期执行规格变更。

● 业务上线前,对数据库进行评估,选择合适的规格和磁盘大小。

● 主实例扩容后请及时扩容只读实例,避免只读实例存储空间不足导致业务异常。

备份恢复

● 业务高峰时执行备份可能会备份失败,建议手动备份选择在业务低峰期间,自动 备份建议根据业务需要自定义备份时间段(默认自动备份时间段为03:00-04:00 (GMT+08:00))。

● 实例写入业务较多时,建议备份策略设置成每天做一次自动备份。

● 建议根据业务需要设置备份保留天数(默认保留7天)。

● 建议根据业务需要设置Binlog本地保留时长(默认为0,表示Binlog备份完成后本 地日志会被删除)。

● 使用表级时间点恢复功能时,建议提前确认所选时间点之前是否有对无主键大表 的删除操作,如果有该操作,恢复完成时间不易评估。

● 创建实例前建议根据需要选择存储类型,本地盘SSD实例不支持备份恢复到已有 实例和当前实例。

● 删除实例后,自动备份的全量备份和Binlog备份也会删除,对数据有需要时,建 议删除前进行手动全量备份。

● 建议自定义回收站策略,防止误删实例无法恢复。

SQL 审计

● 需要定期做业务审计时,建议开启审计日志。

● 需要做业务SQL分析时,建议开启全量SQL功能。

日常运维

● 建议定期关注慢日志和错误日志,提前识别业务问题。

● 建议定期关注数据库的资源使用情况,资源不足时,及时扩容。

● 建议关注实例监控,发现监控指标异常时,及时处理。

● 删除和修改记录时,需要先执行SELECT,确认无误才能提交执行。

安全

● 尽量避免数据库被公网访问,公网连接时必须绑定弹性公网IP,设置合适的白名 单。

● 尽量使用SSL连接,保证连接的安全性。

1.3 数据迁移

1.3.1 迁移方案概览

云数据库MySQL提供了多种数据迁移方案,可满足不同上云或跨云迁云的业务需求,

使您可以在不影响业务的情况下平滑将数据库迁移至云数据库MySQL。

(28)

1-7 MySQL 迁移方案

迁移场景 文档链接

使用命令迁移MySQL数据 使用mysqldump迁移MySQL数据 使用界面方式迁移MySQL库表数据 通过数据管理服务导出MySQL库表数据 自建数据库迁移至云数据库MySQL(入

云迁移) 本地MySQL数据库的数据迁移至本云云

数据库MySQL实例

其他云上数据库迁移到云数据库MySQL 其他云MySQL数据库的数据迁移到本云 云数据库MySQL实例

VPC网络内云数据库MySQL之间迁移 ECS自建数据库的数据迁移到本云云数据 库MySQL 实例

云数据库MySQL迁移至自建数据库(出

云迁移) 本云云数据库MySQL数据迁移到ECS自

建MySQL实例

1.3.2 使用 DRS 迁移 MySQL 数据

使用数据复制服务(Data Replication Service,简称DRS)将本地数据库迁移到RDS for MySQL,平滑完成数据库的迁移工作。

您可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“迁移数据 库”,进入数据复制服务信息页面。

具体迁移操作,请参见《数据复制服务用户指南》的“实时迁移”内容。

1.3.3 使用 mysqldump 迁移 MySQL 数据

迁移准备

云数据库RDS服务支持开启公网访问功能,通过弹性公网IP进行访问。您也可通过弹性 云服务器的内网访问云数据库RDS。

1. 准备弹性云服务器或可通过公网访问云数据库RDS。

– 通过弹性云服务器连接云数据库RDS实例,需要创建一台弹性云服务器。

创建并连接弹性云服务器,请参见如何创建和连接ECS。

– 通过公网地址连接云数据库RDS实例,需具备以下条件。

i. 先对云数据库RDS实例绑定公网地址,如何绑定公网地址,请参见绑定 弹性公网IP。

ii. 保证本地设备可以访问云数据库RDS实例绑定的公网地址。

2. 在准备的弹性云服务器或可访问云数据库RDS的设备上,安装MySQL客户端。

请参见如何安装MySQL客户端。

说明

该弹性云服务器或可访问云数据库RDS的设备需要安装和RDS MySQL数据库服务端相同版 本的数据库客户端,MySQL数据库或客户端会自带mysqldump和mysql工具。

数据迁移到云数据库RDS后可能要面对更改IP的问题,为减少客户业务更改,降低迁移难 度,支持更改内网IP,具体请参见配置和修改内网地址。

(29)

导出数据

要将源数据库迁移到云数据库RDS,需要先对其进行导出。

须知

● 相应导出工具需要与数据库引擎版本匹配。

● 数据库迁移为离线迁移,您需要停止使用源数据库的应用程序。

步骤1 登录已准备的弹性云服务器,或可访问云数据库RDS的设备。

步骤2 使用mysqldump将元数据导出至SQL文件。

须知

MySQL数据库是云数据库RDS服务管理所必须的数据库,导出元数据时,禁止指定-- all-database参数,否则会造成数据库故障。

mysqldump --databases <DB_NAME> --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u <DB_USER>

-p -h <DB_ADDRESS> -P <DB_PORT> |sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' -e 's/

DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/

PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/

DEFINER[ ]*=.*EVENT/EVENT/' > <BACKUP_FILE>

● DB_NAME为要迁移的数据库名称。

● DB_USER为数据库用户。

● DB_ADDRESS为数据库地址。

● DB_PORT为数据库端口。

● BACKUP_FILE为导出生成的文件名称。 根据命令提示输入数据库密码。

示例如下:

mysqldump --databases rdsdb --single-transaction --order-by-primary --hex- blob --no-data --routines --events --set-gtid-purged=OFF -u root -p -h 192.168.151.18 -P 3306 |sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' -e 's/

DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/

PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/

DEFINER[ ]*=.*EVENT/EVENT/' > dump-defs.sql Enter password:

说明

若使用的mysqldump低于5.6版本,需要去掉“--set-gtid-purged=OFF”。

命令执行完会生成“dump-defs.sql”文件,如下:

[rds@localhost ~]$ ll dump-defs.sql

-rw-r---. 1 rds rds 2714 Sep 21 08:23 dump-defs.sql

(30)

步骤3 使用mysqldump将数据导出至SQL文件。

须知

MySQL数据库是云数据库RDS服务管理所必须的数据库,导出元数据时,禁止指定-- all-database参数,否则会造成数据库故障。

mysqldump --databases <DB_NAME> --single-transaction --hex-blob --set- gtid-purged=OFF --no-create-info --skip-triggers -u <DB_USER> -p -h

<DB_ADDRESS> -P <DB_PORT> -r <BACKUP_FILE>

以上命令的参数说明如步骤2所示。

根据命令提示输入数据库密码。

示例如下:

mysqldump --databases rdsdb --single-transaction --hex-blob --set-gtid- purged=OFF --no-create-info --skip-triggers -u root -p -h 192.168.151.18 -P 3306 -r dump-data.sql

说明

若使用的mysqldump低于5.6版本,需要去掉“--set-gtid-purged=OFF”。

命令执行完会生成“dump-data.sql”文件,如下:

[rds@localhost ~]$ ll dump-data.sql

-rw-r---. 1 rds rds 2714 Sep 21 08:23 dump-data.sql

----结束

导入数据

通过弹性云服务器或可访问云数据库RDS的设备,用相应客户端连接云数据库RDS实 例,将导出的SQL文件导入到云数据库RDS。

须知

如果源数据库中包含触发器、存储过程、函数或事件调用,则需确保导入前设置目标 数据库参数log_bin_trust_function_creators=ON。

步骤1 登录已准备的弹性云服务器,或可访问云数据库RDS的设备。

步骤2 导入元数据到云数据库RDS。

# mysql -f -h <RDS_ADDRESS> -P <DB_PORT> -u root -p < <BACKUP_DIR>/ dump-defs.sql

● RDS_ADDRESS为云数据库RDS实例的IP地址。

● DB_PORT为当前数据库实例的端口。

● BACKUP_DIR为“dump-defs.sql”所在目录。

示例如下:

(31)

# mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-defs.sql Enter password:

说明

如果是将单表导出的数据(即导出的SQL是某一张表的SQL语句,不包含数据库)再进行导入,

建议指定待导入的数据库(mydb),否则可能会报错“No database selected”。示例:

# mysql -f -h 172.16.66.198 -P 3306 -u root -p mydb < dump-defs.sql Enter password:

步骤3 导入数据到云数据库RDS。

# mysql -f -h <RDS_ADDRESS> -P <DB_PORT> -u root -p < <BACKUP_DIR>/ dump-data.sql

● RDS_ADDRESS为云数据库RDS实例的IP地址。

● DB_PORT为当前数据库实例的端口。

● BACKUP_DIR为“dump-data.sql”所在目录。

示例如下:

# mysql -f -h 172.16.66.198 -P 3306 -u root -p < dump-data.sql Enter password:

说明

如果是将单表导出的数据(即导出的SQL是某一张表的SQL语句,不包含数据库)再进行导入,

建议指定待导入的数据库(mydb),否则可能会报错“No database selected”。示例:

# mysql -f -h 172.16.66.198 -P 3306 -u root -p mydb < dump-defs.sql Enter password:

步骤4 查看迁移结果。

mysql> show databases;

示例中,名为rdsdb的数据库已经被导入了:

mysql> show databases;

+---+

| Database | +---+

| information_schema |

| rdsdb |

| mysql |

| performance_schema | +---+

4 rows in set (0.00 sec)

----结束

1.4 性能调优

1.4.1 MySQL 参数调优建议

数据库参数是数据库系统运行的关键配置信息,设置不合适的参数值可能会影响业 务。本文列举了一些重要参数说明,更多参数详细说明,请参见MySQL官网。

(32)

通过控制台界面修改MySQL参数值,请参见修改实例参数。

修改敏感参数

若干参数相关说明如下:

● “lower_case_table_names”

云数据库默认值:“1”。

作用:该参数表示创建数据库及表时,表存储是否大小写敏感。默认值“1”,表 示创建数据库及表时,默认小写,不区分大小写。

说明

MySQL 8.0版本不支持该参数。

影响:修改该参数可能会导致主从复制异常,请谨慎修改。如果必须要修改,请 根据以下场景设置数据库参数:

– 参数值从1变为0的设置顺序:先修改和重启只读库,后修改和重启主库。

– 参数值从0变为1的设置顺序:先修改和重启主库,在主库执行SELECT

@@GLOBAL.GTID_EXECUTED。然后在只读库执行SELECT

@@GLOBAL.GTID_EXECUTED,直到结果集合大于或者等于主库的SELECT

@@GLOBAL.GTID_EXECUTED的结果集合,再修改和重启只读库。

● “innodb_flush_log_at_trx_commit”

云数据库默认值:“1”。

作用:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。设置为 默认值“1”,是为了保证完整的ACID,每次提交事务时,把事务日志从缓存区 写到日志文件中,并刷新日志文件的数据到磁盘上;当设为“0”时,每秒把事务 日志缓存区的数据写入日志文件,并刷新到磁盘;如果设为“2”,每次提交事务 都会把事务日志从缓存区写入日志文件,每隔一秒左右会刷新到磁盘。

影响:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,

可能导致数据丢失。

POC建议值:“2”。

● “sync_binlog”

云数据库默认值:“1”。

作用:该参数控制MySQL服务器将二进制日志同步到磁盘的频率。设置为默认值

“1”,表示MySQL每次事务提交,binlog同步写入磁盘,是最安全的设置;设置 为“0”时,表示MySQL不控制binlog的刷新,由文件系统自己控制其缓存的刷 新。此时的性能最好,但风险最大,因为一旦断电或操作系统崩溃,在

“binlog_cache”中的所有binlog信息都会被丢失。

影响:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,

可能导致binlog丢失。

POC建议值:“1000”。

● “innodb_large_prefix”

云数据库默认值:“OFF”。

作用:InnoDB表允许单列索引的最大长度。

说明

仅MySQL 5.6版本支持该参数。

(33)

影响:在DDL执行时修改该参数,有可能会导致主从复制异常,请谨慎修改。如 果必须要修改,请根据以下场景设置数据库参数:

– 参数值从OFF变为ON的设置顺序:先修改只读库,后修改主库。

– 参数值从ON变为OFF的设置顺序:先修改主库,后修改只读库。

● “innodb_buffer_pool_size”

云数据库默认值:“规格参数,不同实例规格默认值也不同”。

作用:该参数为Innodb缓冲池大小,用来缓存表和索引数据的内存区域,增加该 值可减少磁盘I/O。

影响:过大的buffer pool可能导致系统崩溃,请谨慎修改。

POC建议值:32G及以上规格可将其调整至内存的70%~75%。

修改性能参数

若干参数相关说明如下:

● “innodb_spin_wait_delay”和“query_alloc_block_size”依赖于实例的规格,

设置过大时,可能会影响数据库的使用。

● “key_buffer_size”参数值设置较小(小于4096),参数值将修改失败。

● “max_connections”参数值设置较小,将影响数据库访问。

● “innodb_buffer_pool_size”、“max_connections”和“back_log”参数依赖于 实例的规格,实例规格不同对应其默认值也不同。因此,这些参数在用户未设置 前显示为“default”。

● “innodb_io_capacity_max”、“innodb_io_capacity”参数依赖于磁盘类型,用 户未设置前显示为“default”。

联动参数

● “character_set_server”:修改该参数的值, 系统会联动调整

“collation_server”、“character_set_database”,和“collation_database”的 取值。

其中,字符序“character_set_server”跟字符集“collation_server”存在对应关 系,比如针对MySQL 5.7而言,“character_set_server”为“latin1”时,对应的

“collation_server”默认值为“latin1_swedish_ci”,此时“collation_server”

的取值区间为以“latin1”开头的字符序。

● “innodb_io_capacity”:该参数的取值必须小于等于

“innodb_io_capacity_max”的取值。 比如“innodb_io_capacity_max”为

“2000”, 则“innodb_io_capacity”最大设置为“2000”。

● “innodb_buffer_pool_size”: 该参数受“innodb_buffer_pool_chunk_size ”*

“innodb_buffer_pool_instances”的影响,为两参数乘积的整数倍向上取值。 比 如“innodb_buffer_pool_chunk_size”为“134217728”,

“ innodb_buffer_pool_instances”为“1”,那“innodb_buffer_pool_size”必 须大于等于“134217728”。

其他参数

● “max_prepared_stmt_count”:准备大量的语句会消耗服务器的内存资源,参 数设置较小,会带来潜在的“拒绝服务”的风险,建议您根据业务情况,调整该 参数的值。

(34)

● 如下参数的输入会根据内核规则对取值进行对应的调整。调整的规则如下所示:

– “key_cache_age_threshold”会自动调整为100的倍数。

– “join_buffer_size”和“key_cache_block_size”会自动调整为128的倍数。

– “query_cache_size”、“query_prealloc_size”、

“innodb_log_buffer_size”和“max_allowed_packet ”、

“thread_stack ”会自动调整为1024的倍数。

– “read_buffer_size”、“read_rnd_buffer_size”、

“binlog_cache_size ”、“binlog_stmt_cache_size ”会自动调整为4096的 倍数。

– “data_buffer_size”、“log_buffer_size”、“shared_pool_size”、

“temp_buffer_size ”会自动调整为1048576的倍数。

● “binlog_format”:默认设置为row,表示将binlog记录成每一行数据被修改的 形式,包括修改前和修改后的数据。建议不要对该参数进行修改,否则可能影响 您的正常使用。

● “log_timestamps”:控制错误日志消息的时间戳时区,以及写入文件的一般查 询日志消息和慢查询日志消息的时间戳时区。默认设置为系统时区,且无法修 改。

● “skip_name_resolve”:默认值为“ON”,表示跳过域名解析从白名单的IP中 判断是否可以建立连接。

● “innodb_strict_mode”:用于限制InnoDB的检查策略,默认值为“OFF”。

1.4.2 RDS 支持的最大 IOPS 是多少

华为云关系型数据库服务支持的IOPS取决于云硬盘(Elastic Volume Service,简称 EVS)的IO性能,具体请参见《云硬盘产品介绍》中“磁盘类型及性能介绍”的内容。

MySQL本地SSD盘的磁盘读写速率如下:

1-8 x86 通用型规格对应的 IOPS

vCPU 内存(GB) IOPS

2 4 2000

2 8 4000

4 8 5000

4 16 7000

8 16 8000

8 32 12000

16 64 14000

(35)

1-9 独享型规格对应的 IOPS

vCPU 内存(GB) IOPS

4 16 4500

4 32 9000

8 32 9000

8 64 18000

16 64 18000

16 128 36000

32 128 36000

32 256 72000

64 512 144000

1.4.3 如何提高 RDS 数据库的查询速度

可以参考如下建议:

● 如果产生了慢日志,可以通过查看慢日志来确定是否存在运行缓慢的SQL查询,

以及各个查询的性能特征,从而定位查询运行缓慢的原因。查询MySQL日志,请 参见慢查询日志。

● 查看云数据库RDS实例的CPU使用率指标,协助定位问题。具体请参见通过Cloud Eye监控。

● 可以创建只读实例专门负责查询,减轻主实例负载,分担数据库压力。

● 如果是实例规格较小但负载过高,您可以提高CPU/内存规格,具体请参见变更实 例的CPU和内存规格。

● 多表关联查询时,关联字段要加上索引。

● 可以指定字段或者添加where条件进行查询,避免用select*语句进行全表扫描。

1.4.4 排查 RDS for MySQL CPU 使用率高的原因和解决方法

使用云数据库MySQL时,如果您的CPU使用率很高或接近100%,会导致数据读写处理 缓慢、连接缓慢、删除出现报错等,从而影响业务正常运行。

解决方法一

分析慢SQL日志以及CPU使用率指标来定位效率低的查询,再优化查询效率低的语 句。

1. 查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如 果有),从而定位查询运行缓慢的原因。

查询MySQL日志,请参见慢查询日志。

2. 查看华为云关系型数据库实例的CPU使用率指标,协助定位问题。

请参见通过Cloud Eye监控。

(36)

3. 创建只读实例专门负责查询。减轻主实例负载,分担数据库压力。

4. 多表关联查询时,关联字段要加上索引。

5. 尽量避免用select*语句进行全表扫描,可以指定字段或者添加where条件。

解决方法二

分析当前数据库运行线程来定位效率低的查询,再通过华为云数据管理服务(Data Admin Service,简称DAS)提供的建议优化这些SQL语句来降低实例的CPU使用率以 提升系统效率。

步骤1 连接MySQL实例。

具体操作请参见《关系型数据库快速入门》,通过内网和公网连接实例的内容。

步骤2 执行以下命令,查看当前执行操作,定位效率低的查询。

show full processlist

查看Time和State列,如下图,长事务的ID为4038566。

步骤3 得到需要优化的查询后,您可以使用华为云数据管理服务(Data Admin Service,简 称DAS),通过SQL诊断查询,您可获知资源消耗大、执行耗时长、执行次数频繁的 SQL语句。可根据诊断建议进行优化,保持数据库性能的稳定性。

1. 登录到数据管理服务控制台。

2. 在顶部菜单栏选择“SQL操作 > SQL查询 > SQL诊断”,进入SQL诊断页面。

1-5 SQL 诊断-1

3. 在SQL诊断页面,单击“新增SQL性能诊断”,新增SQL诊断任务。在新增SQL性 能诊断弹出框中,您根据实际需要选择输入SQL语句或者上传SQL文件,然后单击

“确定”,完成创建SQL诊断任务。

1-6 SQL 诊断-2

(37)

1-7 SQL 诊断-3

4. 在SQL诊断列表页面,您可选择“数据库”、“日期范围”单击“搜索”,进行 筛选诊断报告。在诊断列表中,您可在“操作”栏查看诊断详情。

1-8 SQL 诊断任务查询

在SQL诊断详情页面,您可了解本次诊断任务的基本信息、诊断状态预览、诊断 列表,并查看SQL列表中SQL诊断详情内容,获取语句优化建议等信息。

1-9 SQL 诊断详情

(38)

1-10 诊断详情

说明

– SQL诊断功能会获取相关表结构和数据分布信息(非原始数据),该信息仅用于诊断逻 辑,不会存储到DAS服务器。

– 获取表结构和数据分布信息的过程中,可能会对实例带来额外负载,但对性能影响甚 微。

– SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服 务器上删除。

----结束

1.4.5 MySQL 数据库内存使用率过高怎么处理

对于用户核心业务相关的库

请扩容实例规格,具体请参见变更实例的CPU内存规格。

对于非用户核心业务相关的库

查看本地计算机的内存使用率,如果使用率曲线持续平缓,则无需处理。

对于用户核心业务相关但是数据库规格配置很高的库

1. 在业务低峰期,将数据库参数“performance_schema”的值调整为“OFF”,对 于MySQL 5.6及以下版本,需要重启数据库才能生效。

2. 通过CES监控面板,观察实例的内存使用情况。

如果实例的内存使用率仍持续保持较高:

– 请扩容实例规格。

– 调整数据库参数“innodb_buffer_pool_size”的值:

数据库实例为2GB规格,参考值268,435,456 Byte(256MB)。

数据库实例为4GB规格,参考值1,073,741,824 Byte(1GB)。

(39)

数据库实例为8GB规格,参考值3,221,225,472 Byte(3GB)。

数据库实例内存大于8GB规格,则无需调整。

须知

● 请根据业务实际情况,调整参数“innodb_buffer_pool_size”的值。

● MySQL本身具有内存动态平衡机制,90%以下您可无需关注。

1.4.6 RDS 实例磁盘满导致实例异常的解决方法

随着业务数据的增加,原来申请的数据库磁盘容量可能会不足。尤其当实例显示“磁 盘空间满”状态,且数据库不可进行写入操作,会导致实例异常,从而影响业务正常 运行。

解决方案

1. 随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户扩容磁 盘空间,确保磁盘空间足够。

请参见扩容磁盘。

如果原有规格的磁盘已是最大的,请先升级规格。

请参见变更规格。

2. 缩短Binlog本地保留时长。

请参见设置MySQL本地Binlog。

3. 请及时处理过期数据文件。

4. 云监控服务目前可以监控数据库CPU、内存、磁盘、连接数等指标,并且设置告 警策略,出现告警时可以提前识别风险。

请参见通过Cloud Eye监控。

1.4.7 RDS for MySQL 元数据锁 MDL 导致无法操作数据库的解决方

MetaData Lock即元数据锁,MetaData Lock主要为了保证元数据的一致性,用于处 理不同线程操作同一数据对象的同步与互斥问题。MySQL 5.5版本开始,引入了MDL 锁,但是因为MDL锁,会导致表级别的锁,无论是读或者写操作,都无法进行,导致 SQL的阻塞。本章介绍通过华为云数据管理服务(Data Admin Service,简称DAS)解 决该问题。

操作步骤

步骤1 登录管理控制台。

步骤2 单击管理控制台左上角的 ,选择区域和项目。

步骤3 选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。

步骤4 在“实例管理”页面,选择目标实例,选择操作列的“更多 > 登录”,进入数据管理 服务数据库登录界面。

(40)

您也可以在“实例管理”页面,单击目标实例名称,进入“基本信息”页面,在页面 右上角,单击“登录”,进入数据管理服务数据库登录界面。

步骤5 正确输入数据库用户名和密码,单击“登录”,即可进入您的数据库并进行管理。

步骤6 在顶部菜单栏选择“SQL操作”>“SQL查询”,打开一个SQL窗口。

步骤7 在SQL窗口执行如下SQL查看数据库所有线程状态。

show full processlist

1-11 执行结果

步骤8 查看“State”列是否出现大量“Waiting for table metadata lock”,“Waiting for table metadata lock”即表示出现阻塞,在对应的“Info”列可以查看到对应表的操 作,找到正在对该表进行操作的会话,记录“Id”。

步骤9 在SQL窗口执行如下命令解锁MDL锁。

kill Id

數據

表 1-2 参数说明 参数 说明 &lt; host &gt; 内网地址。在目标实例的“基本信息”页面,“连接信息”模块 的“内网地址”。 &lt;port&gt; 数据库端口,默认3306。在目标实例的“基本信息”页面,“连 接信息”模块的“数据库端口”。 &lt; userName &gt; 用户名,即云数据库RDS帐号(默认管理员帐号为root)。 &lt; caDIR &gt; CA证书路径,该文件需放在执行该命令的路径下。 使用root用户SSL连接数据库实例,示例如下:
表 1-3 参数说明 参数 说明 &lt; host &gt; 目标实例的弹性公网IP。 &lt;port&gt; 目标实例的数据库端口。 &lt; userName &gt; 用户名,即云数据库RDS帐号(默认管理员帐号为root)。 &lt; caDIR &gt; CA证书路径,该文件需放在执行该命令的路径下。 使用root用户SSL连接数据库实例,示例如下:
表 1-4 参数说明 参数 说明 名称 连接数据库的任务名称。若不填写,系统默认与Host一致。 主机 目标实例的内网地址。查看目标实例的内网地址及端口信息的步骤如 下: 1
表 1-6 参数说明 参数 说明 &lt;instance_ip&gt; 如果通过弹性云服务器连接,“instance_ip”是主机IP,即 “基本信息”页面该实例的“内网地址”。 如果通过连接了公网的设备访问,“instance_ip”为该实例已 绑定的“弹性公网IP”。 &lt;instance_port&gt; 端口,默认3306,当前端口,参考“基本信息”页面该实例的 “数据库端口”。 &lt;database_name &gt; 数据库名,即需要连接的数据库名(默认的管理数据库是mysql)。 s
+4

參考文獻

相關文件

按行业及在职员工数目抽选。对于在职员工为 20 人或以上的店铺,以及场所总 数较少的分层会进行全面统计。. 统计结果推算

按行业及在职员工数目抽选。对于在职员工为 20 人或以上的店铺,以及场所总 数较少的分层会进行全面统计。. 统计结果推算

修订数字 百分率 百分点 少于. 绝对数值为零 不适用

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

数值 按年变动 主要指标.. 年初至当期累计