部署 oblogproxy
1、obd 版本不低于 2.5.0。
2、拷贝 oblogproxy 配置文件模版
安装obd后,配置文件模版在/usr/obd/example,可以按需拷贝,本次部署的是 oblogproxy 组件 且测试环境有ocp (提供了config server 服务),如果我们使用的环境没有ocp,需要拷贝 distributed-with-obproxy-and-oblogproxy-example.yaml 文件,这里以 oblogproxy-only-example.yaml 为例:
3、编辑oblogproxy-only-example.yaml配置文件
user: username: admin key_file: /home/admin/.ssh/id_rsa oblogproxy: servers: - 172.24.255.96 version: 2.0.0 global: : /home/admin/oblogproxy service_port: 2983 ob_sys_username: "binlog_user" ob_sys_password: "aaAA11__" #binlog_dir: /root/oblogproxy/run #binlog_mode: true # enable binlog mode, default true
复制
4、部署和启动oblogproxy
obd cluster deploy oblogproxy -c oblogproxy-only-example.yaml -v obd cluster start oblogproxy -v
复制
5、创建用户并授权
在要创建 binlog 服务所在集群的sys租户下为 obd 配置的 ob_sys_username 创建账密并授权 oceanbase 库读权限。
create user binlog_user identified by 'aaAA11__'; grant select on oceanbase.* to binlog_user;
复制
6、在 obproxy 中配置 oblogproxy 服务地址
alter proxyconfig set enable_binlog_service='True'; alter proxyconfig set binlog_service_ip='172.24.255.96:2983'; alter proxyconfig set init_sql='set _show_ddl_in_compat_mode = 1;';
复制
7、创建 binlog 服务
mysql -h172.24.255.96 -P 2983 CREATE BINLOG FOR TENANT obtest.test1 WITH CLUSTER URL 'http://172.24.255.96:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=ocpmaster&ObRegion=obtest';
复制
步骤6、7中相关的命令和参数说明详见:
https://www.oceanbase.com/docs/community-oblogproxy-doc-1000000000438549
8、确认 binlog 服务是否正常
在创建 binlog 服务所在的用户租户下 执行:
mysql -h172.24.255.93 -P2883 -uroot@test1#obtest -pxxx -A -c MySQL [(none)]> show master status; +------------------+----------+--------------+------------------+------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+------------------------------------------+ | mysql-bin.000001 | 1158 | | | 013e0324-9fc6-11ee-8dfd-00163e0383a5:1-4 | +------------------+----------+--------------+------------------+------------------------------------------+ 1 row in set (0.24 sec)
复制
在obd 配置文件的 home_path/run 目录下会生成第7步创建binlog service对应的集群名的目录结构,在 run/{集群名}/{租户名}/data 目录下确认生成了我们熟悉的 binlog 文件。
tree -L 2 run/obtest run/obtest └── test1 ├── binlog_converter.conf ├── data ├── etc ├── log ├── run └── storage 6 directories, 1 file [root@172.24.255.96 data]$pwd /home/admin/oblogproxy/run/obtest/test1/data [root@172.24.255.96 data]$ [root@172.24.255.96 data]$ls -lrt 总用量 8 -rw-rw-r-- 1 admin admin 0 1月 3 14:50 index.LOCK -rw-rw-r-- 1 admin admin 116 1月 3 15:01 mysql-bin.index -rw-rw-r-- 1 admin admin 1158 1月 3 15:01 mysql-bin.000001 [root@172.24.255.96 data]$
复制
模拟数据
在 test1 租户下
create table t1(id int primary key,name varchar(20)); insert into t1 values(1,'a'),(2,'b'),(3,'c'); update t1 set name='aaa' where id=1;
复制
使用 my2sql 工具
my2sql 工具的说明: https://github.com/liuhr/my2sql
git clone https://github.com/liuhr/my2sql.git 执行后会在当前目录下生成一个 my2sql 目录 [root@172.24.255.96 ~]$cd my2sql/ [root@172.24.255.96 my2sql]$ls -lrt 总用量 80 -rw-r--r-- 1 root root 9662 1月 3 14:55 README.md -rw-r--r-- 1 root root 1046 1月 3 14:55 LICENSE drwxr-xr-x 3 root root 4096 1月 3 14:55 misc -rw-r--r-- 1 root root 1221 1月 3 14:55 main.go -rw-r--r-- 1 root root 12300 1月 3 14:55 go.sum -rw-r--r-- 1 root root 838 1月 3 14:55 go.mod drwxr-xr-x 2 root root 4096 1月 3 14:55 ehand drwxr-xr-x 2 root root 4096 1月 3 14:55 dsql drwxr-xr-x 2 root root 4096 1月 3 14:55 constvar drwxr-xr-x 2 root root 4096 1月 3 14:55 base drwxr-xr-x 3 root root 4096 1月 3 14:55 releases drwxr-xr-x 2 root root 4096 1月 3 14:55 toolkits drwxr-xr-x 2 root root 4096 1月 3 14:55 sqltypes drwxr-xr-x 2 root root 4096 1月 3 14:55 sqlbuilder drwxr-xr-x 4 root root 4096 1月 3 14:55 vendor [root@172.24.255.96 my2sql]$cd releases/ [root@172.24.255.96 releases]$ls -lrt 总用量 4 drwxr-xr-x 2 root root 4096 1月 3 14:55 centOS_release_7.x [root@172.24.255.96 releases]$cd centOS_release_7.x/ [root@172.24.255.96 centOS_release_7.x]$ll 总用量 7744 -rw-r--r-- 1 root root 107 1月 3 14:55 biglong_trx.txt -rw-r--r-- 1 root root 144 1月 3 14:55 binlog_status.txt -rwxr-xr-x 1 root root 7919430 1月 3 14:55 my2sql [root@172.24.255.96 centOS_release_7.x]$pwd /root/my2sql/releases/centOS_release_7.x
复制
my2sql 查看原始sql
/root/my2sql/releases/centOS_release_7.x/my2sql \ -user root@test1#obtest -password xxx -host 172.24.255.93 -port 2883 \ -mode file -local-binlog-file /home/admin/oblogproxy/run/obtest/test1/data/mysql-bin.000001 \ -work-type 2sql -start-file /home/admin/oblogproxy/run/obtest/test1/data/mysql-bin.000001 \ -start-datetime "2024-01-03 14:00:00" -stop-datetime "2024-01-03 16:00:00" \ -output-dir /tmp/test
复制
my2sql 查看回滚sql
/root/my2sql/releases/centOS_release_7.x/my2sql \ -user root@test1#obtest -password xxx -host 172.24.255.93 -port 2883 \ -mode file -local-binlog-file /home/admin/oblogproxy/run/obtest/test1/data/mysql-bin.000001 \ -work-type rollback -start-file /home/admin/oblogproxy/run/obtest/test1/data/mysql-bin.000001 \ -start-datetime "2024-01-03 14:00:00" -stop-datetime "2024-01-03 16:00:00" \ -output-dir /tmp/test2
复制
找业务评估回滚的sql,确认没有问题后执行即可实现数据误操作后回滚。