更新时间:2022-02-10 GMT+08:00

创建MySQL数据库

应用场景

MySQL是目前最受欢迎的开源数据库之一,其性能卓越,搭配LAMP(Linux + Apache + MySQL + Perl/PHP/Python),成为WEB开发的高效解决方案。 本教程将指导您如何通过Terraform脚本创建一个RDS for MySQL实例 。

操作步骤

  1. 规划并创建虚拟私有云、子网及安全组。

    1. 若需要创建新的网络配置,请参考典型网络配置
    2. 若使用已创建的网络配置,需要使用data source获取对应的ID,参考样例如下。
      data "huaweicloud_vpc" "myvpc" {
        name = var.vpc_name
      }
      data "huaweicloud_vpc_subnet" "mysubnet" {
        vpc_id = data.huaweicloud_vpc.myvpc.id
        name   = var.subnet_name
      }
      data "huaweicloud_networking_secgroup" "mysecgroup" {
        name = var.secgroup_name
      }

  2. 创建RDS for MySQL实例。

    示例一 使用新建网络配置创建RDS实例,并使用随机密码。
    data "huaweicloud_availability_zones" "myaz" {}
    
    resource "random_password" "mypassword" {
      length           = 12
      special          = true
      override_special = "!@#%^*-_=+"
    }
    resource "huaweicloud_rds_instance" "myinstance" {
      name                = "mysql_instance"
      flavor              = "rds.mysql.c2.large.ha"
      ha_replication_mode = "async"
      vpc_id              = huaweicloud_vpc.myvpc.id
      subnet_id           = huaweicloud_vpc_subnet.mysubnet.id
      security_group_id   = huaweicloud_networking_secgroup.mysecgroup.id
      availability_zone   = [
        data.huaweicloud_availability_zones.myaz.names[0],
        data.huaweicloud_availability_zones.myaz.names[1]
      ]
      db {
        type     = "MySQL"
        version  = "8.0"
        password = random_password.mypassword.result
      }
      volume {
        type = "ULTRAHIGH"
        size = 40
      }
    }

    示例二 使用已有网络配置创建RDS实例
    data "huaweicloud_availability_zones" "myaz" {}
    
    resource "huaweicloud_rds_instance" "myinstance" {
      name                = "mysql_instance"
      flavor              = "rds.mysql.c2.large.ha"
      ha_replication_mode = "async"
      vpc_id              = data.huaweicloud_vpc.myvpc.id
      subnet_id           = data.huaweicloud_vpc_subnet.mysubnet.id
      security_group_id   = data.huaweicloud_networking_secgroup.mysecgroup.id
      availability_zone   = [
        data.huaweicloud_availability_zones.myaz.names[0],
        data.huaweicloud_availability_zones.myaz.names[1]
      ]
      db {
        type     = "MySQL"
        version  = "8.0"
        password = var.rds_password
      }
      volume {
        type = "ULTRAHIGH"
        size = 40
      }
    }

  3. 配置变量。

    创建variables.tf文件,输入以下内容,并保存在当前的执行目录中。您可以根据实际情况修改变量值。

    variable "vpc_name" {
      default = "vpc-basic"
    }
    variable "vpc_cidr" {
      default = "172.16.0.0/16"
    }
    variable "subnet_name" {
      default = "subent-basic"
    }
    variable "subnet_cidr" {
      default = "172.16.10.0/24"
    }
    variable "subnet_gateway" {
      default = "172.16.10.1"
    }
    variable "primary_dns" {
      default = "100.125.1.250"
    }

  4. 创建资源。

    1. 运行 terraform init 进行初始化。
    2. 运行 terraform plan 查看资源。
    3. 确认资源无误后,运行 terraform apply 开始创建。
    4. 运行 terraform show 可以查看已创建的RDS实例信息。

表1 参数说明

资源名称

参数名称

参数说明

huaweicloud_rds_instance

name

(必填)数据库实例名称,同一租户下,同类型的数据库实例名称可以重名

  • 约束:4~64个字符之间,必须以字母开头,区分大小写,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符

flavor

(必填)数据库实例规格,本教程使用"rds.mysql.c2.large.ha",实例规格信息也可以通过huaweicloud_rds_flavors查询。

ha_replication_mode

(可选)备机同步参数。MySQL的取值为“async”或“semisync”。

availability_zone

(必填)实例所在可用区,对于主备实例支持多个可用区,请参见地区和终端节点

vpc_id

(必填)实例所属的VPC ID

subnet_id

(必填)实例所属的子网网络ID

security_group_id

(必填)实例所属的安全组ID

db

type

(必填)数据库引擎类型

  • 取值范围:MySQL、PostgreSQL、SQLServer

version

(必填)数据库引擎版本,MySQL引擎支持5.6、5.7、8.0版本。

password

(必填)数据库密码

由大小写字母、数字和特殊符号~!@#%^*-_=+?组成,长度8~32个字符。

建议您输入高强度密码,以提高安全性,防止出现密码被暴力破解等安全风险。

port

(可选)数据库端口

  • 约束:MySQL数据库端口设置范围为1024~65535(其中12017和33071被RDS系统占用不可设置),默认3306;

volume

type

(必填)数据库实例磁盘类型

  • 取值范围:

    ULTRAHIGH,表示SSD;

    ULTRAHIGHPRO,表示SSD尊享版,仅支持超高性能型尊享版

size

(必填)数据库实例磁盘空间大小

  • 取值范围:40GB~4000GB,必须为10的整数倍