数据库即代码服务是近年来兴起的一个新概念。正如我们已经知道的,我们有应用程序代码的部署解决方案。使用Git和Jenkins这样的工具,管理和跟踪应用程序更改非常容易。
现在这个概念也应用于数据库领域,假设SQL作为管理数据库更改(DDL、DML)的代码,与应用程序处理代码的方式相同。从数据库的角度来看,这允许跟踪修改的历史,允许快速检测和解决问题。
Liquibase是什么?
Liquibase是一个开源的、独立于数据库的框架,用于部署、管理和跟踪数据库模式更改。对数据库的所有修改或更改都存储在称为更改集的文本文件(XML、YAML、JSON或SQL)中。为了具体地按顺序列出数据库更改,Liquibase使用了更改日志。更改日志作为更改的记录,并包含了Liquibase可以在目标数据库上执行的更改集列表。
让我们看看如何使用这个工具设置Liquibase并执行一些数据库更改。
安装Liquibase
1.下载并提取Liquibase文件。年代pan>
|
1
2
3.
|
壳牌年代pan>
>年代pan>
wget年代pan>
https年代pan>
:年代pan>//<年代pan class="crayon-i">github年代pan>
com年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-i">释放年代pan>/<年代pan class="crayon-i">下载年代pan>/<年代pan class="crayon-i">v4年代pan>
。年代pan>
17.2年代pan>/<年代pan class="crayon-i">liquibase年代pan>-<年代pan class="crayon-cn">4.17.2.tar.gz年代pan>
壳牌年代pan>
>年代pan>
mkdir年代pan>
/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">当地的年代pan>/<年代pan class="crayon-i">箱子年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-h">
壳牌年代pan>
>年代pan>
sudo年代pan>
焦油年代pan>
-<年代pan class="crayon-e">xzvf年代pan>
liquibase年代pan>-<年代pan class="crayon-cn">4.17.2.tar.gz年代pan>
--<年代pan class="crayon-i">目录年代pan>
/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">当地的年代pan>/<年代pan class="crayon-i">箱子年代pan>/<年代pan class="crayon-i">liquibase年代pan>/
|
2.将安装目录定义为环境路径,并在“~/”中添加相同的目录。Bashrc”文件。年代pan>
|
1
|
出口年代pan>
路径年代pan>=<年代pan class="crayon-sy">美元年代pan>
路径年代pan>
:年代pan>/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">当地的年代pan>/<年代pan class="crayon-i">箱子年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-i">liquibase年代pan>
|
3.验证安装。年代pan>
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">版本年代pan>
####################################################年代pan>
## _ _ _ _ ##年代pan>
## | | (_) | ##年代pan>
| |_ ___ ___ | |__ ___ ___ ___ ##年代pan>
## | | | |/ _ ' | | | | | '_ / _ ' / __|/ _ ##年代pan>
| |___| | (_| | |_| | | |_) | (_| __ __/ ##年代pan>
## _____/_|__, |__,_|_|_。__/__,_|___/___| ##年代pan>
## | | ##年代pan>
## |_| ##年代pan>
# # # #年代pan>
在docs.liquibase.com上获取文档年代pan>
在learn.liquibase.com上获得认证课程年代pan>
自由模式更改活动报告在##年代pan>
## https://hub.liquibase.com ##年代pan>
# # # #年代pan>
####################################################年代pan>
开始年代pan>
Liquibase年代pan>
在年代pan>
15年代pan>
:年代pan>
04年代pan>
:年代pan>
16年代pan>
(年代pan>
版本年代pan>
4.17.2年代pan>
#5255建造于2022-11-01 18:07+0000)年代pan>
Liquibase年代pan>
首页年代pan>
:年代pan>
/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">当地的年代pan>/<年代pan class="crayon-i">箱子年代pan>/<年代pan class="crayon-e">liquibase年代pan>
Java年代pan>
首页年代pan>
/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">自由年代pan>/<年代pan class="crayon-i">jvm年代pan>/<年代pan class="crayon-i">java年代pan>-<年代pan class="crayon-cn">1.8.0年代pan>-<年代pan class="crayon-i">openjdk年代pan>-<年代pan class="crayon-cn">1.8.0.352.b08年代pan>-<年代pan class="crayon-cn">2. el7_9.x86_64年代pan>/<年代pan class="crayon-e">jre年代pan>
(年代pan>
版本年代pan>
1.8.0_352年代pan>
)年代pan>
|
请注意- Liquibase需要在您的系统上设置Java(JDK)才能运行。
如何使用Liquibase与MySQL
1.<年代pan style="font-weight: 400;">要使用Liquibase和MySQL,我们需要JDBC驱动程序JAR文件。复制liquibase内部库中的jar文件。年代pan>
|
1
2
3.
|
壳牌年代pan>
>年代pan>
wget年代pan>
https年代pan>
:年代pan>//<年代pan class="crayon-i">dev年代pan>
.mysql年代pan>
com年代pan>/<年代pan class="crayon-r">得到年代pan>/<年代pan class="crayon-i">下载年代pan>/<年代pan class="crayon-i">连接器年代pan>-<年代pan class="crayon-i">J年代pan>/<年代pan class="crayon-i">mysql年代pan>-<年代pan class="crayon-i">连接器年代pan>-<年代pan class="crayon-i">j年代pan>-<年代pan class="crayon-cn">8.0.31.tar.gz年代pan>
壳牌年代pan>
>年代pan>
焦油年代pan>
-<年代pan class="crayon-e">xzvf年代pan>
mysql年代pan>-<年代pan class="crayon-i">连接器年代pan>-<年代pan class="crayon-i">j年代pan>-<年代pan class="crayon-cn">8.0.31.tar.gz年代pan>
壳牌年代pan>
>年代pan>
cp年代pan>
mysql年代pan>-<年代pan class="crayon-i">连接器年代pan>-<年代pan class="crayon-i">j年代pan>-<年代pan class="crayon-cn">8.0.31年代pan>/<年代pan class="crayon-i">mysql年代pan>-<年代pan class="crayon-i">连接器年代pan>-<年代pan class="crayon-i">j年代pan>-<年代pan class="crayon-cn">8.0.31.jar年代pan>
/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">当地的年代pan>/<年代pan class="crayon-i">箱子年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-i">内部年代pan>/<年代pan class="crayon-i">自由年代pan>/
|
2.<年代pan style="font-weight: 400;">首先,用下面的选项初始化一个项目。年代pan>
|
1
2
3.
4
5
6
7
8
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
初始化年代pan>
项目年代pan>
--<年代pan class="crayon-i">项目年代pan>-<年代pan class="crayon-i">dir年代pan>= /<年代pan class="crayon-i">首页年代pan>/<年代pan class="crayon-i">流浪的年代pan>/<年代pan class="crayon-i">liquibase_mysql_project年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-r">文件年代pan>
--<年代pan class="crayon-i">格式年代pan>=<年代pan class="crayon-i">sql年代pan>
--<年代pan class="crayon-i">项目年代pan>-<年代pan class="crayon-i">违约年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">liquibase年代pan>
. properties年代pan>
--<年代pan class="crayon-i">url年代pan>=<年代pan class="crayon-i">jdbc年代pan>
:年代pan>
mysql年代pan>
:年代pan>//<年代pan class="crayon-i">本地主机年代pan>
:年代pan>
3306年代pan>/<年代pan class="crayon-i">sbt年代pan>
--<年代pan class="crayon-i">用户名年代pan>=<年代pan class="crayon-i">根年代pan>
--<年代pan class="crayon-i">密码年代pan>=<年代pan class="crayon-i">根年代pan>
@年代pan>
1234年代pan>
|
我们来看看这些参数是什么。
|
1
2
3.
4
5
6
7
|
--<年代pan class="crayon-i">项目年代pan>-<年代pan class="crayon-i">dir年代pan>
=<年代pan class="crayon-h">>年代pan>
项目年代pan>
位置年代pan>
在哪里年代pan>
所有年代pan>
文件年代pan>
相关的年代pan>
来年代pan>
的年代pan>
项目年代pan>
将年代pan>
是年代pan>
保持年代pan>
。年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>
=<年代pan class="crayon-h">>年代pan>
文件年代pan>
包含年代pan>
部署年代pan>
变化年代pan>
。年代pan>
--<年代pan class="crayon-i">格式年代pan>
=<年代pan class="crayon-h">>年代pan>
格式年代pan>
的年代pan>
部署年代pan>
文件年代pan>
(年代pan>
. sql年代pan>
,年代pan>
xml年代pan>
等年代pan>
)年代pan>
。年代pan>
--<年代pan class="crayon-i">项目年代pan>-<年代pan class="crayon-i">违约年代pan>-<年代pan class="crayon-r">文件年代pan>
=<年代pan class="crayon-h">>年代pan>
liquibase年代pan>
财产年代pan>
文件年代pan>
。年代pan>
--<年代pan class="crayon-i">url年代pan>
=<年代pan class="crayon-h">>年代pan>
MySQL年代pan>
数据库年代pan>
url年代pan>
。年代pan>
--<年代pan class="crayon-i">用户名年代pan>=<年代pan class="crayon-i">根年代pan>
=<年代pan class="crayon-h">>年代pan>
数据库年代pan>
用户年代pan>
名字年代pan>
。年代pan>
--<年代pan class="crayon-i">密码年代pan>
=<年代pan class="crayon-h">>年代pan>
数据库年代pan>
密码年代pan>
。年代pan>
|
3.<年代pan style="font-weight: 400;">然后,我们可以在项目位置创建一个手动文件(“changelog.sql”),并定义变更集。用于定义部署更改的其他格式包括(.xml、.json或.yaml)。年代pan>
|
1
|
创建年代pan>
表格年代pan>
test_table年代pan>
(年代pan>
test_id年代pan>
INT年代pan>
,年代pan>
test_column年代pan>
VARCHAR年代pan>
(年代pan>
256年代pan>
)年代pan>
,年代pan>
主要的年代pan>
关键年代pan>
(年代pan>
test_id年代pan>
)年代pan>
)年代pan>
|
4.<年代pan style="font-weight: 400;">验证数据库连接是否成功。在Liquibase项目文件夹中,运行以下命令。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">用户名年代pan>=<年代pan class="crayon-i">根年代pan>
--<年代pan class="crayon-i">密码年代pan>=<年代pan class="crayon-i">根年代pan>
@年代pan>
1234年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">更新日志年代pan>
. sql年代pan>
状态年代pan>
|
5.执行前检查SQL。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">更新日志年代pan>
. sql年代pan>
更新年代pan>-<年代pan class="crayon-i">sql年代pan>
|
6.<年代pan style="font-weight: 400;">最后,部署更改。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">更新日志年代pan>
. sql年代pan>
更新年代pan>
|
输出:年代pan>
|
1
2
3.
4
5
|
开始年代pan>
Liquibase年代pan>
在年代pan>
16年代pan>
:年代pan>
56年代pan>
:年代pan>
44年代pan>
(年代pan>
版本年代pan>
4.17.2年代pan>
#5255建造于2022-11-01 18:07+0000)年代pan>
Liquibase年代pan>
版本年代pan>
:年代pan>
4.17.2年代pan>
Liquibase年代pan>
社区年代pan>
4.17.2年代pan>
通过年代pan>
Liquibase年代pan>
运行年代pan>
变更集年代pan>
:年代pan>
更新日志年代pan>
. sql年代pan>
:年代pan>
:年代pan>
生年代pan>
:年代pan>
:年代pan>
includeAll年代pan>
Liquibase年代pan>
命令年代pan>
“更新”年代pan>
是年代pan>
执行年代pan>
成功年代pan>
。年代pan>
|
7.<年代pan style="font-weight: 400;">验证数据库中的更改。此外,您还可以观察到同一个数据库中的额外表,这些表捕获了更多的执行统计信息。年代pan>
a)表:DATABASECHANGELOG年代pan>
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
|
mysql年代pan>
>年代pan>
选择年代pan>
*<年代pan class="crayon-h">
从年代pan>
DATABASECHANGELOGG年代pan>
;年代pan>
***************************<年代pan class="crayon-h">
1.年代pan>
行年代pan>
***************************
ID年代pan>
:年代pan>
生年代pan>
作者年代pan>
:年代pan>
includeAll年代pan>
文件名年代pan>
:年代pan>
更新日志年代pan>
. sql年代pan>
DATEEXECUTED年代pan>
:年代pan>
2022年代pan>-<年代pan class="crayon-cn">11年代pan>-<年代pan class="crayon-cn">08年代pan>
16年代pan>
:年代pan>
10年代pan>
:年代pan>
36年代pan>
ORDEREXECUTED年代pan>
:年代pan>
1年代pan>
EXECTYPE年代pan>
:年代pan>
执行年代pan>
MD5SUM年代pan>
:年代pan>
8年代pan>
:年代pan>
155年d0d5f1f1cb1c0098df92a8e92372a年代pan>
描述年代pan>
:年代pan>
sql年代pan>
评论年代pan>
:年代pan>
标签年代pan>
:年代pan>
零年代pan>
LIQUIBASE年代pan>
:年代pan>
4.17.2年代pan>
上下文年代pan>
:年代pan>
零年代pan>
标签年代pan>
:年代pan>
零年代pan>
DEPLOYMENT_ID年代pan>
:年代pan>
7923831699年代pan>
|
请注意—每个更改集在表中作为一行跟踪,并由id、作者和文件名字段标识。年代pan>
b)<年代pan style="font-weight: 400;">表:DATABASECHANGELOGLOCK年代pan>
|
1
2
3.
4
5
6
7
|
mysql年代pan>
>年代pan>
选择年代pan>
*<年代pan class="crayon-h">
从年代pan>
DATABASECHANGELOGLOCKG年代pan>
;年代pan>
***************************<年代pan class="crayon-h">
1.年代pan>
行年代pan>
***************************
ID年代pan>
:年代pan>
1年代pan>
锁着的年代pan>
:年代pan>
0 x00年代pan>
LOCKGRANTED年代pan>
:年代pan>
零年代pan>
LOCKEDBY年代pan>
:年代pan>
零年代pan>
1年代pan>
行年代pan>
在年代pan>
集年代pan>
(年代pan>
0.00年代pan>
证券交易委员会年代pan>
)年代pan>
|
注意:为了保证一次只运行一个Liquibase实例,Liquibase使用DATABASECHANGELOGLOCK表。年代pan>
8.<年代pan style="font-weight: 400;">通过运行命令“liquibase history”,我们也可以检查过去的部署。年代pan>
|
1
2
3.
4
5
6
|
Liquibase年代pan>
版本年代pan>
:年代pan>
4.17.2年代pan>
Liquibase年代pan>
社区年代pan>
4.17.2年代pan>
通过年代pan>
Liquibase年代pan>
Liquibase年代pan>
历史年代pan>
为年代pan>
jdbc年代pan>
:年代pan>
mysql年代pan>
:年代pan>//<年代pan class="crayon-i">本地主机年代pan>
:年代pan>
3306年代pan>/<年代pan class="crayon-i">sbt年代pan>
-<年代pan class="crayon-h">
数据库年代pan>
更新年代pan>
在年代pan>
11年代pan>/<年代pan class="crayon-cn">8年代pan>/<年代pan class="crayon-cn">22年代pan>
4年代pan>
:年代pan>
10年代pan>
点年代pan>
。年代pan>
应用年代pan>
1年代pan>
变更集年代pan>
(年代pan>
年代年代pan>
)年代pan>
,年代pan>
DeploymentId年代pan>
:年代pan>
7923831699年代pan>
更新日志年代pan>
. sql年代pan>
:年代pan>
:年代pan>
生年代pan>
:年代pan>
:年代pan>
includeAll年代pan>
|
至此,我们已经成功地在目标数据库中部署了更改。接下来,我们将了解如何跟踪更改并执行回滚操作。年代pan>
为了对某些DDL或DML执行回滚,我们需要在.sql文件中添加回滚更改集详细信息。年代pan>
让我们看看执行回滚操作的步骤
1)创建部署文件“deployment.”sql” inside the project location with the below changeset details.年代pan>
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
|
--<年代pan class="crayon-e">liquibase年代pan>
格式化年代pan>
sql年代pan>
--<年代pan class="crayon-e">变更集年代pan>
AJ年代pan>
:年代pan>
1年代pan>
标签年代pan>
:年代pan>
label1年代pan>
上下文年代pan>
:年代pan>
context1年代pan>
--<年代pan class="crayon-i">评论年代pan>
:年代pan>
DDL年代pan>
创建年代pan>
创建年代pan>
表格年代pan>
P1年代pan>
(年代pan>
id年代pan>
int年代pan>
主要的年代pan>
关键年代pan>
auto_increment年代pan>
不年代pan>
零年代pan>
,年代pan>
名字年代pan>
varchar年代pan>
(年代pan>
50年代pan>
)年代pan>
不年代pan>
零年代pan>
)年代pan>
;年代pan>
--<年代pan class="crayon-e">回滚年代pan>
下降年代pan>
表格年代pan>
P1年代pan>
;年代pan>
创建年代pan>
表格年代pan>
P2年代pan>
(年代pan>
id年代pan>
int年代pan>
主要的年代pan>
关键年代pan>
auto_increment年代pan>
不年代pan>
零年代pan>
,年代pan>
名字年代pan>
varchar年代pan>
(年代pan>
50年代pan>
)年代pan>
不年代pan>
零年代pan>
)年代pan>
;年代pan>
--<年代pan class="crayon-e">回滚年代pan>
下降年代pan>
表格年代pan>
P2年代pan>
;年代pan>
|
选项的细节:
AJ:1 =>表示作者:id年代pan>
label:label1 =>指定标签,这是对变更集(如上下文)进行分类的通用方法。年代pan>
context:context1 =>如果在运行时传递了特定的上下文,则执行更改。任何字符串都可以用作上下文名称年代pan>
2)<年代pan style="font-weight: 400;">接下来,运行部署。在项目位置中运行以下命令。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">部署年代pan>
. sql年代pan>
更新年代pan>
|
3)<年代pan style="font-weight: 400;">现在,添加标签来管理回滚场景。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
标签年代pan>
version4年代pan>
|
4)默认在最近的部署中添加标签。我们可以在下面的表格中检查相同的情况。年代pan>
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
|
mysql年代pan>
>年代pan>
选择年代pan>
*<年代pan class="crayon-h">
从年代pan>
DATABASECHANGELOGG年代pan>
;年代pan>
ID年代pan>
:年代pan>
1年代pan>
作者年代pan>
:年代pan>
AJ年代pan>
文件名年代pan>
:年代pan>
部署年代pan>
. sql年代pan>
DATEEXECUTED年代pan>
:年代pan>
2022年代pan>-<年代pan class="crayon-cn">11年代pan>-<年代pan class="crayon-cn">28年代pan>
07年代pan>
:年代pan>
09年代pan>
:年代pan>
11年代pan>
ORDEREXECUTED年代pan>
:年代pan>
3.年代pan>
EXECTYPE年代pan>
:年代pan>
执行年代pan>
MD5SUM年代pan>
:年代pan>
8年代pan>
:年代pan>
2 e4e38d36676981952c21ae0b51895ef年代pan>
描述年代pan>
:年代pan>
sql年代pan>
评论年代pan>
:年代pan>
DDL年代pan>
创建年代pan>
标签年代pan>
:年代pan>
version4年代pan>
LIQUIBASE年代pan>
:年代pan>
4.17.2年代pan>
上下文年代pan>
:年代pan>
context1年代pan>
标签年代pan>
:年代pan>
label1年代pan>
DEPLOYMENT_ID年代pan>
:年代pan>
9619351799年代pan>
|
5)<年代pan style="font-weight: 400;">让我们回滚已执行的更改。年代pan>该命令将恢复在指定标记之后对数据库所做的所有更改。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">部署年代pan>
. sql年代pan>
回滚年代pan>
version4年代pan>
|
输出:年代pan>
|
1
2
3.
4
5
|
开始年代pan>
Liquibase年代pan>
在年代pan>
07年代pan>
:年代pan>
38年代pan>
:年代pan>
36年代pan>
(年代pan>
版本年代pan>
4.17.2年代pan>
#5255建造于2022-11-01 18:07+0000)年代pan>
Liquibase年代pan>
版本年代pan>
:年代pan>
4.17.2年代pan>
Liquibase年代pan>
社区年代pan>
4.17.2年代pan>
通过年代pan>
Liquibase年代pan>
滚动年代pan>
回来年代pan>
变更集年代pan>
:年代pan>
部署年代pan>
. sql年代pan>
:年代pan>
:年代pan>
1年代pan>
:年代pan>
:年代pan>
AJ年代pan>
Liquibase年代pan>
命令年代pan>
“回滚”年代pan>
是年代pan>
执行年代pan>
成功年代pan>
。年代pan>
|
请注意发布此活动后,我们将不再在数据库中看到这些表(P1,P2)。作为回滚操作,这些表现在被删除了。年代pan>
或者,我们也可以根据时间戳执行回滚活动。下面的命令用于将对数据库所做的所有更改从当前日期恢复到指定的日期和时间。年代pan>
例如,
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">部署年代pan>
. sql年代pan>
回滚年代pan>-<年代pan class="crayon-st">来年代pan>-<年代pan class="crayon-r">日期年代pan>
2022年代pan>-<年代pan class="crayon-cn">11年代pan>-<年代pan class="crayon-cn">27年代pan>
|
输出:年代pan>
|
1
2
3.
4
5
|
开始年代pan>
Liquibase年代pan>
在年代pan>
07年代pan>
:年代pan>
18年代pan>
:年代pan>
26年代pan>
(年代pan>
版本年代pan>
4.17.2年代pan>
#5255建造于2022-11-01 18:07+0000)年代pan>
Liquibase年代pan>
版本年代pan>
:年代pan>
4.17.2年代pan>
Liquibase年代pan>
社区年代pan>
4.17.2年代pan>
通过年代pan>
Liquibase年代pan>
滚动年代pan>
回来年代pan>
变更集年代pan>
:年代pan>
部署年代pan>
. sql年代pan>
:年代pan>
:年代pan>
1年代pan>
:年代pan>
:年代pan>
AJ年代pan>
Liquibase年代pan>
命令年代pan>
“rollback-to-date”年代pan>
是年代pan>
执行年代pan>
成功年代pan>
。年代pan>
|
Liquibase与Percona Toolkit的集雷竞技下载官网成(pt-osc)
的pt-online-schema-change特性提供了一个Liquibase扩展雷竞技下载官网Percona工具包。通过使用pt-osc而不是SQL,这个扩展替代了几个默认更改。借助pt-online-schema-change工具,可以升级数据库而不锁定任何表。年代pan>
让我们看看使用pt-osc和Liquibase扩展的步骤
1)<年代pan style="font-weight: 400;">下载Percona Liq雷竞技下载官网uibase jar文件。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
wget年代pan>
https年代pan>
:年代pan>//<年代pan class="crayon-i">github年代pan>
com年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-i">liquibase年代pan>-<年代pan class="crayon-i">雷竞技下载官网/<年代pan class="crayon-i">释放年代pan>/<年代pan class="crayon-i">下载年代pan>/<年代pan class="crayon-i">v4年代pan>
。年代pan>
17.1年代pan>/<年代pan class="crayon-i">liquibase年代pan>-<年代pan class="crayon-i">雷竞技下载官网-<年代pan class="crayon-cn">4.17.1.jar年代pan>
|
2)<年代pan style="font-weight: 400;">将jar文件复制到Liquibase内部库文件夹。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
sudo年代pan>
cp年代pan>
liquibase年代pan>-<年代pan class="crayon-i">雷竞技下载官网-<年代pan class="crayon-cn">4.17.1.jar年代pan>
/<年代pan class="crayon-i">usr年代pan>/<年代pan class="crayon-i">当地的年代pan>/<年代pan class="crayon-i">箱子年代pan>/<年代pan class="crayon-i">liquibase年代pan>/<年代pan class="crayon-i">内部年代pan>/<年代pan class="crayon-i">自由年代pan>/
|
3)<年代pan style="font-weight: 400;">在changelog.xml文件中添加以下更改集,它基本上在表:liq1中添加了一列(“osc”)。年代pan>
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?年代pan>
xml年代pan>
版本年代pan>=<年代pan class="crayon-s">“1.0”年代pan>
编码年代pan>=<年代pan class="crayon-s">“utf - 8”年代pan>
? >年代pan>
<年代pan>
databaseChangeLog年代pan>
xmlns年代pan>=<年代pan class="crayon-s">“http://www.liquibase.org/xml/ns/dbchangelog”年代pan>
xmlns年代pan>
:年代pan>
xsi年代pan>=<年代pan class="crayon-s">“http://www.w3.org/2001/XMLSchema-instance”年代pan>
xmlns年代pan>
:年代pan>
ext年代pan>=<年代pan class="crayon-s">“http://www.liquibase.org/xml/ns/dbchangelog-ext”年代pan>
xmlns年代pan>
:年代pan>
箴年代pan>=<年代pan class="crayon-s">“http://www.liquibase.org/xml/ns/pro”年代pan>
xsi年代pan>
:年代pan>
schemaLocation年代pan>= "<年代pan class="crayon-i">http年代pan>
:年代pan>//<年代pan class="crayon-i">www年代pan>
.liquibase年代pan>
.org年代pan>/<年代pan class="crayon-i">xml年代pan>/<年代pan class="crayon-i">ns年代pan>/<年代pan class="crayon-e">dbchangelog年代pan>
http年代pan>
:年代pan>//<年代pan class="crayon-i">www年代pan>
.liquibase年代pan>
.org年代pan>/<年代pan class="crayon-i">xml年代pan>/<年代pan class="crayon-i">ns年代pan>/<年代pan class="crayon-i">dbchangelog年代pan>/<年代pan class="crayon-i">dbchangelog年代pan>-<年代pan class="crayon-i">最新的年代pan>
. xsd年代pan>
http年代pan>
:年代pan>//<年代pan class="crayon-i">www年代pan>
.liquibase年代pan>
.org年代pan>/<年代pan class="crayon-i">xml年代pan>/<年代pan class="crayon-i">ns年代pan>/<年代pan class="crayon-i">dbchangelog年代pan>-<年代pan class="crayon-e">ext年代pan>
http年代pan>
:年代pan>//<年代pan class="crayon-i">www年代pan>
.liquibase年代pan>
.org年代pan>/<年代pan class="crayon-i">xml年代pan>/<年代pan class="crayon-i">ns年代pan>/<年代pan class="crayon-i">dbchangelog年代pan>/<年代pan class="crayon-i">dbchangelog年代pan>-<年代pan class="crayon-i">ext年代pan>
. xsd年代pan>
http年代pan>
:年代pan>//<年代pan class="crayon-i">www年代pan>
.liquibase年代pan>
.org年代pan>/<年代pan class="crayon-i">xml年代pan>/<年代pan class="crayon-i">ns年代pan>/<年代pan class="crayon-e">箴年代pan>
http年代pan>
:年代pan>//<年代pan class="crayon-i">www年代pan>
.liquibase年代pan>
.org年代pan>/<年代pan class="crayon-i">xml年代pan>/<年代pan class="crayon-i">ns年代pan>/<年代pan class="crayon-i">箴年代pan>/<年代pan class="crayon-i">liquibase年代pan>-<年代pan class="crayon-i">箴年代pan>-<年代pan class="crayon-i">最新的年代pan>
. xsd年代pan>”<年代pan class="crayon-h">>年代pan>
<年代pan>
变更集年代pan>
id年代pan>=<年代pan class="crayon-s">“3”年代pan>
作者年代pan>=<年代pan class="crayon-s">“AJ”年代pan>
>年代pan>
<年代pan>
addColumn年代pan>
的表年代pan>=<年代pan class="crayon-s">“liq1”年代pan>
xmlns年代pan>
:年代pan>
liquibase雷竞技下载官网Percona年代pan>=<年代pan class="crayon-s">“http://www.liquibase.org/xml/ns/dbchangelog-ext/liquibase-雷竞技下载官网percona”年代pan>
liquibase雷竞技下载官网Percona年代pan>
:年代pan>
use雷竞技下载官网Percona年代pan>=<年代pan class="crayon-s">“真正的”年代pan>
>年代pan>
<年代pan>
列年代pan>
名字年代pan>=<年代pan class="crayon-s">“osc”年代pan>
类型年代pan>=<年代pan class="crayon-s">“varchar(255)”年代pan>/<年代pan class="crayon-h">>年代pan>
<年代pan>/<年代pan class="crayon-i">addColumn年代pan>
>年代pan>
<年代pan>/<年代pan class="crayon-i">变更集年代pan>
>年代pan>
<年代pan>/<年代pan class="crayon-i">databaseChangeLog年代pan>
>年代pan>
|
请注意-这里我们提到使用Percona= " true "雷竞技下载官网,它可以通过pt-osc来执行DDL。年代pan>
4)<年代pan style="font-weight: 400;">在实际实现之前验证部署更改。我们可以在下面看到将在下一阶段执行的pt-osc命令参考。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">更新日志年代pan>
. xml年代pan>
更新年代pan>-<年代pan class="crayon-i">sql年代pan>
|
输出年代pan>
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
|
Liquibase年代pan>
社区年代pan>
4.17.2年代pan>
通过年代pan>
Liquibase年代pan>
--<年代pan class="crayon-h">*********************************************************************
--<年代pan class="crayon-h">
更新年代pan>
数据库年代pan>
脚本年代pan>
--<年代pan class="crayon-h">*********************************************************************
--<年代pan class="crayon-h">
改变年代pan>
日志年代pan>
:年代pan>
更新日志年代pan>
. xml年代pan>
--<年代pan class="crayon-h">
跑年代pan>
在年代pan>
:年代pan>
11年代pan>/<年代pan class="crayon-cn">28年代pan>/<年代pan class="crayon-cn">22年代pan>
8年代pan>
:年代pan>
28年代pan>
我年代pan>
--<年代pan class="crayon-h">
反对年代pan>
:年代pan>
根年代pan>
@年代pan>
本地主机年代pan>
@年代pan>
jdbc年代pan>
:年代pan>
mysql年代pan>
:年代pan>//<年代pan class="crayon-i">本地主机年代pan>
:年代pan>
3306年代pan>/<年代pan class="crayon-i">液体年代pan>
--<年代pan class="crayon-h">
Liquibase年代pan>
版本年代pan>
:年代pan>
4.17.2年代pan>
--<年代pan class="crayon-h">*********************************************************************
--<年代pan class="crayon-h">
锁年代pan>
数据库年代pan>
更新年代pan>
液体年代pan>
.DATABASECHANGELOGLOCK年代pan>
集年代pan>
`年代pan>
锁着的年代pan>
`年代pan>
=<年代pan class="crayon-h">
1年代pan>
,年代pan>
LOCKEDBY年代pan>
=<年代pan class="crayon-h">
“localhost。当地的domain (10.0.2.15)'年代pan>
,年代pan>
LOCKGRANTED年代pan>
=<年代pan class="crayon-h">
现在年代pan>
(年代pan>
)年代pan>
在哪里年代pan>
ID年代pan>
=<年代pan class="crayon-h">
1年代pan>
和年代pan>
`年代pan>
锁着的年代pan>
`年代pan>
=<年代pan class="crayon-h">
0年代pan>
;年代pan>
--<年代pan class="crayon-h">
变更集年代pan>
更新日志年代pan>
. xml年代pan>
:年代pan>
:年代pan>
3.年代pan>
:年代pan>
:年代pan>
AJ年代pan>
--<年代pan class="crayon-h">
pt年代pan>-<年代pan class="crayon-i">在线年代pan>-<年代pan class="crayon-i">模式年代pan>-<年代pan class="crayon-i">改变年代pan>
--<年代pan class="crayon-i">改变年代pan>-<年代pan class="crayon-i">外国年代pan>-<年代pan class="crayon-i">键年代pan>-<年代pan class="crayon-i">方法年代pan>=<年代pan class="crayon-i">汽车年代pan>
--<年代pan class="crayon-i">nocheck年代pan>-<年代pan class="crayon-i">独特的年代pan>-<年代pan class="crayon-i">关键年代pan>-<年代pan class="crayon-i">改变年代pan>
--<年代pan class="crayon-i">改变年代pan>=<年代pan class="crayon-s">ADD COLUMN osc VARCHAR(255) NULL年代pan>
--<年代pan class="crayon-i">密码年代pan>= * * *<年代pan class="crayon-h">--<年代pan class="crayon-i">执行年代pan>
h年代pan>=<年代pan class="crayon-i">本地主机年代pan>
,年代pan>
P年代pan>=<年代pan class="crayon-cn">3306年代pan>
,年代pan>
u年代pan>=<年代pan class="crayon-i">根年代pan>
,年代pan>
D年代pan>=<年代pan class="crayon-i">液体年代pan>
,年代pan>
t年代pan>=<年代pan class="crayon-i">liq1年代pan>
;年代pan>
|
5)<年代pan style="font-weight: 400;">最后,运行部署。年代pan>
|
1
|
壳牌年代pan>
>年代pan>
liquibase年代pan>
--<年代pan class="crayon-i">更新日志年代pan>-<年代pan class="crayon-r">文件年代pan>=<年代pan class="crayon-i">更新日志年代pan>
. xml年代pan>
更新年代pan>
|
总结
除了MySQL, Liquibase还支持其他流行的数据库,如PostgreSQL、Cassandra和MongoDB。开发人员从中受益匪浅,因为他们可以合作编写自己的与数据库相关的脚本,然后将它们作为代码的一部分提交。它维护所有更改的版本,就像任何其他版本控制更改一样,并支持SQL代码的分支和合并。年代pan>

想要每周更新最新的博客文章?
现在订阅,我们将在每周五东部时间下午1点向您发送最新消息。
相关博客文章
推荐的文章
2023年3月29日
Smit Arora
修复分区表中错位的行
2023年3月27日
卡洛斯Tutte
从information_schema查询表信息的影响
2023年3月24日
Yura呢Sorokin
使用mysqldump 8.0.32时,“需要重载/FLUSH_TABLES特权”问题的解决方案
最受欢迎文章
2023年1月17日
谢尔盖Pronin
使用Percona Advisors确保数据库安全雷竞技下载官网
2023年2月10日
马塞洛•阿尔特曼
雷竞技下载官网Percona XtraBackup现在支持IAM实例配置文件
2023年2月10日
拉蒂。乔杜里
雷竞技下载官网Percona XtraBackup和MySQL 5.7等待刷新表状态查询