配置
- wget https://github.com/alibaba/otter/releases/download/otter-4.2.17/node.deployer-4.2.17.tar.gz
- mkdir /usr/local/otter/node02 mkdir /usr/local/otter/node03
- 解壓到指定目錄 tar zxvf node.deployer-4.2.17.tar.gz -C /usr/local/otter/node02
- tar zxvf node.deployer-4.2.17.tar.gz -C /usr/local/otter/node03
- vim node02/conf/otter.properties 修改manager ip
- vim node03/conf/otter.properties 修改manager ip(支持多個ip)
- vim /root/.bash_profile
- 添加aria2 安裝路徑到path /usr/local/otter/aria2-1.19.0/src
- 在manager頁面機器管理 -> node -> 添加node02 node03 注意端口號不要衝突 記錄node序號
- 使用 echo 2 > nid 命令 將各自的node序號寫入到各自conf文件夾下
- 啓動node
node支持多節點負載,
- 在Channel管理 > Pipeline管理 > 編輯Pipeline 中Select機器選擇多個節點
- load機器也選擇多個節點
- 如果某個節點掛斷,Pipeline 會自動切換節點,實現了高可用
單向同步配置流程
# 源數據庫操作
先確認源庫是否開啓了binlog,且binlog爲row模式
- show variables like '%log_bin%'; # 查詢binlog是否開啓
- show variables like 'binlog_format'; # 查詢binlog模式
- log-bin=mysql-bin
- binlog-format=ROW
- 鎖住源數據庫,
- 執行 show master status; 記錄binlog 當前寫入位點
- 執行 select UNIX_TIMESTAMP(NOW()) 記錄當前時間戳
- 導出要配置的同步的表或整個數據庫
- 將源數據庫解鎖
- 賬號授權 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 賬號@’%’;
# 目標數據庫操作
- 將備份數據數據導入到目標數據庫
- 賬號授權 update, insert, delete, update, alter(DDL語句同步), index(用於創建刪除索引)
otter同步測試
# update
- 目標表刪除已同步數據otter,不會修復此數據
- 目標表刪除已同步數據otter,otter不會報錯
- 關閉otter 修改/新增/刪除源表, 同樣語句在目標庫執行,重新開啓otter正常
- 刪除目標表數據,原表修改已刪除數據,otter沒有報錯,
- 列模式 不會有更新
- 行模式 會把丟失數據補回
- 修改目標表字段1,原表修改同一條數據字段2
- 列模式 字段同步模式 只同步字段2到目標庫,字段1不修改
- 列模式 組合同步模式 同步字段1,字段2均在組合中,字段1字段2都會同步到目標庫
- 行模式 修改任意源庫修改任何一個字段,都會把整行裏需要同步的數據同步到目標庫
# DDL
- DDL 在末尾追加無默認值字段,可正常同步ddl
- DDL 在末尾追加有默認字段,可正常同步ddl
- DDL 刪除已有字段,可正常同步ddl
# otter無縫取代主從
- 步驟1:mysql 主從異常,斷開主從開啓otter同步 正常同步
- 步驟2:關閉otter ,刪除從庫差異數據,開啓主從同步成功
- 步驟3:mysql 主從異常,不操作主從開啓otter同步 正常同步
# 部分數據同步
- 同步字段必須包含源表主鍵
- 目標表最好將同步過來的主鍵做唯一鍵限制
- 如果同步的主鍵被修改,本行數據也會根據主鍵修改
- 同步原來就是依據主鍵更新
# otter表配置支持正則
- 如果使用正則配置多個表使用同一個通道,如果其中一個表出現異常會導致channel掛起,整個同步終止