Liquibase 通过 SSH 连接到远程 mysql 实例

Liquibase 通过 SSH 连接到远程 mysql 实例

我正在自动化部署我的“LAMP”应用程序。目前,我有一个 Jenkins 设置,其中包含一个用于部署到我完全控制的本地环境的管道。为了确保数据库架构同步,我将目光投向了 liquibase。我的问题是如何编写管道脚本以连接到远程服务器。

我会用类似的东西

scp db.changelog-1.1.xml remotehost:/path/to/
ssh remotehost liquibase --driver=com.mysql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=/path/to/db.changelog-1.1.xml --url="jdbc:mysql://127.0.0.1:3306/dbname?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" --username=user --password=secretpass update

但是目标服务器上没有JVM,我没有安装它的可能性。

我的第二个想法是建立 SSH 隧道

ssh -L 3307:127.0.0.1:3306 remoteHost &
liquibase --driver=com.mysql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=/path/to/db.changelog-1.1.xml --url="jdbc:mysql://127.0.0.1:3307/dbname?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" --username=user --password=secretpass update

我的问题有两个:

  1. 如何在使用后终止 SSH 隧道?
  2. 有没有更好的方法在詹金斯管道脚本中建立隧道?

相关内容