【问题标题】:Provision multiple logical databases with Terraform on AWS RDS cluster instance在 AWS RDS 集群实例上使用 Terraform 预置多个逻辑数据库
【发布时间】:2019-03-03 16:17:32
【问题描述】:

所以,我已经获得了配备了一个 RDS MySql 实例的 Aurora MySql 集群。障碍发生在 AWS 底层 API 只允许创建 1 个逻辑数据库。因此,我想知道你们中是否有人已经有过这种部署的经验,因为我不必在这一步中使用 Mysql 客户端 CLI,如果可能的话,我真的很想自动化它。有什么想法吗?

【问题讨论】:

    标签: database amazon-web-services terraform amazon-aurora terraform-provider-aws


    【解决方案1】:

    Terraform 有一个 Myql 提供程序 https://www.terraform.io/docs/providers/mysql/index.html

    # Configure the MySQL provider
    provider "mysql" {
      endpoint = "my-database.example.com:3306"
      username = "app-user"
      password = "app-password"
    }
    
    # Create a Database
    resource "mysql_database" "app" {
      name = "my_awesome_app"
    }
    

    因此您可以创建您的 AWS 数据库集群/实例,然后使用 mysql 提供程序创建另一个数据库:

    # Create a database server
    resource "aws_db_instance" "default" {
      engine         = "mysql"
      engine_version = "5.6.17"
      instance_class = "db.t1.micro"
      name           = "initial_db"
      username       = "rootuser"
      password       = "rootpasswd"
    
      # etc, etc; see aws_db_instance docs for more
    }
    
    # Configure the MySQL provider based on the outcome of
    # creating the aws_db_instance.
    provider "mysql" {
      endpoint = "${aws_db_instance.default.endpoint}"
      username = "${aws_db_instance.default.username}"
      password = "${aws_db_instance.default.password}"
    }
    
    # Create a second database, in addition to the "initial_db" created
    # by the aws_db_instance resource above.
    resource "mysql_database" "app" {
      name = "another_db"
    }
    

    【讨论】:

    • 我也在某些设置中使用它。我唯一不喜欢的是执行 Terraform 的计算机需要对数据库进行网络访问。并非总是如此,您/我们想要什么。
    • 闪亮的 AWSy 方法可能是创建一个 lambda 来为您运行代码并拥有正确的安全组.. 但好吧.. 也不太令人信服。
    • 在使用 host = aws_db_instance.default.endpoint 时想知道为什么这对 postgres 不起作用(在更改所有其他设置以匹配 postgresql 提供程序之后),但后来意识到它应该是 host = aws_db_instance.default.address .
    【解决方案2】:

    AWS API 不支持您想做的事情,因此 Terraform 没有它。一些可能的解决方法:

    让 Terraform 在配置过程中执行本地执行。您可以使用它来调用 SQL 客户端以连接并创建第二个数据库。

    拥有一个连接到 RDS 实例并根据需要设置数据库的 Lambda 函数。部署 RDS 后触发 Lambda。

    让您的应用程序检查数据库并创建它们。

    为每个数据库创建一个集群(这通常是 AWS 想要的方式)。

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多