【问题标题】:How to connect liquibase to AWS RDS Aurora MySQL database如何将 liquibase 连接到 AWS RDS Aurora MySQL 数据库
【发布时间】:2021-04-06 11:24:07
【问题描述】:

我正在尝试设置 liquibase 以基于 AWS RDS Aurora MySql 为一个项目同步我的开发和生产数据库。不幸的是,我无法将 liquibase 连接到我的 AWS Aurora MySQL 数据库。

我做了什么?

  1. 已安装 liquibase
  2. 关注文章https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Connecting.html,该文章解释了如何通过 JDBC 连接到 AWS RDS Aurora MySQL 数据库集群。
    • 我下载了 Maria DB JDBC 连接器
    • 我使用附录 1 中所述的数据配置了 liquibase.properties 文件
    • 我运行了命令 `liquibase --driver=org.mariadb.jdbc.Driver --classpath=mariadb-java-client-2.7.1.jar generateChangeLog``
  3. liquibase 按预期启动并尝试连接到数据库 prod 集群,但随后挂起一段时间,然后终止并出现异常“与主服务器的通信链接失败。找不到主服务器的活动连接”。 - 参见附录 2 中的堆栈跟踪

我的问题:

我必须如何配置 liquibase 才能使其与 AWS RDS Aurora MySQL 数据库集群一起运行?

感谢和最好的问候 智能家居制造商

附录 1:liquibase.properties:

# Enter the path for your changelog file.
changeLogFile=<CHANGE_LOG_FILENAME>

#### Enter the Target database 'url' information  ####
url=jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME>

# Enter the username for your Target database.
username: <PROD_DATABASE_USER>

# Enter the password for your Target database.
password: <PROD_DATABASE_PASSWORD>

#### Enter the Source Database 'referenceUrl' information ####
## The source database is the baseline or reference against which your target database is compared for diff/diffchangelog commands.

# Enter URL for the source database
referenceUrl: jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_DEV_CLUSTER>:<PORT_FOR_AWS_AURORA_DEV_CLUSTER>/<DEV_DATABASE_NAME>

# Enter the username for your source database
referenceUsername: <DEV_DATABASE_USER>

# Enter the password for your source database
referencePassword: <DEV_DATABASE_PASSWORD>

logLevel: DEBUG

附录 2:堆栈跟踪:

[2020-12-29 14:43:05] FEIN [liquibase.servicelocator] Loaded liquibase.license.LicenseService instance liquibase.pro.license.keymgr.DaticalTrueLicenseService
[2020-12-29 14:43:05] INFORMATION [liquibase.integration] No Liquibase Pro license key supplied. Please set liquibaseProLicenseKey on command line or in liquibase.properties to use Liquibase Pro features.
Liquibase Community 4.2.2 by Datical
####################################################
##   _     _             _ _                      ##
##  | |   (_)           (_) |                     ##
##  | |    _  __ _ _   _ _| |__   __ _ ___  ___   ##
##  | |   | |/ _` | | | | | '_ \ / _` / __|/ _ \  ##
##  | |___| | (_| | |_| | | |_) | (_| \__ \  __/  ##
##  \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___|  ##
##              | |                               ##
##              |_|                               ##
##                                                ## 
##  Get documentation at docs.liquibase.com       ##
##  Get certified courses at learn.liquibase.com  ## 
##  Free schema change activity reports at        ##
##      https://hub.liquibase.com                 ##
##                                                ##
####################################################
Starte Liquibase am 14:43:05 (Version 4.2.2 #36, kompiliert am 2020-12-09 20:07+0000)
[2020-12-29 14:43:05] FEIN [liquibase.integration] 'file:<PATH_TO_JAR_FILE>mariadb-java-client-2.7.1.jar' will be added to Java Classpath.
[2020-12-29 14:43:05] FEIN [liquibase.integration] Liquibase Hub URL:      https://hub.liquibase.com
[2020-12-29 14:43:05] FEIN [liquibase.integration] Liquibase Hub Mode:     all
[2020-12-29 14:43:05] FEIN [liquibase.resource] Adding path <PATH_WHERE_LIQUIBASE_IS_RUNNING>. to resourceAccessor liquibase.resource.FileSystemResourceAccessor
[2020-12-29 14:43:05] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.CockroachDatabase
[2020-12-29 14:43:05] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DB2Database
[2020-12-29 14:43:05] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Db2zDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DerbyDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Firebird3Database
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.FirebirdDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.H2Database
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.HsqlDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.InformixDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Ingres9Database
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MSSQLDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MariaDBDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MockDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MySQLDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.OracleDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.PostgresDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SQLiteDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseASADatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseDatabase
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase
[2020-12-29 14:43:08] FEIN [liquibase.database] Properties:
[2020-12-29 14:43:08] FEIN [liquibase.database] Key:'password' Value:'**********'
[2020-12-29 14:43:08] FEIN [liquibase.database] Key:'user' Value:'***********'
[2020-12-29 14:43:08] FEIN [liquibase.database] Connecting to the URL:'jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME>' using driver:'org.mariadb.jdbc.Driver'
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2020-12-29 14:43:08] FEIN [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
Unexpected exception when executing liquibase: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Connection could not be created to jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME> with driver org.mariadb.jdbc.Driver.  Communications link failure with primary. No active connection found for master. 
Bitte verwenden Sie die '--logLevel'-Option, um mehr Informationen zu erhalten.
[2020-12-29 15:02:59] FATAL [liquibase.integration] Unexpected Exception when running liquibase: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Connection could not be created to jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME> with driver org.mariadb.jdbc.Driver.  Communications link failure with primary. No active connection found for master. 
liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Connection could not be created to jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME> with driver org.mariadb.jdbc.Driver.  Communications link failure with primary. No active connection found for master. 
    at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:131)
    at liquibase.integration.commandline.Main.doMigration(Main.java:1409)
    at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:361)
    at liquibase.Scope.lambda$child$0(Scope.java:160)
    at liquibase.Scope.child(Scope.java:169)
    at liquibase.Scope.child(Scope.java:159)
    at liquibase.Scope.child(Scope.java:138)
    at liquibase.Scope.child(Scope.java:222)
    at liquibase.Scope.child(Scope.java:226)
    at liquibase.integration.commandline.Main$1.run(Main.java:360)
    at liquibase.integration.commandline.Main$1.run(Main.java:193)
    at liquibase.Scope.child(Scope.java:169)
    at liquibase.Scope.child(Scope.java:145)
    at liquibase.integration.commandline.Main.run(Main.java:193)
    at liquibase.integration.commandline.Main.main(Main.java:156)
Caused by: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Connection could not be created to jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME> with driver org.mariadb.jdbc.Driver.  Communications link failure with primary. No active connection found for master. 
    at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:216)
    at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:175)
    at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:140)
    at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:96)
    ... 14 more
Caused by: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Connection could not be created to jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME> with driver org.mariadb.jdbc.Driver.  Communications link failure with primary. No active connection found for master. 
    at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:36)
    at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:213)
    ... 17 more
Caused by: liquibase.exception.DatabaseException: Connection could not be created to jdbc:mariadb:aurora//jdbc:mariadb:aurora//<ENDPOINT_URL_FOR_AWS_AURORA_PROD_CLUSTER>:<PORT_FOR_AWS_AURORA_PROD_CLUSTER>/<PROD_DATABASE_NAME> with driver org.mariadb.jdbc.Driver.  Communications link failure with primary. No active connection found for master. 
    at liquibase.database.jvm.JdbcConnection.open(JdbcConnection.java:43)
    at com.datical.liquibase.ext.database.jvm.ProJdbcConnection.open(Unknown Source)
    at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:33)
    ... 18 more

【问题讨论】:

  • 你从哪里运行 liquibase?你的笔记本电脑?与 Aurora 集群位于同一 VPC 中的 EC2 实例? Aurora 集群的安全组设置是什么?集群上是否启用了“可公开访问”设置?
  • 嗨@MarkB,感谢您的快速评论!我想在本地运行 liquibase,而不是在 EC2 实例上。那可能吗?我不知道“可公开访问”选项,但这是一个很好的观点。因此,这意味着要么我决定仅在 VPC 内“关闭可访问性”,因此需要在 EC2 实例上运行 liquibase,或者我决定在本地运行 liquibase,但随后必须打开数据库以供公众访问,因此也会失去一些安全保障,我说得对吗?谢谢和最好的问候
  • 是的,你说得对。

标签: mysql amazon-web-services amazon-rds liquibase


【解决方案1】:

我自己还在研究,这是由 AWS 的一位高级技术客户经理提供的good article,用于熟悉如何将事物连接在一起。

总而言之,您必须在 AWS 生态系统上工作,在 EC2 上部署 Liquibase 和 CI/CD 软件(如 Jenkins),并将您的 SQL 存储库提交到 AWS codecommit。请注意,这通常适用于 Aurora,但在无服务器的情况下,您可能会遇到连接问题,因此我建议您通过 HTTP 通过 Data API 连接它,但这是我仍在调查的持续过程。

【讨论】:

  • 好的,谢谢 - 所以我会将其标记为已接受的答案,因为我认为没有实际的解决方案可以在本地运行它,而只能在 EC2 上运行。谢谢!
猜你喜欢
  • 2021-04-19
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2020-10-18
  • 2018-07-18
  • 2019-05-03
  • 1970-01-01
相关资源
最近更新 更多