Binlog也是一套由TiDB提供备份与资料同步的工具。
资料同步的部分,就像他的名字一样很容易联想到MySQL的binlog,这方面功能也一样。
但是官网的资料上写着,使用上会遇到一些版本的限制,如果使用低於V5.0版本,会有部分功能不兼容的问题,V5.1版本以上就可以正常使用,所以启用前应详阅公开说明书。
Binlog主要有两个角色,负责搜集TiDB产生的binlog并且依据transaction commit顺序排序的Pump,以及由Pump搜集数据後,整合转化成指定格式的Drainer。Pump可以组成cluster,防止机器故障时资料不见。
官方有提供部署binlog的yaml的范本,下面一样撷取我做异动的部分。这边精简化部署,我各加一台Pump与Drainer,然後借用一下pd的机器...
server_configs:
tidb:
binlog.enable: true #打开binlog的开关
binlog.ignore-error: true #为了高可用,如果设定false,一旦binlog出了问题整个TiDB会停掉。
pump_servers:
- host: 10.102.1.92
drainer_servers:
- host: 10.102.1.195
config:
syncer.db-type: "mysql" #看你要同步到什麽地方 目前支援mysql、tidb、kafka、file
syncer.to.host: "10.102.1.34" #mysql的ip
syncer.to.user: "tidb_rep"
syncer.to.password: "密码自己想"
syncer.to.port: 3306
接着在TiDB新增一个资料库tidb_bin,新增一张表bin_test,然後写入五笔资料,中间因为开的栏位太小所以做了一次schema的异动。
mysql> create database tidb_bin;
Query OK, 0 rows affected (0.52 sec)
mysql> use tidb_bin;
Database changed
mysql> create table bin_test(id int,act varchar(5));
Query OK, 0 rows affected (0.52 sec)
mysql> insert into bin_test(id,act) values(1,'CREATE');
ERROR 1406 (22001): Data too long for column 'act' at row 1
mysql> ALTER table bin_test modify colmun act varchar(10);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 38 near "act varchar(10)"
mysql> ALTER table bin_test modify column act varchar(10);
Query OK, 0 rows affected (0.51 sec)
mysql> insert into bin_test(id,act) values(1,'CREATE');
Query OK, 1 row affected (0.02 sec)
mysql> insert into bin_test(id,act) values(2,'INSERT');
Query OK, 1 row affected (0.01 sec)
mysql> insert into bin_test(id,act) values(3,'UPDATE');
Query OK, 1 row affected (0.00 sec)
mysql> insert into bin_test(id,act) values(4,'DELETE');
Query OK, 1 row affected (0.01 sec)
mysql> insert into bin_test(id,act) values(5,'SELECT');
Query OK, 1 row affected (0.01 sec)
这时候发现MySQL只同步到新增Table,没有写入资料,原来是我漏了加上权限做schema异动。
帐号所需的权限有Insert、Update、Delete、Create、Drop、Alter、Execute、Index、Select。
所以把帐号加上ALTER权限後,再捞一次DB发现有值了。
mysql> select * from tidb_bin.bin_test;
+------+--------+
| id | act |
+------+--------+
| 2 | INSERT |
| 5 | SELECT |
| 1 | CREATE |
| 3 | UPDATE |
| 4 | DELETE |
+------+--------+
5 rows in set (0.00 sec)
>>: Day19 Helm manage Open-Match
最近看到一本书 Domain Storytelling: A Collaborative, Visu...
之前有幸在一次机会里,与几位在 DevOps 领域深耕多时的前辈对谈。那时前辈曾提到,在带新人时都会...
日子一天一天过, 周而复始,无限循环 C#里面也有重复不断的语句,while while回圈 执行前...
CSRF / XSRF CSRF 全称 Cross Site Request Forgery, 中文...
心得感想 经历了二十周,五个月的培训,从一个连回圈都不太懂的外行人,到可以自己写出一个App(虽...