数据库无锁变更工具gh-ost的使用

运行要求

  • 数据库参数 binlog_row_image 值为FULL,变更此参数不需要重启数据库,重新连接客户端即可。
  • 数据库剩余空间大于变更表目前占用空间的一倍。
  • 被变更的表必须拥有主键或不为空的唯一索引列。
  • 交互式命令需要依赖socat,安装命令apt install -y socat

运行参数示例

bash 复制代码
#!/bin/bash

# 运行基本信息
WORK_PATH=/home/debian/gh-ost
DB_HOST="localhost"
DB_PORT=3306
DB_USER="root"
DB_PASS="root"
DB_NAME="demo"

# SQL里不要带有`字段注释使用'包裹
ALTER_SQL="alter table order_detail_0115 DROP COLUMN gh_ost,ADD COLUMN gh_ost varchar(255) NULL"

# 以下是运行参数,非必要不要修改
$WORK_PATH/gh-ost \
--max-load="Threads_running=100,Threads_connected=600" \
--critical-load="Threads_running=150,Threads_connected=800" \
--chunk-size=3000 \
--initially-drop-old-table \
--initially-drop-ghost-table \
--initially-drop-socket-file \
--ok-to-drop-table \
--allow-on-master \
--allow-master-master \
--default-retries=60 \
--host="$DB_HOST" \
--port=$DB_PORT \
--user="$DB_USER" \
--password="$DB_PASS" \
--database="$DB_NAME" \
--alter="$ALTER_SQL" \
--panic-flag-file=$WORK_PATH/panic.flag \
--postpone-cut-over-flag-file=$WORK_PATH/cut-over.flag \
--serve-socket-file=$WORK_PATH/socket.sock \
--verbose \
--execute

微软云参数

cmd 复制代码
gh-ost \
--azure \
--assume-master-host=master-server-dns-name \
--master-user="master-user-name" \
--master-password="master-password" \
--assume-rbr \
[-- other parameters you need]

阿里云参数

  • 阿里云MySQL数据库自带的有无锁变更功能,控制台提交任务即可。

交互式命令

bash 复制代码
# 查看状态
echo status | socat - ./socket.sock

# 暂停
echo throttle | socat - ./socket.sock
# 恢复
echo no-throttle | socat - ./socket.sock

#修改参数
echo chunk-size=1000 | socat - ./socket.sock

# 控制切换时机,结合运行参数postpone-cut-over-flag-file实现
rm -rf ./cut-over.flag

运行脚本封装

参考资料

相关推荐
一只小bit7 小时前
MySQL事务:如何保证ACID?MVCC到底如何工作?
数据库·mysql·oracle
·云扬·7 小时前
使用pt-archiver实现MySQL数据归档与清理的完整实践
数据库·mysql
weixin_46688 小时前
安装Zabbix7
数据库·mysql·zabbix
king_harry8 小时前
window server2008下Oracle 配置dblink查询 MySQL 数据
数据库·mysql·oracle·odbc·dblink
翻斗花园牛图图-9 小时前
MySQL——表的操作
数据库·mysql
August_._9 小时前
【MySQL】触发器、日志、锁机制 深度解析
java·大数据·数据库·人工智能·后端·mysql·青少年编程
Java 码农9 小时前
MySQL索引添加与删除方法详解
数据库·mysql
韩立学长10 小时前
【开题答辩实录分享】以《植物爱好者交流平台的设计与实现》为例进行答辩实录分享
spring boot·后端·mysql
笨手笨脚の10 小时前
Mysql 的锁机制
数据库·mysql··死锁·间隙锁
合作小小程序员小小店11 小时前
web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
开发语言·前端·数据库·mysql·html·php·电商