zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

部署tidb同步到mysql(drainer)

2023-09-27 14:20:53 时间

环境:
TIDB:V6.0.0
Mysql:5.7
OS:Centos 7

192.168.1.118 pd,tidb,tikv,tiflash,monitoring,grafana,alertmanager,pump,drainer
192.168.1.85 pd,tidb,tikv,tiflash,pump
192.168.1.134 pd,tidb,tikv,pump

 

1.在mysq数据库中,添加同步用户
grant all on *.* to 'tidb_sync'@'%' identified by 'mysql';

 

2.编写scale-out-binlog.yaml文件
我这里已经部署了pump_servers,下面的pump_servers需要去掉,没有kafka的也也需要注释掉
vi /tmp/scale-drainer.yaml

#pump_servers:
#  - host: 192.168.40.160
#    config:
#      gc: 7
#      storage.stop-write-at-available-space: 200MB
drainer_servers:
  - host: 192.168.1.118
        ssh_port: 22
    port: 8249
    deploy_dir: "/tidb-deploy/drainer-8249"
    data_dir: "/tidb-data/drainer-8249"
    config:
      syncer.db-type: "mysql"
      syncer.to.host: "192.168.1.134"
      syncer.to.user: "tidb_sync"
      syncer.to.password: "mysql"
      syncer.to.port: 13306
    #kafka配置
      #syncer.db-type: "kafka"
      #syncer.to.kafka-addrs: "127.0.0.1:9092"
      #syncer.to.kafka-version: "0.8.2.0"

 

3.开始扩容
[root@localhost tmp]#tiup cluster scale-out mytidb_cluster /tmp/scale-drainer.yaml

 

4.查看集群状态
[root@localhost tmp]#tiup cluster display mytidb_cluster

 

5.开启binlog
[root@localhost tmp]#tiup cluster edit-config mytidb_cluster

server_configs:
  tidb:
    binlog.enable: true
    binlog.ignore-error: true

 

6.重新加载配置(集群会重启动)
[root@localhost tmp]#tiup cluster reload mytidb_cluster

 

7.查看集群状态

[root@localhost tmp]#tiup cluster display mytidb_cluster

 

8.验证
登陆一个tidb查看
[root@localhost ~]# /opt/mysql5727/bin/mysql -h 192.168.1.134 -P4000 -uroot -p
mysql> show variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.04 sec)

mysql> show pump status;
+--------------------+--------------------+--------+--------------------+---------------------+
| NodeID | Address | State | Max_Commit_Ts | Update_Time |
+--------------------+--------------------+--------+--------------------+---------------------+
| 192.168.1.118:8250 | 192.168.1.118:8250 | online | 433469605565702466 | 2022-05-26 16:57:47 |
| 192.168.1.134:8250 | 192.168.1.134:8250 | online | 433469605565702483 | 2022-05-26 16:57:46 |
| 192.168.1.85:8250 | 192.168.1.85:8250 | online | 433469605565702510 | 2022-05-26 16:57:47 |
+--------------------+--------------------+--------+--------------------+---------------------+
3 rows in set (0.44 sec)

mysql> show drainer status;
+--------------------+--------------------+--------+--------------------+---------------------+
| NodeID | Address | State | Max_Commit_Ts | Update_Time |
+--------------------+--------------------+--------+--------------------+---------------------+
| 192.168.1.118:8249 | 192.168.1.118:8249 | online | 433469605224644609 | 2022-05-26 16:57:49 |
+--------------------+--------------------+--------+--------------------+---------------------+
1 row in set (0.00 sec)

 

9.数据同步验证
登陆tidb建库,建表写入数据
[root@localhost ~]# /opt/mysql5727/bin/mysql -h 192.168.1.134 -P4000 -uroot -p
mysql> create database db_tidb_sync;
mysql> create table tb_sync_test(id int,name varchar(20));
Query OK, 0 rows affected (0.63 sec)

mysql> insert into tb_sync_test values(1,'name1');
Query OK, 1 row affected (0.36 sec)

mysql> insert into tb_sync_test values(2,'name2');
Query OK, 1 row affected (0.05 sec)

mysql> insert into tb_sync_test values(3,'name3');
Query OK, 1 row affected (0.02 sec)

mysql> select * from tb_sync_test;
+------+-------+
| id | name |
+------+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+------+-------+
3 rows in set (0.01 sec)

 

10.登陆mysql查看
[root@localhost data]# /opt/mysql5727/bin/mysql -h localhost -uroot -pmysql -S /opt/mysql5727/mysql.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db_tidb_sync |
| tidb_binlog |
+--------------------+
10 rows in set (0.00 sec)

mysql> show tables;
+------------------------+
| Tables_in_db_tidb_sync |
+------------------------+
| tb_sync_test |
+------------------------+
1 row in set (0.00 sec)

mysql> select * from tb_sync_test;
+------+-------+
| id | name |
+------+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+------+-------+
3 rows in set (0.00 sec)

看到数据同步过来了.

 

11.binlogctl工具使用
查看 pump 节点的状态
/root/.tiup/components/ctl/v6.0.0/binlogctl -pd-urls=http://192.168.1.118:2379 -cmd pumps

查看drainer节点的状态
/root/.tiup/components/ctl/v6.0.0/binlogctl -pd-urls=http://192.168.1.118:2379 -cmd drainers

 

12.停掉drainers

/root/.tiup/components/ctl/v6.0.0/binlogctl -pd-urls=http://192.168.1.118:2379 -cmd pause-drainer -node-id 192.168.1.118:8249

使用如下命令可以查看到node-id

tiup ctl:v6.0.0 binlog -pd-urls=http://192.168.1.118:2379 -cmd drainers

 

停掉以后可以使用如下命令启动(tiup cluster start xxxx -N drainer_id)

tiup cluster start mytidb_cluster -N 192.168.1.118:8249