最佳实践
文档版本 01
发布日期 2021-12-16
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
华为技术有限公司
地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129
网址: https://www.huawei.com
客户服务邮箱:[email protected] 客户服务电话:4008302118
目 录
1 概览...1
2 MySQL... 4
2.1 MySQL 使用规范... 4
2.2 自建 MySQL 迁移到 RDS for MySQL... 7
2.2.1 最佳实践概述...7
2.2.2 前提条件... 9
2.2.3 资源规划... 9
2.2.4 操作流程... 10
2.2.5 自建 MySQL 服务器... 11
2.2.5.1 创建 VPC 和安全组...11
2.2.5.2 创建 ECS(MySQL 服务器)... 15
2.2.5.3 安装社区版 MySQL... 17
2.2.5.4 创建 ECS 并安装 MySQL 客户端... 20
2.2.5.5 测试自建 MySQL 性能... 20
2.2.6 上云操作... 21
2.2.6.1 创建 RDS 实例... 21
2.2.6.2 创建 DRS 迁移任务... 24
2.2.6.3 确认数据迁移结果... 27
2.2.7 自建 MySQL 和 RDS for MySQL 性能对比...28
2.3 RDS MySQL 通过 DRS 搭建异地单主灾备... 29
2.3.1 最佳实践概述... 29
2.3.2 资源规划... 30
2.3.3 操作流程... 31
2.3.4 生产中心 RDS for MySQL 实例准备...33
2.3.4.1 创建 VPC 和安全组...33
2.3.4.2 创建 EIP... 34
2.3.6.3 RDS 容灾切换... 47
2.4 其他云 MySQL 迁移到 RDS for MySQL...48
2.4.1 最佳实践概述... 48
2.4.2 资源规划... 49
2.4.3 操作流程... 51
2.4.4 创建 VPC 和安全组... 51
2.4.5 创建 RDS for MySQL 实例... 54
2.4.6 其他云 MySQL 实例准备... 56
2.4.7 上云操作... 56
2.4.7.1 创建 DRS 迁移任务... 56
2.4.7.2 确认迁移结果...59
2.5 使用 RDS MySQL 搭建 WordPress...60
2.6 使用 RDS MySQL 搭建 Discuz!论坛...68
2.7 下载备份文件和恢复数据... 73
2.8 innodb_flush_log_at_trx_commit 和 sync_binlog 参数详解... 75
2.9 排查 RDS for MySQL CPU 使用率高的原因和解决方法...77
2.10 RDS for MySQL 元数据锁 MDL 导致无法操作数据库的解决方法...80
3 PostgreSQL...83
3.1 pgAdmin 基本操作使用指南... 83
3.1.1 连接云数据库 PostgreSQL... 83
3.1.2 创建数据库... 83
3.1.3 创建表... 84
3.1.4 使用 Query Tool 执行 SQL... 86
3.1.5 数据库监控... 88
3.1.6 备份恢复... 89
3.2 PoWA 插件使用... 91
3.2.1 插件介绍... 91
3.2.2 性能指标... 92
3.2.2.1 数据库级性能指标... 92
3.2.2.2 实例级性能指标... 95
3.2.3 PoWA 工作模式... 99
3.2.3.1 远程模式部署... 100
3.2.3.2 配置远程模式... 102
3.2.4 访问 PoWA... 104
3.2.5 示例... 105
3.2.6 其他扩展插件...106
4.2 使用导入导出功能将 ECS 上的 SQL Server 数据库迁移到 RDS for SQL Server... 112
4.3 修改 SQL Server 数据库实例的参数组...116
4.4 RDS SQL Server 支持 DMV 动态管理视图... 117
4.5 使用导入导出功能将本地 SQL Server 数据库迁移到 RDS for SQL Server...118
4.6 在 rdsuser 主帐号下创建并管理子帐号... 122
4.7 使用 DRS 迁移 SQL Server 数据... 127
4.8 创建 tempdb 临时数据文件... 127
4.9 Microsoft SQL Server 发布与订阅... 135
4.10 RDS for SQL Server 添加 c#CLR 程序集的使用方法...154
4.11 RDS for SQL Server 添加链接服务器... 157
4.12 RDS SQL Server 如何将线下 SSRS 报表服务部署上云... 159
4.13 RDS for SQL Server 收缩数据库... 165
4.14 使用 DAS 在 SQL Server 主备实例上分别创建和配置 Agent Job 和 Dblink... 168
4.15 创建实例定期维护 job... 172
1 概览
本手册基于华为云关系型数据库实践所编写,用于指导您完成相关设置,购买更符合 业务的数据库实例。
引擎 章节名称 简介
MySQL MySQL使用规范 介绍MySQL数据库命名规范及开发设计规 范。
自建MySQL迁移到RDS
for MySQL 介绍通过自建MySQL如何迁移到华为云RDS
for MySQL。
RDS MySQL通过DRS搭建
异地单主灾备 RDS for MySQL实例如何通过DRS服务搭建
异地单主灾备。
其他云MySQL迁移到RDS
for MySQL 介绍通过他云MySQL如何迁移到华为云RDS
for MySQL。
使用RDS MySQL搭建
WordPress 介绍通过华为云虚拟私有云、弹性云服务器
和RDS MySQL数据库,在LAMP环境下搭建 WordPress。
使用RDS MySQL搭建
Discuz!论坛 介绍通过华为云虚拟私有云、弹性云服务器
和RDS MySQL数据库,在LAMP环境下搭建 Discuz!。
下载备份文件和恢复数据 介绍下载备份文件并通过备份文件进行本地
存储备份或者恢复数据。
innodb_flush_log_at_trx_
commit和sync_binlog参 数详解
介绍innodb_flush_log_at_trx_commit和 sync_binlog参数,对性能,安全方面的影 响。
排查RDS for MySQL CPU 介绍数据库CPU使用率很高或接近100%的
引擎 章节名称 简介 Postgre
SQL 查看PostgreSQL慢日志 介绍如何查询PostgreSQL慢日志,并进行优
化。
pgAdmin基本操作使用指
南 介绍利用pgAdmin连接华为云数据库
PostgreSQL以及创建数据库和表基本操作。
PoWA插件使用 介绍如何使用PoWA插件,用于对
PostgreSQL数据库进行性能监控。
基于PostgreSQL Proxy实
现读写分离 介绍PostgreSQL Proxy实现读写分离的原理
和使用读写分离的基本流程。
SQLServer 恢复备份文件到RDS for SQL Server实例的版本限 制
介绍SQL Server恢复备份时的版本限制。
使用导入导出功能将ECS上 的SQL Server数据库迁移 到RDS for SQL Server
介绍如何将ECS自建的SQL Server数据库迁 移到RDS for SQL Server。
修改SQL Server数据库实 例的参数组
介绍如何修改SQL Server数据库实例的参数 组。
RDS SQL Server支持DMV 动态管理视图
介绍SQL Server如何通过DMV动态管理视 图。
使用导入导出功能将本地 SQL Server数据库迁移到 RDS for SQL Server
介绍如何将本地的SQL Server数据库迁移到 RDS for SQL Server。
在rdsuser主帐号下创建并
管理子帐号 介绍rdsuser主帐号的权限和如何在rdsuser
主帐号下创建并管理子帐号。
使用DRS迁移SQL Server
数据 介绍通过DRS迁移SQL Server数据的方法。
创建tempdb临时数据文件 介绍SQL Server如何创建tempdb临时数据
文件。
Microsoft SQL Server发
布与订阅 介绍华为云SQL Server如何提供订阅功能。
RDS for SQL Server添加
c#CLR程序集的使用方法 介绍SQL Server如何添加c#CLR程序集。
RDS for SQL Server添加
链接服务器 介绍SQL Server数据库实例如何创建链接服
务器访问另外一个SQL Server数据库实例。
引擎 章节名称 简介 使用DAS在SQL Server主
备实例上分别创建和配置 Agent Job和Dblink
介绍如何使用DAS在SQL Server主备实例上 分别创建和配置Agent Job和Dblink。
创建实例定期维护job 介绍如何创建定期执行的SQL agent job,
定期执行索引重建、统计信息更新及数据库 收缩。
2 MySQL
2.1 MySQL 使用规范
数据库命名规范
1. 所有的数据库对象名称(包括库名、表名、列名等)建议以小写字母命名,每个 单词之间用下划线分割。
2. 所有的数据库对象名称禁止使用MySQL保留关键字。
3. 数据库对象的命名要能做到见名知意,并且不超过32个字符。
4. 数据库中用到的临时表以“tmp”为前缀并以日期为后缀。
5. 数据库中用到的备份表以“bak”为前缀并以日期为后缀。
6. 在不同的库或表中,要保证所有存储相同数据的列名和列类型必须一致。
数据库基本设计规范
1. 所有表如果没有特殊需求,都要使用InnoDB存储引擎。InnoDB存储引擎支持事 务、行级锁、具有更好的恢复性、高并发下性能更强。
2. 数据库和表的字符集统一使用UTF8字符集,避免由于字符集的转换产生乱码。
3. 所有的表和字段都需要添加注释。使用comment从句添加表和列的备注,从设计 初期维护好数据字典。
4. 控制单表数据量的大小,建议控制在500万行以内。可以采用历史数据归档(常见 于日志表)和分库分表的方式控制单表数据的大小。
5. 谨慎使用MySQL分区表,避免跨分区查询,否则查询效率会降低。分区表在逻辑 上表现为一个表,但是在物理层面上将数据存储在多个文件。建议尽可能将分区
数据库字段设计规范
1. 优先为表中的每一列选择符合存储需要的最小的数据类型。优先考虑数字类型,
其次为日期或二进制类型,最后是字符类型。列的字段类型越大,建立索引占据 的空间就越大,导致一个页中的索引越少,造成IO次数增加,从而影响性能。
2. 整数型选择能符合需求的最短列类型,如果为非负数,声明需是无符号
(UNSIGNED)类型。
3. 每个字段尽可能具有NOT NULL属性。
4. 避免使用ENUM类型,可以用TINYINT类型替换。
修改ENUM值需要使用ALTER语句,ENUM类型的ORDER BY操作效率低,需要额 外操作,禁止使用数值作为ENUM的枚举值。
5. 实数类型使用DECIMAL,禁止使用FLOAT和DOUBLE类型。
FLOAT和DOUBLE在存储的时候,存在精度损失的问题,很可能在值的比较时,
得到错误的结果。
6. 使用datetime、timestamp类型来存储时间,禁止使用字符串替代。
7. 使用数字类型INT UNSIGNED存储IP地址,用INET_ATON、INET_NTOA可以在IP 地址和数字类型之间转换。
8. VARCHAR类型的长度应该尽可能短。VARCHAR类型虽然在硬盘上是动态长度 的,但是在内存中占用的空间是固定的最大长度。
9. 使用VARBINARY存储大小写敏感的变长字符串,VARBINARY默认区分⼤小写,没 有字符集概念,速度快。
数据库索引设计规范
1. 限制每张表上的索引数量,建议单张表索引不超过5个。索引并不是越多越好,索 引可以提高查询的效率,但会降低写数据的效率。有时不恰当的索引还会降低查 询的效率。
2. 禁止给表中的每一列都建立单独的索引。设计良好的联合索引比每一列上的单独 索引效率要高出很多。
3. 每个InnoDB表强烈建议有一个主键,且不使用更新频繁的列作为主键,不使用多 列主键。不使用UUID、MD5、字符串列作为主键。最好选择值的顺序是连续增长 的列作为主键,所以建议选择使用自增ID列作为主键。
4. 建议在下面的列上建立索引:
– 在SELECT,UPDATE,DELETE语句的WHERE从句上的列。
– 在ORDER BY,GROUP BY,DISTINCT上的列。
– 多表JOIN的关联列。
5. 索引列顺序:
– 区分度最高的放在联合索引的最左侧。区分度=列中不同值的数量/列的总行 数。
– 尽量把字段长度小的列放在联合索引的最左侧。因为字段长度越小,一页能 存储的数据量越大,IO性能也就越好。
8. 在VARCHAR字段上建立索引时,需指定索引长度,没必要对全字段建立索引,根 据实际文本区分度决定索引长度即可。
一般对字符串类型数据,长度为20的索引,区分度会高达90%以上,可以使用 count(distinct left(列名, 索引长度))/count(*) 的区分度来确定。
9. 对于频繁查询优先考虑使用覆盖索引。
覆盖索引指包含了所有查询字段的索引,不仅仅是WHERE从句GROUP BY从句中 的列,也包含SELECT查询的列组合,避免InnoDB表进行索引的二次查询。
数据库 SQL 开发规范
1. 在程序中,建议使用预编译语句进行数据库操作。预编译只编译一次,以后在该 程序中就可以调用多次,比SQL效率高。
2. 避免数据类型的隐式转换,隐式转换会导致索引失效。
禁止在where从句中对列进行函数转换和计算,会导致索引失效。
3. 避免使用双%号或前置%号的查询条件,这样无法利用到索引。
4. 禁止在查询中使用select *。原因如下:
– 会消耗更多的CPU和IP以及网络带宽资源。
– 无法使用覆盖索引。
– 可以减少表结构变更带来的影响。
5. 避免使用子查询,子查询会产生临时表,临时表没有任何索引,数据量大时严重 影响效率。建议把子查询转化成关联查询。
6. 避免使用JOIN关联太多的表,建议不要超过5个表的JOIN操作。需要JOIN的字 段,数据类型必须绝对一致。
每JOIN一个表会多占用一部分内存(由“join_buffer_size”控制),会产生临时 表操作,影响查询效率。
7. 尽量减少同数据库的交互次数,数据库更适合处理批量操作。
8. 使用IN代替OR IN操作可以有效的利用索引,IN的值不要超过500个。
9. 不使用反向查询,如:NOT IN、NOT LIKE 10. 禁止使用ORDER BY RAND()进行随机排序。
该操作会把表中所有符合条件的数据装载到内存中进行排序,消耗大量的CPU和 IO及内存资源。
推荐在程序中获取一个随机值,然后根据随机值从数据库获取数据。
11. 在不需要去重的情况下,要使用UNION ALL代替UNION。
UNION ALL不需要对结果集再进⼤行排序。
12. 合并多个相同操作到一起,可以提高处理效率,数据库更适合处理批量操作。
通过批量操作减少同数据库交互次数。
13. 超过100万行的批量写操作,要分批多次进行操作。
2.2 自建 MySQL 迁移到 RDS for MySQL
2.2.1 最佳实践概述
场景描述
本实践主要包含以下内容:
● 介绍RDS for MySQL和自建社区版MySQL版的性能对比。
● 介绍如何在华为云弹性云服务器 ECS上构建社区版MySQL和创建RDS for MySQL 实例。
● 介绍如何将自建MySQL迁移到RDS for MySQL实例。
RDS for MySQL 产品优势
如果自建MySQL和RDS实例不在同一个VPC内,相比于相同VPC的情况,需要配置两个 VPC的对等连接,部署架构图如图2-2所示。
本文档中以同一VPC为例,如何配置两个VPC的对等连接请参考配置对等连接。
图2-1 同一 VPC 的部署架构
图2-2 不同 VPC 场景的部署架构
服务列表
● 本实践端到端的数据为测试数据,仅供参考;更多关于MySQL数据迁移须知请单 击这里了解。
2.2.2 前提条件
● 拥有华为云实名认证账号。
● 账户余额大于等于0元。
2.2.3 资源规划
表2-1 资源规划
类别 子类 规划 备注
VPC VPC名称 vpc-01 自定义,易理解可识别。
所属Region 华东-上海一 选择和自己业务区最近的 Region,减少网络时延。
可用区 可用区3 -
子网网段 10.0.0.0/24 子网选择时建议预留足够的网络 资源。
子网名称 subnet-01 自定义,易理解可识别。
ECS-(MySQ L 服务 器)
ECS名称 ecs-mysql 自定义,易理解可识别。
规格 s6.xlarge.2 4vCPUs|
8GiB 本示例中选择的规格。
实际选择的规格需要结合业务场 景选择,请参考弹性云服务器的 实例规格。
操作系统 CentOS 7.6 64 - 系统盘 通用型SSD 40GiB - 数据盘 超高IO 100GiB -
弹性IP 现在购买 因为需要使用CloudShell登录云服 务器,因此此处需要购买弹性IP。
ECS-(MySQ L客户 端)
ECS名称 ecs-client 自定义,易理解可识别。
规格 s6.xlarge.2 4vCPUs|
8GiB 本示例中选择的规格。
实际选择的规格需要结合业务场 景选择,请参考弹性云服务器的 实例规格。
类别 子类 规划 备注
弹性IP 现在购买 因为需要使用CloudShell登录云服 务器,因此此处需要购买弹性IP。
RDS RDS实例名 rds-mysql 自定义,易理解可识别。
数据库版本 MySQL 5.7 -
实例类型 单机 本示例中为单机。
实际使用时,为提升业务可靠 性,推荐选择主备RDS实例。
存储类型 SSD云盘 -
可用区 可用区3 本示例中为单机。
实际业务场景推荐选择主备RDS 实例,此时建议将两个实例创建 在不同的可用区,提升业务可靠 性。
规格 通用性 4 vCPUs |
8GB -
DRS迁移 任务
迁移任务名 DRS-mysql 自定义 源数据库引
擎
MySQL 本示例中源数据库为自建
MySQL,即在华为云弹性云服务 器上安装社区版MySQL。
目标数据库 引擎
MySQL 本示例中目标数据库也是 MySQL,使用的华为云RDS实 例。
网络类型 VPC网络 本示例中采用“VPC网络”。
2.2.4 操作流程
构建MySQL服务器、购买RDS实例,并且将MySQL服务器数据迁移到RDS实例的整个 流程的主要任务流如图2-3所示。
图2-3 流程图
2.2.5 自建 MySQL 服务器
我们将在此章节介绍如何构建一个自建MySQL服务器。以在华为云上购买一个ECS并 在其上面安装MySQL为例,主要的任务如下:
1. 创建VPC和安全组
创建 VPC
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”。
进入虚拟私有云信息页面。
步骤4 单击“创建虚拟私有云”购买VPC。
步骤5 单击“立即创建”。
步骤6 返回VPC列表,查看创建VPC是否创建完成。
当VPC列表的VPC状态为“可用”时,表示VPC创建完成。
----结束
创建安全组
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云”。
进入虚拟私有云信息页面。
步骤7 单击“确定”。
步骤8 返回安全组列表,单击安全组名称“sg-01”。
步骤9 选择“入方向规则”,单击“添加规则”。
步骤10 配置入方向规则,放通数据库3306端口。
步骤11 放通22端口。
1. 为了提升弹性云服务器的安全性,可针对如下三个IP地址放通22端口。
– 本机IP地址 – 121.36.59.153 – 198.19.128.0/20
2. 选择“入方向规则”,单击“添加规则”。
3. 配置入方向规则,放通数据库22端口。
须知
源地址需要选择“IP地址组”,请在“访问控制 > IP地址组中配置 ”。
----结束
2.2.5.2 创建 ECS(MySQL 服务器)
购买弹性云服务器,用于安装MySQL社区版。
步骤1 登录华为云控制台。
2. 选择镜像和磁盘规格。
步骤6 单击“下一步:网络配置”。
1. 选择在创建VPC和安全组创建的VPC和安全组。
2. 选择购买弹性公网IP,公网带宽选择“按流量计费”。
步骤7 单击“下一步:高级配置”。
配置云服务器名称和密码。
步骤8 单击“下一步:确认配置”。
步骤9 确认配置信息后单击“立即购买”。
步骤10 返回弹性云服务器列表页面,查看弹性云服务器的创建进度。
当弹性云服务器的状态为“运行中”时,表示创建完成。
登录弹性云服务器
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“计算 > 弹性云服务器 ECS”。
步骤4 在弹性云服务器名称“ecs-mysql”所在行单击“远程登录”。
步骤5 选择“CloudShell登录”。
步骤6 输入root用户密码,完成登录。
说明
步骤2 执行如下命令,查看数据盘信息。
fdisk -l 回显如下:
步骤3 执行如下命令,初始化数据盘。
mkfs.ext4 /dev/vdb 步骤4 执行如下命令,挂载磁盘。
mount /dev/vdb /mysql
步骤5 执行如下命令,查看磁盘是否挂在成功。
df -h
当现实如下回显是,表示挂载成功。
mkdir -p /mysql/install/log cd /mysql/install
步骤7 下载依赖包并上传到/mysql/install/file命令。
步骤8 下载并安装社区版MySQL。
步骤9 执行如下命令,初始化MySQL。
/mysql/install/mysql-5.7/bin/mysqld --defaults-file= /etc/my.cnf --initialize- insecure
步骤10 执行如下命令,启动MySQL。
nohup /mysql/install/mysql-5.7/bin/mysqld --defaults-file= /etc/my.cnf &
步骤11 执行如下命令,连接MySQL。
/mysql/install/mysql-5.7/bin/mysql 步骤12 执行如下命令,创建root用户并授权。
grant all privileges on *.* to 'root'@'%' identified by 'xxx' with grant option;FLUSH PRIVILEGES;
----结束
2.2.5.4 创建 ECS 并安装 MySQL 客户端
步骤1 请参考创建ECS(MySQL服务器)创建MySQL客户端的弹性云服务器。
说明
● 确保和MySQL服务器所在ECS配置成相同Region、相同可用区、相同VPC、相同安全组。
● 不用购买数据盘。
● 云服务器名配置为:ecs-client。
● 其他参数同MySQL服务器的ECS配置。
步骤2 下载并安装MySQL客户,请参考安装MySQL客户端。
----结束
2.2.5.5 测试自建 MySQL 性能
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤8 依次执行如下命令,安装sysbench。
unzip 1.0.12.zip cd sysbench-1.0.12 ./autogen.sh ./configure make
make install
步骤9 执行如下命令,连接数据库并创建测试数据库“loadtest”。
mysql -u root -P 3306 -h <host> -p -e "create database loadtest"
步骤10 执行如下命令,使用sysbench命令导入测试背景数据到“loadtest”数据库。
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-
password=<password> --mysql-port=3306 --mysql-host=<host> --oltp-tables- count=150 --oltp-table-size=800000 --num-threads=20 prepare
步骤11 执行如下命令,压测数据。
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-
password=<password> --mysql-port=3306 --mysql-host=<host> --oltp-tables- count=150 --oltp-table-size=800000 --max-time=600 --max-requests=0 --num- threads=200 --report-interval=3 --forced-shutdown=1 run
须知
为了后续使用DRS迁移数据,我们先不删除数据库和表数据,等待迁移完数据库后,
再进行数据的清理,释放空间。
删除命令如下:sysbench --test=/usr/local/share/sysbench/tests/include/
oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password=<password> --mysql-port=3306 --mysql-host=<host> --oltp- tables-count=150 --oltp-table-size=800000 --max-time=3600 --max-
requests=0 --num-threads=200 cleanup
----结束
2.2.6 上云操作
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 云数据库 RDS”。
步骤4 单击“购买数据库实例”。
步骤5 配置实例名称和实例基本信息。
步骤6 选择实例规格。
步骤7 选择实例所属的VPC和安全组、配置数据库端口。
VPC和安全组已在创建VPC和安全组中准备好。
步骤8 配置实例密码。
当RDS实例运行状态为“正常”时,表示实例创建完成。
----结束
2.2.6.2 创建 DRS 迁移任务
本章节介绍创建DRS实例,将自建MySQL服务器上的loadtest数据库迁移到RDS MySQL实例。
迁移前检查
在创建任务前,需要针对迁移条件进行手工自检,以确保您的迁移任务更加顺畅。
本示例中,为MySQL到MySQL的入云迁移,您可以参考入云使用须知获取相关信息。
操作任务
介绍自建MySQL服务器上的loadtest数据库迁移到RDS MySQL实例的详细操作过程。
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。
步骤4 单击“创建迁移任务”。
步骤5 填写迁移任务参数:
1. 配置迁移任务名称。
3. 企业项目选择“default”。
步骤6 单击“下一步”。
迁移实例创建中,大约需要5-10分钟。
步骤7 配置源库信息和目标库数据库密码。
1. 配置源库信息。
2. 单击“测试连接”。
当界面显示“测试成功”时表示连接成功。
3. 配置目标库数据库用户名和密码。
4. 单击“测试连接”。
当界面显示“测试成功”时表示连接成功。
步骤8 单击“下一步”。
步骤9 确认迁移用户、快照模式和迁移对象。
启动中状态一般需要几分钟,请耐心等待。
当状态变更为“已结束”,表示迁移任务完成。
----结束
2.2.6.3 确认数据迁移结果
确认升级迁移结果有两种方式:
方式一:(自动)在DRS管理控制台查看迁移结果。DRS会针对迁移对象、用户、数 据等维度进行对比,从而给出迁移结果。
方式二:(手工)在RDS管理控制台查看迁移结果。直接登录数据库查看库、表、数 据是否迁移完成。手工确认数据迁移情况。
在 DRS 管理控制台查看迁移结果
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。
步骤4 单击DRS实例后名。
步骤5 单击“迁移对比”。
步骤6 然后选择“数据对比 全面检查”和“数据对比 割接复查”确认迁移结果。
预检查不通过项可以参考预检查不通过项修复方法查询解决方法。
----结束
在 RDS 管理控制台查看迁移结果
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华东-上海一”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 云数据库 RDS”。”。
步骤4 单击RDS实例后的“更多 > 登录”。
步骤5 在弹出的对话框中单击“测试连接”检查。
步骤6 连接成功后单击“登录”。
步骤7 输入实例密码,登录RDS实例。
步骤8 查看并确认目标库名和表名等。确认相关数据是否迁移完成。
须知
如果您使用本文档中的示例和过程用于体验华为云RDS for MySQL和DRS服务,提醒 您体验完成后及时删除ECS服务器、RDS实例和VPC资源,避免资源占用带来的不必要 的费用开销。
2.3 RDS MySQL 通过 DRS 搭建异地单主灾备
2.3.1 最佳实践概述
场景描述
本实践主要包含以下内容:
● 介绍如何创建RDS for MySQL实例。
● 介绍RDS for MySQL实例如何通过DRS服务搭建异地单主灾备。
前提条件
● 拥有华为云实名认证账号。
● 账户余额大于等于0元。
实现原理
RDS跨Region容灾实现原理说明:
在两个数据中心独立部署RDS for MySQL实例,通过DRS服务将生产中心MySQL库中 的数据同步到灾备中心MySQL库中,实现RDS for MySQL主实例和跨Region灾备实例 之间的实时同步。
使用说明
● 本实践的资源规划仅作为演示,实际业务场景资源以用户实际需求为准。
● 本实践端到端的数据为测试数据,仅供参考;更多关于MySQL实例灾备须知请单 击这里了解。
2.3.2 资源规划
表2-2 资源规划
类别 子类 规划 备注
生产中心VPC VPC名称 vpc-01 自定义,易理解可识别。
所属Region 华北-北京一 选择和自己业务区最近的 Region,减少网络时延。
可用区 可用区二 -
子网网段 192.168.0.0/24 子网选择时建议预留足够的网络 资源。
子网名称 subnet-3c29 自定义,易理解可识别。
灾备中心VPC VPC名称 vpc-DR 自定义,易理解可识别。
所属Region 华北-北京四 选择和自己业务区最近的 Region,减少网络时延。
可用区 可用区一 -
子网网段 192.168.0.0/24 子网选择时建议预留足够的网络 资源。
子网名称 subnet-ac27 自定义,易理解可识别。
生产中心MySQL 实例
RDS实例名
称 rds-database-01 自定义,易理解可识别。
所属Region 华北-北京一 选择和自己业务区最近的 Region,减少网络时延。
数据库版本 MySQL 8.0 -
实例类型 单机 本示例中为单机。
实际使用时,为提升业务可靠 性,推荐选择主备RDS实例。
存储类型 超高IO -
类别 子类 规划 备注 性能规格 通用增强型 2 vCPUs
| 4GB -
灾备中心MySQL 实例
RDS实例名
称 rds-DR 自定义,易理解可识别。
所属Region 华北-北京四 选择和自己业务区最近的 Region,减少网络时延。
数据库版本 MySQL 8.0 -
实例类型 单机 本示例中为单机。
实际使用时,为提升业务可靠 性,推荐选择主备RDS实例。
存储类型 SSD云盘 -
可用区 可用区一 本示例中为可用区一。
实际业务场景推荐选择主备RDS 实例,此时建议将两个实例创建 在不同的可用区,提升业务可靠 性。
性能规格 通用型 2 vCPUs |
8GB -
DRS灾备 任务
灾备任务名 称
DRS-DR-Task 自定义,易理解可识别。
源数据库引 擎
MySQL 本示例中源数据库为在“华北-北 京一”创建的业务实例。
目标数据库
引擎 MySQL 本示例中目标数据库为在“华北-
北京四”创建的灾备实例。
网络类型 公网网络 本示例中采用“公网网络”。
2.3.3 操作流程
创建RDS业务实例以及灾备实例,并且将业务实例数据迁移到灾备实例的整个流程的 主要任务流如下图所示。
图2-4 流程图
2.3.4 生产中心 RDS for MySQL 实例准备
2.3.4.1 创建 VPC 和安全组
本章节介绍创建在生产中心创建RDS实例所属VPC和安全组。
创建 VPC
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华北-北京一”。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”。
步骤4 单击“创建虚拟私有云”。
步骤5 在“创建虚拟私有云”页面,根据页面完成基本信息、子网配置和地址配置。
图2-5 创建 VPC
步骤6 单击“立即创建”,完成生产VPC创建。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”。
步骤4 在左侧导航树,选择“访问控制 > 安全组”。
步骤5 单击“创建安全组”。
图2-6 创建安全组
步骤6 单击“确定”,完成生产安全组创建。
----结束
2.3.4.2 创建 EIP
外部通过EIP访问应用系统,DRS通过EIP连接源数据库,需要为源数据库绑定EIP。
步骤4 单击“购买弹性公网IP”。
步骤5 在“购买弹性公网IP”页面,根据页面完成基本信息和带宽配置。
图2-7 购买 EIP
步骤6 单击“立即购买”,完成EIP购买。
----结束
2.3.4.3 创建 RDS for MySQL 实例
本章节介绍创建MySQL业务实例,选择已规划的业务实例所属VPC,并为业务实例
(源实例)绑定EIP。
创建 RDS 实例
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华北-北京一”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 云数据库 RDS”。
步骤4 单击“购买数据库实例”。
步骤5 填选实例信息后,单击“立即购买”。
图2-8 选择引擎版本信息
图2-9 选择规格信息
图2-10 选择已规划的网络信息
图2-11 设置管理员密码
步骤6 进行规格确认。
● 如果需要重新选择实例规格,单击“上一步”,回到上个页面修改实例信息。
● 如果规格确认无误,单击“提交”,完成购买实例的申请。
步骤7 参考如下步骤,在RDS实例管理界面,为步骤6创建的RDS实例绑定弹性公网IP。
1. 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例基本信息页 面。
图2-12 实例管理
2. 选择“连接管理”页签,单击“公网地址”处的“绑定”。
3. 在弹出框中,显示“未绑定”状态的弹性公网IP,选择已规划的弹性公网IP,单击
“确定”,提交绑定任务。
图2-13 绑定弹性公网 IP
2.3.5.1 创建 VPC 和安全组
灾备中心的实例和生产中心实例在不同区域,本章节介绍创建在灾备中心创建RDS实 例所属VPC和安全组。
创建 VPC
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华北-北京四”。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”。
步骤4 单击“创建虚拟私有云”。
步骤5 在“创建虚拟私有云”页面,根据页面完成基本信息、子网配置和地址配置。
图2-14 创建灾备 VPC
步骤6 单击“立即创建”,完成灾备VPC创建。
----结束
创建安全组
图2-15 创建安全组
步骤6 单击“确定”,完成灾备安全组创建。
----结束
2.3.5.2 创建 RDS for MySQL 实例
本章节介绍创建MySQL灾备实例,选择已规划的灾备实例所属VPC。
创建 RDS 实例
步骤1 登录华为云控制台。
图2-16 选择灾备实例引擎版本信息
图2-17 选择灾备实例规格信息
图2-19 设置灾备实例管理员密码
步骤6 进行规格确认。
● 如果需要重新选择实例规格,单击“上一步”,回到上个页面修改实例信息。
● 如果规格确认无误,单击“提交”,完成购买实例的申请。
----结束
2.3.6 搭建容灾关系
2.3.6.1 创建 DRS 灾备实例
本章节介绍创建DRS灾备实例,创建时选择灾备中心创建的RDS for MySQL实例。
操作步骤
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华北-北京四”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。
步骤4 选择左侧“实时灾备管理”,单击右上角“创建灾备任务”。
步骤5 灾备类型选择“单主灾备”,灾备关系选择“本云为备”,灾备数据库实例选择在
“华北-北京四”新创建的MySQL灾备实例,单击“下一步”,开始创建灾备实例。
图2-20 设置基本信息
图2-21 设置灾备实例信息
步骤6 返回“实时灾备管理”页面,可以看到新创建的灾备实例。
图2-22 创建完成
----结束
2.3.6.2 配置灾备任务
本章节介绍配置DRS灾备实例,包含源库和目标库的配置。
操作步骤
步骤1 在“实时灾备管理”页面,选择已创建的灾备任务,单击“编辑”。
步骤2 根据界面提示,将灾备实例的弹性公网IP加入生产中心MySQL实例所属安全组的入方 向规则,选择TCP协议,端口为生产中心MySQL实例的端口号。
图2-23 添加安全组规则
源库信息中的“IP地址或域名”填写生产中心MySQL实例绑定的EIP,“端口”填写生 产中心MySQL实例的端口号。测试通过后,单击“下一步”。
图2-24 编辑灾备任务
步骤3 设置流速模式后,单击“下一步”。
图2-25 设置流速模式
步骤4 查看预检查100%通过,单击“下一步”。
图2-26 预检查通过
步骤5 设置参数后,单击“下一步”。
图2-27 设置参数
步骤6 单击“启动任务”。
图2-28 启动任务
步骤7 查看任务状态为“灾备中”。
图2-29 查看任务状态
步骤8 单击灾备实例名称,确认灾备对比、灾备进度、灾备数据。
图2-30 灾备对比
图2-31 灾备进度
图2-32 灾备数据
----结束
2.3.6.3 RDS 容灾切换
生产中心数据库故障时,需要手动将灾备数据库实例切换为可读写状态。切换后,将 通过灾备实例写入数据,并同步到源库。
操作步骤
步骤1 生产中心源库发生故障,例如:源库无法连接、源库执行缓慢、CPU占比高。
步骤2 收到SMN邮件通知。
图2-33 邮件通知
步骤3 查看灾备任务时延异常。
图2-34 时延异常
图2-35 主备倒换
图2-36 倒换完成
步骤6 在应用端修改数据库连接地址后,可正常连接数据库,进行数据读写。
----结束
2.4 其他云 MySQL 迁移到 RDS for MySQL
2.4.1 最佳实践概述
场景描述
本实践主要包含以下内容:
● 介绍如何创建RDS for MySQL实例。
● 介绍如何将其他云MySQL迁移到RDS for MySQL实例。
前提条件
● 拥有华为云实名认证账号。
● 账户余额大于等于0元。
部署架构
图2-37 部署架构图
服务列表
● 虚拟私有云 VPC
● 云数据库 RDS
● 数据复制服务 DRS
使用说明
● 本实践的资源规划仅作为演示,实际业务场景资源以用户实际需求为准。
● 本实践端到端的数据为测试数据,仅供参考;更多关于MySQL数据迁移须知请单 击这里了解。
2.4.2 资源规划
表2-3 资源规划
类别 子类 规划 备注
VPC VPC名称 vpc-src-172 自定义,易理解可识别。
所属Region 测试Region 现网实际选择时建议选择和自己 业务区最近的Region,减少网络 时延。
可用区 可用区3 -
子网网段 172.16.0.0/16 子网选择时建议预留足够的网络
类别 子类 规划 备注 RDS实例 RDS实例名
称 rds-mysql 自定义,易理解可识别。
数据库版本 MySQL 5.7 -
实例类型 单机 本示例中为单机。
实际使用时,为提升业务可靠 性,推荐选择主备RDS实例。
存储类型 SSD云盘 -
可用区 可用区一 本示例中为可用区一。
实际业务场景推荐选择主备RDS 实例,此时建议将两个实例创建 在不同的可用区,提升业务可靠 性。
性能规格 通用型 2 vCPUs |
8GB -
DRS迁移 任务
迁移任务名 DRS-mysql 自定义。
源数据库引 擎
MySQL -
目标数据库 引擎
MySQL -
网络类型 公网网络 本示例中采用公网网络。
2.4.3 操作流程
图2-38 流程图
2.4.4 创建 VPC 和安全组
创建VPC和安全组,为创建RDS for MySQL实例准备好网络资源和安全组。
创建 VPC
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华南-广州”。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”,进入虚拟私有云信息页 面。
步骤4 单击“创建虚拟私有云”,购买VPC。
步骤5 单击“立即创建”。
步骤6 返回VPC列表,查看创建VPC是否创建完成。
当VPC列表的VPC状态为“可用”时,表示VPC创建完成。
----结束
创建安全组
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华南-广州”。
步骤3 单击左侧的服务列表图标,选择“网络 > 虚拟私有云 VPC”,进入虚拟私有云信息页
步骤4 选择“访问控制 > 安全组”。
步骤5 单击“创建安全组”。
步骤6 填写安全组名称等信息。
步骤7 单击“确定”。
步骤8 返回安全组列表,单击安全组名称“sg-DRS01”。
步骤9 选择“入方向规则”,单击“添加规则”。
----结束
2.4.5 创建 RDS for MySQL 实例
本章节介绍创建RDS for MySQL实例。
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域“华南-广州”。
步骤3 单击左侧的服务列表图标,选择“数据库 > 云数据库 RDS”。
步骤4 单击“购买数据库实例”。
步骤5 配置实例名称和实例基本信息。
步骤6 选择实例规格。
步骤7 选择实例所属的VPC和安全组、配置数据库端口。
VPC和安全组已在创建VPC和安全组中准备好。
步骤8 配置实例密码。
步骤9 单击“立即购买”。
2.4.6 其他云 MySQL 实例准备
前提条件
● 已购买其他云MySQL实例。
● 帐号权限符合要求,具体见帐号权限要求。
帐号权限要求
当使用DRS将其他云MySQL数据库的数据迁移到本云云数据库MySQL实例时,帐号权 限要求如表2-4所示,授权的具体操作请参考授权操作。
表2-4 迁移帐号权限
迁移类型 全量迁移 全量+增量迁移
源数据库(MySQL) SELECT、SHOW VIEW、
EVENT。 SELECT、SHOW VIEW、
EVENT、LOCK TABLES、
REPLICATION SLAVE、
REPLICATION CLIENT。
网络设置
源数据库MySQL实例需要开放外网域名的访问。
白名单设置
其他云MySQL实例需要将目标端DRS迁移实例的弹性公网IP添加到其网络白名单中,
目标端DRS迁移实例的弹性公网IP在创建完DRS迁移实例后可以获取到,参考创建DRS 迁移任务的步骤6,确保源数据库可以与DRS实例互通,各厂商云数据库添加白名单的 方法不同,请参考各厂商云数据库官方文档进行操作。
2.4.7 上云操作
2.4.7.1 创建 DRS 迁移任务 创建迁移任务
步骤1 登录华为云控制台。
2. 填写迁移数据并选择模板库。
这里的目标库选择创建RDS for MySQL实例创建的RDS实例。
步骤6 单击“下一步”。
迁移实例创建中,大约需要5-10分钟。迁移实例创建完成后可获取弹性公网IP信息。
步骤7 配置源库信息和目标库数据库密码。
步骤8 单击“下一步”。
步骤9 在“迁移设置”页面,设置流速模式、迁移用户和迁移对象。
● 流速模式:不限速
● 迁移对象:全部迁移
步骤10 单击“下一步”,在“预检查”页面,进行迁移任务预校验,校验是否可进行任务迁 移。
● 查看检查结果,如有不通过的检查项,需要修复不通过项后,单击“重新校验”
按钮重新进行迁移任务预校验。
● 预检查完成后,且所有检查项结果均成功时,单击“下一步”。
步骤11 参数对比。
● 若您选择不进行参数对比,可跳过该步骤,单击页面右下角“下一步”按钮,继 续执行后续操作。
● 若您选择进行参数对比,对于常规参数,如果源库和目标库存在不一致的情况,
建议将目标数据库的参数值通过“一键修改”按钮修改为和源库对应参数相同的 值。
步骤12 单击“提交任务”。
返回DRS实时迁移管理,查看迁移任务状态。
当状态变更为“已结束”,表示迁移任务完成。
----结束
2.4.7.2 确认迁移结果
确认迁移结果可参考如下两种方式:
1. DRS会针对迁移对象、用户、数据等维度进行对比,从而给出迁移结果,详情参 见在DRS管理控制台查看迁移结果。
2. 直接登录数据库查看库、表、数据是否迁移完成。手工确认数据迁移情况,详情 参见在RDS管理控制台查看迁移结果。
在 DRS 管理控制台查看迁移结果
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择目标区域。
步骤3 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。
步骤4 单击DRS实例名称。
步骤5 单击“迁移对比”,选择“对象级对比”,单击“开始对比”,校验数据库对象是否 缺失。
步骤6 选择“数据级对比”,单击“创建对比任务”,查看迁移的数据库和表内容是否一 致。
步骤7 选择“用户对比”,查看迁移的源库和目标库的账号和权限是否一致。
----结束
在 RDS 管理控制台查看迁移结果
步骤1 登录华为云控制台。
步骤5 在弹出的对话框中输入密码单击“测试连接”检查。
步骤6 连接成功后单击“登录”。
步骤7 输入实例密码,登录RDS实例。
步骤8 查看并确认目标库名和表名等。确认相关数据是否迁移完成。
----结束
2.5 使用 RDS MySQL 搭建 WordPress
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服 务器上搭建属于自己的网站,本文教您通过华为云虚拟私有云、弹性云服务器和RDS MySQL数据库,轻松几步,在LAMP环境下搭建WordPress。
1. 设置网络
2. 购买弹性云服务器
3. 搭建LAMP环境
4. 购买并配置RDS
5. 安装WordPress
准备工作
在搭建过程中,您会使用以下服务或工具:
● 云服务:华为云弹性云服务器ECS和关系型数据库 RDS for MySQL。
● MySQL客户端:配置数据库工具。
● PuTTY:远程登录工具。
说明
以上软件来自第三方网站,仅作示例。若搭建的网站做商业用途,建议自行获取需要的版本软
步骤4 在“虚拟私有云”页面,单击“创建虚拟私有云”购买VPC,以vpc-01为例。
步骤5 在基本信息页面进行设置,自定义VPC及子网名称,根据实际需求选择可用分区等,
网段选择“192.168”,其他均可以保持默认配置,单击“立即创建”提交任务。创建 成功后,返回控制台页面。
步骤6 在“网络控制台”选择“访问控制 > 安全组”,单击“创建安全组”,以sg-01为例。
步骤7 在安全组界面,单击操作列的“配置规则”,进入安全组详情界面。
步骤8 单击“一键放通”,开通常用端口和网络协议。
一键放通功能默认放通22、3389、80、443端口和ICMP协议。适用于需要远程登录、
公网ping及用于网站服务的云服务器场景。
图2-39 添加安全组规则
----结束
购买弹性云服务器
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域和项目。
步骤3 选择“计算 > 弹性云服务器”。进入弹性云服务器信息页面。
步骤4 在管理控制台购买ECS,关于计费详情,请参见产品价格详情。
1. 完成基础配置:选择“按需计费”、“区域”和“镜像”,其他默认。
此处以公共镜像“CentOS7.4 64bit for P2v(40GB)”为例,如图2-40所示。
图2-40 选择镜像
c. 在“弹性公网IP”处选择“现在购买”。
3. 高级配置:设置ECS名称和密码,单击“下一步:确认订单”。
a. 云服务名称,以ecs-01为例。
b. 设置密码。
4. 确认配置。确认无误,单击“立即购买”。
步骤5 ECS创建成功后,您可通过华为云管理控制台,对其进行查看或管理。
----结束
搭建 LAMP 环境
步骤1 下载PuTTY客户端。
步骤2 解压文件后,双击“putty”,显示配置界面。
步骤3 选择“Session”,配置相关信息后,如图2-41,单击“Open”。
1. 在“Host Name (or IP address)”下的输入框中输入ECS的弹性IP地址,其他配置 均保持默认值。
2. 在“Saved Sessions”中输入名称,此处以Wordpress为例,单击“Save”,保存 会话配置。
图2-41 配置 PuTTY
步骤5 通过PuTTY登录云服务器,直接获取root权限,可以直接在PuTTY内输入命令。
请输入MySQL或PHP等软件安装命令,此处以安装PHP为例:
yum install -y httpd php php-fpm php-server php-mysql mysql 结果显示如下,表明安装完成。
Complete
步骤6 安装解压软件。
yum install -y unzip
步骤7 下载并解压WordPress安装文件。
wget -c https://cn.wordpress.org/wordpress-4.9.1-zh_CN.tar.gz tar xzf wordpress-4.9.1-zh_CN.tar.gz -C /var/www/html
chmod -R 777 /var/www/html 步骤8 安装完成后,依次启动相关服务。
systemctl start httpd.service systemctl start php-fpm.service ----结束
购买并配置 RDS
步骤1 请根据具体需求购买华为云RDS for MySQL数据库实例。
● 选择MySQL5.6或MySQL5.7版本,创建以“rds-01”为例的数据库实例。
● 确保RDS和ECS使用同一个安全组,以便用户正常访问数据库。
● 设置root用户对应的密码,并妥善管理您的密码,因为系统将无法获取您的密码 信息。
步骤2 进入RDS console,在“实例管理”页面,单击实例名称“rds-01”,进入实例的“基 本信息”页签。
步骤3 选择“数据库管理”页签,单击“创建数据库”,在弹出框中输入数据库名称,以
“wordpress”为例,选择字符集并授权数据库帐号,单击“确定”。
图2-42 创建数据库
步骤4 选中“帐号管理”页签,单击“创建帐号”。在“创建帐号”弹出框中,输入数据库 帐号,以“tony”为例,授权数据库选择步骤3中创建的“wordpress”数据库,并输 入密码和确认密码,单击“确定”。
图2-43 创建帐号
----结束
安装 WordPress
步骤1 单击弹性云服务器实例列表“操作”列下的“远程登录”,远程登录弹性云服务器。
步骤2 在本地windows浏览器里输入地址:http://弹性IP地址/wordpress,访问 WordPress,单击“现在就开始!”。
其中,弹性IP地址为购买弹性云服务器时所创建的弹性IP地址。
图2-44 访问
步骤3 输入连接数据库的相关信息,单击“提交”。
● 数据库名为之前创建的“wordpress”数据库。
● 用户名为之前创建的“tony”数据库帐号。
● 密码为创建“tony”帐号时,您设置的密码。
● 数据库主机为数据库实例“rds-01”的内网IP。
图2-45 输入连接信息
图2-46 数据库配置验证通过
步骤5 设置博客登录的“站点标题”、“用户名”和“密码”。
图2-47 设置基本信息
步骤6 安装成功后,单击“登录”。
图2-48 安装成功
步骤7 在登录页面,输入用户名和密码,单击“登录”。
图2-49 登录
步骤8 您的WordPress搭建成功。
图2-50 结果验证
度定制的论坛服务。本文教您通过华为云虚拟私有云、弹性云服务器和RDS MySQL数 据库,轻松几步,在LAMP环境下搭建Discuz!。
1. 设置网络
2. 创建ECS
3. 搭建LAMP环境
4. 购买并配置RDS
5. 安装Discuz!
准备工作
在搭建过程中,您会使用以下服务或工具:
● 云服务:华为云ECS和RDS。
● PuTTY:远程登录工具。
● 安装包版本。
– Apache:2.4.6 – MySQL:5.4.16 – PHP:5.4.16
说明
以上软件来自第三方网站,仅作示例。若搭建的网站做商业用途,建议自行获取需要的版本软 件,以应对不同需求。
设置网络
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域和项目。
步骤3 选择“网络>虚拟私有云”。进入虚拟私有云信息页面。
步骤4 在“虚拟私有云”页面,单击“创建虚拟私有云”购买VPC,以vpc-01为例。
步骤5 在基本信息页面进行设置,自定义VPC及子网名称,根据实际需求选择可用分区等,
网段选择“192.168”,其他均可以保持默认配置,单击“立即创建”提交任务。创建 成功后,返回控制台页面。
步骤6 在“网络控制台”选择“访问控制 > 安全组”,单击“创建安全组”,以sg-01为例。
步骤7 在安全组界面,单击操作列的“配置规则”,进入安全组详情界面。
步骤8 单击“一键放通”,开通常用端口和网络协议。
一键放通功能默认放通22、3389、80、443端口和ICMP协议。适用于需要远程登录、
图2-51 添加安全组规则
----结束
购买弹性云服务器
步骤1 登录华为云控制台。
步骤2 单击管理控制台左上角的 ,选择区域和项目。
步骤3 选择“计算 > 弹性云服务器”。进入弹性云服务器信息页面。
步骤4 在管理控制台购买ECS,关于计费详情,请参见产品价格详情。
1. 完成基础配置:选择“按需计费”、“区域”和“镜像”,其他默认。
此处以公共镜像“CentOS7.4 64bit for P2v(40GB)”为例,如图2-52所示。
图2-52 选择镜像
2. 网络配置:选择VPC和安全组,购买弹性公网IP,其他默认。
a. 选择之前创建的虚拟私有云vpc-01。
b. 选择之前步骤创建的安全组sg-01。
c. 在“弹性公网IP”处选择“现在购买”。
3. 高级配置:设置ECS名称和密码,单击“下一步:确认订单”。
a. 云服务名称,以ecs-01为例。
b. 设置密码。
步骤2 解压文件后,双击“putty”,显示配置界面。
步骤3 选择“Session”,配置相关信息后,如图2-53,单击“Open”。
1. 在“Host Name (or IP address)”输入ECS弹性IP地址,其他配置均保持默认值。
2. 在“Saved Sessions”中输入名称,此处以“Discuz”为例,单击“Save”,保存 会话配置。
图2-53 配置 PuTTY
步骤4 在登录界面中,输入ECS的用户名和密码,即可登录ECS。
步骤5 安装Apache、MySQL或PHP等软件。
通过PuTTY登录云服务器,直接获取root权限,可以直接在PuTTY内输入命令。
请输入软件安装命令,此处以PHP为例。
yum install -y httpd php php-fpm php-server php-mysql mysql 结果显示如下,表明安装完成。
购买并配置 RDS
步骤1 请根据具体需求购买华为云RDS for MySQL数据库实例。
● 选择MySQL5.6或MySQL5.7版本,创建以“rds-01”为例的数据库实例。
● 确保RDS和ECS使用同一个安全组,以便用户正常访问数据库。
● 设置root用户对应的密码,并妥善管理您的密码,因为系统将无法获取您的密码 信息。
步骤2 云数据库RDS创建成功后,您可以登录华为云管理控制台,对其进行查看或管理。
----结束
安装 Discuz!
步骤1 单击弹性云服务器实例列表“操作”列下的“远程登录”,远程登录弹性云服务器,
执行以下命令,下载Discuz!软件。
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip 1. 执行以下命令,解压Discuz!安装包。
unzip Discuz_X3.3_SC_UTF8.zip
2. 执行以下命令,将解压后的“upload”中的所有文件,复制到“/var/www/
html/”目录。
cp -R upload/* /var/www/html/
3. 执行以下命令,将写入权限赋予给其他用户。
chmod -R 777 /var/www/html
步骤2 在本地windows浏览器里输入地址:http://弹性IP地址/install,进入安装界面,按照 Discuz!安装向导进行安装。
其中,弹性IP地址为购买弹性云服务器时所创建的弹性IP地址,“install”必须小写。
1. 确认协议,并单击“我同意”。
2. 开始安装后,检查安装环境并单击“下一步”。
3. 设置运行环境,并单击“下一步”。
4. 安装数据库,填写数据库信息,单击“下一步”完成安装。
– 数据库服务器地址即为“rds-01”的私有IP地址。
– 数据库密码是“rds-01”配置的数据库管理员root帐号对应的密码。
– 自定义管理员信息。
步骤3 Discuz!安装完成后,在浏览器中输入http://弹性IP地址/forum.php,可登录论坛主 页,则说明网站搭建成功。
----结束
2.7 下载备份文件和恢复数据
您可以下载备份文件,并通过备份文件进行本地存储备份或者恢复数据。
前提条件
通过下载备份文件恢复数据到自建MySQL,请确保恢复目标MySQL版本不低于备份源 RDS for MySQL版本。
恢复数据过程中,您可通过命令查看任务进程:
ps -ef | grep mysql
操作步骤
步骤1 下载qpress程序,并上传到ECS进行安装。
在网站下载文件“qpress-11-linux.x64.tar”, 并上传到ECS上。
tar -xvf qpress-11-linux-x64.tar mv qpress /usr/bin/
步骤2 下载XtraBackup软件,并上传到ECS进行安装。
须知
● 对于MySQL 5.6和5.7,请下载XtraBackup 2.4.9及其以上版本。
● 对于MySQL 8.0,请下载XtraBackup 8.0及其以上版本。
在网站下载XtraBackup,并上传到ECS上,下面以下载“percona- xtrabackup-24-2.4.9-1.el7.x86_64.rpm”为例。
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm --nodeps --force 步骤3 在ECS上解压下载好的全备文件。
1. 创建一个临时目录backupdir。
mkdir backupdir 2. 解压文件。
xbstream -x -p 4 < ./全备文件.qp -C ./backupdir/
– 5.6和5.7版本执行:innobackupex --parallel 4 --decompress ./backupdir – 8.0版本执行:xtrabackup --parallel 4 --decompress --target-dir=./
backupdir
find ./backupdir/ -name '*.qp' | xargs rm -f
说明
如果是MySQL5.7, 需执行如下命令停止MySQL数据库服务:
/bin/systemctl stop mysqld.service 2. 备份原来的数据库目录。
mv /var/lib/mysql/data /var/lib/mysql/data_bak 3. 创建新的数据库目录并修改目录权限。
mkdir /var/lib/mysql/data
chown mysql:mysql /var/lib/mysql/data 步骤6 拷贝全备文件,并修改目录权限。
● 5.6和5.7版本执行:innobackupex --defaults-file=/etc/my.cnf --copy-back ./
backupdir
● 8.0版本执行:xtrabackup --defaults-file=/etc/my.cnf --copy-back --target- dir=./backupdir
chown -R mysql:mysql /var/lib/mysql/data 步骤7 启动数据库。
service mysql start 说明
如果是MySQL5.7, 需执行如下命令启动数据库:
/bin/systemctl start mysqld.service 步骤8 登录数据库,查看数据恢复结果。
mysql -u -root show databases
图2-54 查看数据恢复结果
----结束
表2-5 参数说明
参数名称 允许值 描述
innodb_flush_log_at
_trx_commit 0, 1, 2 当重新安排并批量处理与提交相关的I/O操作 时,可以控制磁盘的写入策略,严格遵守 ACID合规性和高性能之间的平衡,该参数默 认值为“1”,详情见参数解析。
sync_binlog 0~
4,294,967,2 95
同步binlog(MySQL持久化到硬盘,或依赖 于操作系统)。
参数解析
● innodb_flush_log_at_trx_commit:
– 0:日志缓存区将每隔一秒写到日志文件中,并且将日志文件的数据刷新到磁 盘上。该模式下在事务提交时不会主动触发写入磁盘的操作。
– 1:每次事务提交时MySQL都会把日志缓存区的数据写入日志文件中,并且 刷新到磁盘中,该模式为系统默认。
– 2:每次事务提交时MySQL都会把日志缓存区的数据写入日志文件中,但是 并不会同时刷新到磁盘上。该模式下,MySQL会每秒执行一次刷新磁盘操 作。
说明
● 当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事 务数据的丢失;
● 当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld服务崩溃或者服务 器主机宕机的情况下,日志缓存区只有可能丢失最多一个语句或者一个事务;
● 当设置为2,该模式速度较快,较取值为0情况下更安全,只有在操作系统崩溃或者系 统断电的情况下,上一秒钟所有事务数据才可能丢失;
● sync_binlog=1 or N
默认情况下,并不是每次写入时都将binlog日志文件与磁盘同步。因此如果操作 系统或服务器崩溃,有可能binlog中最后的语句丢失。
为了防止这种情况,你可以使用“sync_binlog”全局变量(1是最安全的值,但 也是最慢的),使binlog在每N次binlog日志文件写入后与磁盘同步。
推荐配置组合
表2-6 配置组合