安裝
下載安裝包:
wget https://github.com/github/gh-ost/releases/download/v1.1.7/gh-ost-1.1.7-1.x86_64.rpm
安裝: rpm -ivh gh-ost-1.1.7-1.x86_64.rpm
可執行的條件:
- 參數default_storage_engine的值為InnoDB
- 參數binlog_format的值為ROW
庫內創建用户
---已有相同權限的用户,可以直接使用
create user ghost@'110.%' identified by 'ghost';
grant ALL PRIVILEGES on *.* to ghost@'110.%';
flush privileges;
執行示例
--直接連接主庫為例
3in1騰訊雲環境
--測試是否可行
gh-ost \
--host=10.112.8.1 \
--port=3306 \
--user="root" \
--password="xxx" \
--database="wechat2" \
--table="flow_flow" \
--alter='ADD COLUMN submitDate bigint GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`$json`, "$.form.submitDate"))) STORED, ADD COLUMN title text GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`$json`, "$.form.title"))) STORED, ADD COLUMN submitterId varchar(100) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`$json`, "$.form.submitterId"))) STORED' \
--aliyun-rds \
--allow-on-master \
--panic-flag-file=/tmp/ghost-panic.flag \
--verbose
--正式執行
nohup gh-ost \
--host=10.112.8.1 \
--port=3306 \
--user="root" \
--password="xxx" \
--database="wechat2" \
--table="flow_flow" \
--alter='ADD COLUMN submitDate bigint GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`$json`, "$.form.submitDate"))) STORED, ADD COLUMN title text GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`$json`, "$.form.title"))) STORED, ADD COLUMN submitterId varchar(100) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`$json`, "$.form.submitterId"))) STORED' \
--aliyun-rds \
--allow-on-master \
--panic-flag-file=/tmp/ghost-panic.flag \
--execute >gh-ost-flow_flow.log 2>&1 &
注意:
- 阿里雲/騰訊雲/華為雲上都需要制定參數--aliyun-rds
- 主節點上讀binlog 參數--allow-on-master
- 隨時停止參數--panic-flag-file
- 若報錯FATAL Unexpected database port reported: 3388(或其他端口),增加參數--assume-master-host=" 10.112.8.1 : 3388"
- --host要寫只寫節點的IP,不能是可讀可寫的proxy IP。
結尾:
全部為真實測試遇到的問題,如有沒有涉及到的,大家可補充。