Introduction to Liquibase
Liquibase is a database schema change management solution that enables you to revise and release database changes faster and safer from development to production.
Tip: Check out Why Liquibase? for more information.
To start using Liquibase quickly and easily, you can write your migration scripts in SQL.
To take advantage of database abstraction abilities that allow you to write changes once and deploy to different database platforms, you can specify database-agnostic changes in XML, JSON, or YAML.
Standard Liquibase workflow
Changelog organization
Liquibase uses SQL, XML, JSON, and YAML changelog files to list database changes in sequential order. Database changes have the format of changesets. Changesets contain Change Types, which are types of operations to apply to the database, such as adding a column or primary key. Context, label, and precondition changelog tags help precisely control when a database change is made and to which database environment it is deployed.
Liquibase properties file
To set the connection between Liquibase with your database, you need the database connection information and parameters. Liquibase includes a properties file to store database connection information and parameters that rarely change. Setting the parameters as environment variables to handle sensitive database information or running them at the command prompt is an alternative option.
Liquibase commands
Liquibase runs six basic types of commands: update, rollback, snapshot, diff, status, and utility commands. When you use the update
command to deploy your first changes, Liquibase checks the database connection information, including credentials, database URL, and JDBC driver.
Database Changelog and Database Changelog Lock
When you deploy your changes, Liquibase creates two tables in your database: DATABASECHANGELOG and DATABASECHANGELOGLOCK.
The DATABASECHANGELOG table tracks deployed changes so that you have a record. Liquibase compares the changesets in the changelog file with the DATABASECHANGELOG tracking table and deploys only new changesets.
DATABASECHANGELOGLOCK prevents multiple instances of Liquibase from updating the database at the same time. The table manages access to the DATABASECHANGELOG table during deployment and ensures only one instance of Liquibase is updating the database.
Database management options
Liquibase offers many ways to manage your database changes:
- Run the command-line client (CLI).
- Use the Liquibase Java API and integrate Liquibase into your application to deploy database changes on the application startup.
- Integrate Liquibase into your build processes using Maven, Spring Boot, Ant, Jenkins, GitHub Actions, or other CI/CD tools.
- With ephemeral environments in Docker.
Get started now!
To get started with Liquibase, follow these steps:
- Install Liquibase – Download Liquibase on your machine
- Get Started with Liquibase – Learn how to use Liquibase with an example database
- Design Your Liquibase Project – Create a new Liquibase project folder and organize your changelogs
- Liquibase Database Tutorials – Configure Liquibase to work with your own database
- Best Practices – Read about best practices to follow with Liquibase