装饰工程 技术支持 东莞网站建设,岳池住房和城乡建设厅网站,wordpress扫码提交数据,注册网站法律风险TiDB从0到1系列
TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容TiDB-从0到1-数据导出导入TiDB-从0到1-BR工具
一、DM原理
支持全量抽取数据\检测新的数据变化同步到下游实例…
TiDB从0到1系列
TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容TiDB-从0到1-数据导出导入TiDB-从0到1-BR工具
一、DM原理
支持全量抽取数据\检测新的数据变化同步到下游实例其实与canal类似相当于上游数据库的从节点监听binlog变化。
二、DM功能
支持DML和DDL同步复制支持合库合表同步复制内置过滤器集中管理同步任务支持高可用部署 三、DM使用注意事项
dmctl负责发送任务请求给DM mastermaster负责调度任务DM worker负责具体的同步工作一个DM worker只能对应一个任务上游数据库适用于mysql 5.5~8.0和mariadb 10.1.2。当然mysql8.0也可以只是部分语句兼容性较差。DDL有部分限制如果失败会跳过
四、部署DM环境
安装dm和dmctl工具 tiup install dm dmctl 生成dm配置文件 tiup dm template topology_dm.yaml #修改文件内对应内容 global: user: “tidb” ssh_port: 22 deploy_dir: “/dm-deploy” data_dir: “/dm-data” server_configs: master: log-level: info # rpc-timeout: “30s” # rpc-rate-limit: 10.0 # rpc-rate-burst: 40 worker: log-level: info master_servers: – host: 10.0.1.11 name: master1 ssh_port: 22 port: 8261 # peer_port: 8291 # deploy_dir: “/dm-deploy/dm-master-8261” # data_dir: “/dm-data/dm-master-8261” # log_dir: “/dm-deploy/dm-master-8261/log” # numa_node: “0,1” # 下列配置项用于覆盖 server_configs.master 的值。 config: log-level: info # rpc-timeout: “30s” # rpc-rate-limit: 10.0 # rpc-rate-burst: 40 – host: 10.0.1.18 name: master2 ssh_port: 22 port: 8261 – host: 10.0.1.19 name: master3 ssh_port: 22 port: 8261 # 如果不需要确保 DM 集群高可用则可只部署 1 个 DM-master 节点且部署的 DM-worker 节点数量不少于上游待迁移的 MySQL/MariaDB 实例数。 # 如果需要确保 DM 集群高可用则推荐部署 3 个 DM-master 节点且部署的 DM-worker 节点数量大于上游待迁移的 MySQL/MariaDB 实例数如 DM-worker 节点数量比上游实例数多 2 个。 worker_servers: – host: 10.0.1.12 ssh_port: 22 port: 8262 # deploy_dir: “/dm-deploy/dm-worker-8262” # log_dir: “/dm-deploy/dm-worker-8262/log” # numa_node: “0,1” # 下列配置项用于覆盖 server_configs.worker 的值。 config: log-level: info – host: 10.0.1.19 ssh_port: 22 port: 8262 monitoring_servers: – host: 10.0.1.13 ssh_port: 22 port: 9090 # deploy_dir: “/tidb-deploy/prometheus-8249” # data_dir: “/tidb-data/prometheus-8249” # log_dir: “/tidb-deploy/prometheus-8249/log” grafana_servers: – host: 10.0.1.14 port: 3000 # deploy_dir: /tidb-deploy/grafana-3000 alertmanager_servers: – host: 10.0.1.15 ssh_port: 22 web_port: 9093 # cluster_port: 9094 # deploy_dir: “/tidb-deploy/alertmanager-9093” # data_dir: “/tidb-data/alertmanager-9093” # log_dir: “/tidb-deploy/alertmanager-9093/log” 查看dm可用的版本 tiup list dm 部署 tiup dm deploy dm-test v7.5.2 ./topology_dm.yaml --user root -p 查看dm列表 tiup dm list tiup dm display dm-test 启动dm tiup dm start dm-test 查看dm-test状态 tiup dm display dm-test 五、DM应用
1、准备上游配置文件对应mysql vim mysql-source-conf1.yaml source-id: mysql-replica-01
from:host: xxx.xxx.xxx.xxport: 3306user: dbapassword: xxxxxxx #这里的密码可以是明文也可以是通过dm-ctl加密后的密文2、创建应用 tiup dmctl --master-addrxxx.xx.xx.xx:8261 operate-source create mysql-source-conf1.yaml #查看dm应用信息 tiup dmctl --master-addrxxx.xxx.xxx.xx:8261 operate-source show #查看详细信息 tiup dmctl --master-addrxxx.xxx.xxx.xx:8261 get-config source mysql-replica-01 3、创建下游同步规则基础配置 vim dm-task1.yaml name: dm-task1
#全量增量
task-mode: all
#不检查自增主键
ignore-checking-items: [auto_increment_ID]#下游tidb配置
target-database:host: xx.xxx.xxx.xxport: 4000user: dbapassword: 123456#上游mysql关联配置
mysql-instances:- source-id: mysql-replica-01route-rules: [instance-1-user-rule]#规则,上游的blade_client表到下游的blade_client表表名可以变
routes:instance-1-user-rule:schema-pattern: t100wtarget-schema: t100w4、校验同步配置 tiup dmctl --master-addrxx.xx.xx.xx:8261 check-task dm-task1.yaml 有报错需先处理不然后续同步可能会受 影响 正常结果
5、启动数据同步任务 tiup dmctl --master-addrxx.xxx.xxx.xx:8261 start-task dm-task1.yaml 6、查看同步状态 tiup dmctl --master-addrxx.xx.xx.xx:8261 query-status dm-task1.yaml 7、暂停同步 tiup dmctl --master-addrxx.xxx.xxx.xx:8261 pause-task dm-task1.yaml 8、恢复同步 tiup dmctl --master-addrxxx.xxx.xxx.xx:8261 resume-task dm-task1.yaml 9、终止同步任务 tiup dmctl --master-addrxxx.xxx.xxx.xx:8261 stop-task dm-task1.yaml 六、DM扩缩容
1、worker节点下线 tiup dm scale-in dm-test -N xxx.xx.xxx.xx:8262 2、新增work节点 vim dm-scale.yaml worker_servers:
- host: xxx.xxx.xxx.xxtiup dm scale-out dm-test dm-scale.yaml -uroot -p 彩蛋
其实如果上游数据量较小100G以内且业务允许在低峰期中断的情况下 直接使用dumpling来迁移更加方便。 当然也可以使用TiDB作为MySQL的下游归档库dm-task1.yaml配置中支持多样化的过滤配置。