フライウェイは、データベース管理スクリプトレイダースの自動化を支援します

オリジナル住所:梁桂趙さんのブログ

ブログのアドレス:http://blog.720ui.com

国民の関心番号へようこそ:「サーバー側の思考を。」認知の限界を破り、洗練されたとともに、一緒に育つ同じ周波数のグループ。

今日興味深いトピックを議論する:私たちは、プロジェクトのGitのバージョンコントロールすることによって達成することができ、Jenkinsの継続的な統合、データベース・レベルのために、我々はまだ手作りの実行SQLスクリプトに依存している、マルチ環境(開発環境では、私たちに、テスト環境、開発前の環境、本番環境)の最新のSQLスクリプトの正確さを確保するためにどのように?

image.png
我々はすべて知っているように、手動操作が間違って行くことは非常に簡単で、私たちは、プログラムは、管理と移行を自動化できるようにする必要があります。今日、私はオープンソースのデータベース移行ツールフライウェイをお勧めします。

image.png

MySQLをサポートするだけでなく、フライウェイ、それはまた、非常に多くの他のデータベースをサポートすることができます。
image.png

実際には、春ブーツはフライウェイの完全な統合を持っています。この点で、我々は非常に簡単にそれを使用することができます。まず、我々は、Mavenの依存関係を紹介します。(mysqlのコネクタ-Javaに依存する、我々はまた、春・ブート・スターター-JDBCに投影する必要があることに注意してください)

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

加えて、我々は中application.ymlに関連するオプションを設定します。春のブートデフォルトのクラスパス:移行ディレクトリの下// DB /スキャン移行。ここで、著者spring.flyway.locationsはデシベル/ SQLに調整します。

spring:
  flyway:
    enabled: true
    baseline-on-migrate: true
    locations: [classpath:db/sql]

システムが起動すると、自動的にflyway_schema_historyファイルを作成します。(もちろん、手動で独自に作成することができます)。このテーブルには、記録されたチェックサム値は、バージョンおよびSQLスクリプトは、移行スクリプトが含まれ、各移動の記録を保持している、フライウェイのメタデータテーブルです。新しいSQLスクリプトがスキャンされると、フライウェイは、SQLスクリプトのバージョン番号を解決し、かつ、更新のSQLスクリプトのバージョンが、それは、指定されたDB上のSQLファイルを実行する場合は、メタデータテーブルのコントラストが、そうでない場合はSQLをスキップファイル。

CREATE TABLE `flyway_schema_history` (
  `installed_rank` int(11) NOT NULL,
  `version` varchar(50) DEFAULT NULL,
  `description` varchar(200) NOT NULL,
  `type` varchar(20) NOT NULL,
  `script` varchar(1000) NOT NULL,
  `checksum` int(11) DEFAULT NULL,
  `installed_by` varchar(100) NOT NULL,
  `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `execution_time` int(11) NOT NULL,
  `success` tinyint(1) NOT NULL,
  PRIMARY KEY (`installed_rank`),
  KEY `flyway_schema_history_s_idx` (`success`)
)

V1.1__INIT_DB.sql:その後、我々は手動でDB / SQLで開始したSQLスクリプトを作成します。

DROP TABLE IF EXISTS `tag`;

CREATE TABLE `tag` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `gmtCreate` date DEFAULT NULL,
  `gmtModified` date DEFAULT NULL,
  `title` varchar(32) DEFAULT NULL,
  `parentId` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

プログラムが再び開始した後に続いて、それがデータベースにポスト自動化します。   

image.png

ここでは、知識を補完する必要性は:バージョンの比較は、フライウェイを支配します。その原則、代わりに0の不在を取るために残しました。1.1バージョン1.1.1、1.1.1と1.1.01と一貫性のより高い、たとえば1.0、1.1よりも高いです。また、彼らは秩序とリリース順序に従って実行されます。

image.png

また、フライウェイもDML(挿入、更新、削除)というようにサポートし、DDLをサポートしていないだけ。したがって、我々はその後、検証するV1.2__INSERT_TAG_DATA.sqlファイルを作成することができます。

INSERT tag(title, parentId) values('java', 0);
INSERT tag(title, parentId) values('spring', 0);

最後に、我々は、移行の一般的なタイプをサポートするために、次のフライウェイで議論する必要があります。

  • バージョン管理の移行:データベースのアップグレード・スクリプト
  • 反復の移行:再実行してチェックサムが変更スクリプトが再実行されますとき。

image.png

  • 接頭辞:接頭識別子、Vのデフォルト値は、バージョン管理を表し、Rは、再現性を表します
  • バージョン:バージョンの識別番号は、デジタルまたは_下線間の1つ以上のデジタル利用可能な点セパレータで構成される。
  • セパレータ:別バージョンの識別及び記述情報は、デフォルトでは2つのアンダースコアである__
  • 説明:下線またはテキスト、記述情報との間の空間によって分離することができます
  • サフィックス:その後の同定、デフォルト.SQL

私たちは、メタデータ(flyway_schema_history)を介してデータベースの移行バージョンの保守・管理の自動化を支援するために、フライウェイを要約します。

最後に書かれました

[サーバー]思考:私たちはフロントラインの戦闘インターネットアーキテクチャとプロジェクト経験を探索するコアサーバ技術と話します。探求し、交流の自分のサークルを見つけるために単独R&D人材のすべてをしてみましょう。ここでは、認知の限界を打破するために、問題を解決するために最短経路に接続され、認知接続トップ技術ダニエル、思考の接続優れた方法、接続するすべての罰金の方法をアップグレードすることができます。

すべての「サーバー側の思考」でよりエキサイティングな記事、!

ブログ記事複数のプラットフォームからこの記事OpenWriteリリース!

おすすめ

転載: www.cnblogs.com/lianggzone/p/11729679.html