当前位置: 首页 > wzjs >正文

公司网站建设公东莞seo优化排名

公司网站建设公,东莞seo优化排名,哪个网站音乐做的最好,做食物网站应该考虑些什么1. 确保安装了 Percona Toolkit 1.在目标环境中,确保系统中已正确安装 Percona Toolkit,尤其是 pt-online-schema-change 工具。 2. 数据库用户具备执行外部命令权限。 3. MySQL 配置启用: log_binbinlog_formatROW 目标表有主键或唯一索引…

1. 确保安装了 Percona Toolkit

1.在目标环境中,确保系统中已正确安装 Percona Toolkit,尤其是 pt-online-schema-change 工具。
2. 数据库用户具备执行外部命令权限。
3. MySQL 配置启用:

  • log_bin
  • binlog_format=ROW
  1. 目标表有主键或唯一索引。

2. 编写 Liquibase 自定义 Change Type 或使用 SQL 执行命令

Liquibase 支持通过 <sql> 标签执行原生 SQL 命令。你可以在 changelog 文件中直接调用 shell 命令来运行 pt-online-schema-change,例如:

<changeSet id="run-pt-online-schema-change" author="your-name"><sql><![CDATA[SET @schema_change := CONCAT('pt-online-schema-change --alter "ADD COLUMN new_column INT" D=your_database,t=your_table --execute');PREPARE stmt FROM @schema_change;EXECUTE stmt;DEALLOCATE PREPARE stmt;]]></sql>
</changeSet>

注意:上面的示例假设你正在使用 MySQL,并且你的数据库支持执行动态 SQL 和存储过程。

3. 配置 Liquibase 与环境兼容性

由于 pt-online-schema-change 是一个外部工具,需要确保:

  • 数据库用户有权限执行外部命令。
  • MySQL 的配置允许运行此类操作(如启用 log_binbinlog_format=ROW 等)。
  • 目标表存在合适的主键或唯一索引以支持该工具。

4. 测试和验证

建议在测试环境中先验证 pt-online-schema-change 的行为是否符合预期,并确保 Liquibase 能够成功调用并完成更改。

5. 可选:封装为自定义扩展

如果你希望更灵活地控制集成方式,可以考虑开发 Liquibase 的自定义扩展(Custom Change),将 pt-online-schema-change 封装成一个可复用的变更类型。

要在 Liquibase 中集成 pt-online-schema-change(Percona 的在线表结构变更工具),并支持表结构的增删改和索引操作,可以通过以下方式实现。


🧩 使用 Liquibase 调用 pt-online-schema-change

Liquibase 支持通过 <sql> 标签直接执行原生 SQL 或 Shell 命令。以下是一些常见操作示例:

1. 新增列

<changeSet id="add-column" author="example"><sql><![CDATA[SELECT sys_exec('pt-online-schema-change --alter "ADD COLUMN new_column VARCHAR(255)" D=my_database,t=my_table --execute') INTO @out;]]></sql>
</changeSet>

2. 删除列

<changeSet id="drop-column" author="example"><sql><![CDATA[SELECT sys_exec('pt-online-schema-change --alter "DROP COLUMN old_column" D=my_database,t=my_table --execute') INTO @out;]]></sql>
</changeSet>

3. 修改列定义

<changeSet id="modify-column" author="example"><sql><![CDATA[SELECT sys_exec('pt-online-schema-change --alter "MODIFY COLUMN column_name VARCHAR(500)" D=my_database,t=my_table --execute') INTO @out;]]></sql>
</changeSet>

4. 添加索引

<changeSet id="add-index" author="example"><sql><![CDATA[SELECT sys_exec('pt-online-schema-change --alter "ADD INDEX idx_name (column_name)" D=my_database,t=my_table --execute') INTO @out;]]></sql>
</changeSet>

5. 删除索引

<changeSet id="drop-index" author="example"><sql><![CDATA[SELECT sys_exec('pt-online-schema-change --alter "DROP INDEX idx_name ON my_table" D=my_database,t=my_table --execute') INTO @out;]]></sql>
</changeSet>

🔌 注意事项

  • sys_exec 函数:MySQL 默认不提供 sys_exec,你需要安装 MariaDB 的 lib_mysqludf_sys 插件或使用其他方式调用 shell。
  • 安全性:确保只在受控环境中运行此类命令,避免安全风险。
  • 日志与回滚:建议将执行日志记录下来,并在失败时手动介入处理。

📦 可选:封装为自定义扩展

如果希望更规范地集成,可以开发一个 Liquibase 自定义 Change 类型,例如:

public class PtOnlineSchemaChangeChange extends AbstractChange {private String databaseName;private String tableName;private String alterStatement;// getters/setterspublic SqlStatement[] generateStatements(Database database) {return new SqlStatement[]{new RawSqlStatement(String.format("SELECT sys_exec('pt-online-schema-change --alter \"%s\" D=%s,t=%s --execute') INTO @out;",alterStatement, databaseName, tableName))};}
}

然后在 changelog 中使用:

<changeSet id="custom-pt-change" author="example"><customChange class="com.example.PtOnlineSchemaChangeChange"><param name="databaseName" value="my_database"/><param name="tableName" value="my_table"/><param name="alterStatement" value="ADD COLUMN new_col INT"/></customChange>
</changeSet>

✅ 总结

操作类型示例
新增列ADD COLUMN new_column VARCHAR(255)
删除列DROP COLUMN old_column
修改列MODIFY COLUMN column_name VARCHAR(500)
添加索引ADD INDEX idx_name (column_name)
删除索引DROP INDEX idx_name ON my_table

通过上述方式,你可以灵活地在 Liquibase 中集成 pt-online-schema-change 来实现零停机时间的表结构变更。

http://www.dtcms.com/wzjs/407303.html

相关文章:

  • 朝阳做网站的公司大数据培训班需要多少钱
  • 天津网站建设系统网站安全检测平台
  • 塑胶原料 东莞网站建设湖南企业网站建设
  • 广告发布计划怎么写重庆网站seo外包
  • 网站建设公司销售提成网络优化这个行业怎么样
  • 电子商务网站进度的基本流程专业竞价托管哪家好
  • 服装批发网seo关键词优化怎么做
  • 济南官网seo技术厂家青岛谷歌seo
  • 松江网站开发关键词推广
  • http网站跳转怎么做网站制作和推广
  • 宁波seo营销技巧电影站的seo
  • 站牛网是做什么的网络营销推广方案ppt
  • 做搜狗网站快速排名重庆百度整站优化
  • 面对面视频 网站开发百度站内搜索代码
  • 淘宝做基础销量网站免费的个人主页网页制作网站
  • 公关做的好的网站seo培训赚钱
  • b2c电子商务网站建设seo包年优化费用
  • 重庆做商城网站建设前端seo优化
  • 做网站用go语言还是php百度培训
  • 新开的网站怎么做推广seo关键词排名优化技巧
  • 网站建设与seo优化的公司市场监督管理局职责
  • 深圳住房与建设局网站一句简短走心文案
  • 网站后台如何添加代码软件开发公司推荐
  • 深圳市政府网站建设 网站管理广州百度推广外包
  • 做跨国婚恋网站赚钱吗深圳百度推广seo公司
  • 做植物提取物好的推广网站手机网站百度关键词排名
  • 广州在线网页制作工具石家庄手机端seo
  • 桂林网站优化选择桂林速优网络公司搜索引擎营销的优势
  • 华大基因 网站公司建设深圳seo优化方案
  • 男女做爰高清免费视频网站各大网站收录提交入口