TiDB 学习第 4 天:数据同步工具 DM 实践

x33g5p2x  于2021-12-19 转载在 其他  
字(2.2k)|赞(0)|评价(0)|浏览(312)

一、部署DM集群

DM集群对环境要求如下:

1、部署目标机器若干,配置如下:

  • CentOS 7.3 (64-bit) 或更高版本,x86_64 架构(AMD64)
  • 机器之间内网互通
    关闭防火墙,或开放服务端口

2、一台中控机,配置如下:

  • 包含 Python 2.7 的 CentOS 7.3(64-bit)或更高版本
  • Ansible 2.5 或更高版本
  • 互联网访问
第一步、在中控机中安装依赖包

注意:这里需要使用root用户登陆

# yum -y install epel-release git curl sshpass
# yum -y install python-pip
第二步、在中控机上创建tidb用户,并生成SSH免密

1、创建tidb用户

# useradd -m -d /home/tidb tidb

2、为tidb用户设置密码

# passwd tidb

3、在在 sudo 文件尾部加上 tidb ALL=(ALL) NOPASSWD: ALL,为 tidb 用户设置免密使用 sudo。

# visudo

tidb ALL=(ALL) NOPASSWD: ALL

4、生成SSH密钥
执行以下 su 命令,将登陆用户从 root 切换至 tidb。

su - tidb

执行命令生成密钥,以下命令执行后一路回车

ssh-keygen -t rsa
第三步、下载 DM-Ansible 至中控机

1、这里下载请确保用户登陆的是tidb用户,打开/home/tidb目录

cd /home/tidb

2、执行以下命令下载

wget http://download.pingcap.org/dm-ansible-{version}.tar.gz   版本有v1.0.0-alpha、lates
第 四 步:安装 DM-Ansible 及其依赖至中控机

1、在中控机上安装 DM-Ansible 及其依赖包

$ tar -xzvf dm-ansible-latest.tar.gz
$ mv dm-ansible-latest dm-ansible
$ cd /home/tidb/dm-ansible
$ sudo pip install -r ./requirements.txt

Ansible 和相关依赖包含于 dm-ansible/requirements.txt 文件中。

2、安装好后查看Ansible版本

$ ansible --version
   ansible 2.6.15
第五步、在中控机上配置SSH互信和Sudo规则

注意:这里得确保中控机登陆的是tidb用户

1、将需要部署的目标机器IP添加至host.ini文件中的sercers部分
#编辑文件添加目标机器IP

vi hosts.ini 

ip1
ip2
ip3
……

2、运行如下命令,然后输入部署目标机器的 root 用户密码。

ansible-playbook -i hosts.ini create_users.yml -u root -k
第 六 步:下载 DM 及监控组件安装包至中控机

这里要求中控机要连接外网,在中控机上运行如下命令:

ansible-playbook local_prepare.yml
第七步、编辑 inventory.ini 配置文件
vi inventory.ini 
# 配置上游数据库信息 source_id代表DM-worker绑定到的一个数据库实例或是具有主从架构的复制组
# 配置上游数据库信息
dm_worker1 ansible_host=ip1
server_id=101 
source_id="mysql-replica-01" 
mysql_host=58.16.181.23 
mysql_user=root 
mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' 
mysql_port=3306
第八步、加密上游Mysql用户密码
cd /home/tidb/dm-ansible/resources/bin
 $ ./dmctl -encrypt rOOT!!2019                
 Y3dTmN/ZSr+e5xUt0bFjfkBjcO++og==
第九步、编辑配置文件inventory.ini 中的变量
1、配置部署目录

编辑 deploy_dir 变量以配置部署目录。

  • 全局变量默认设为 /home/tidb/deploy,适用于所有服务。如果数据盘挂载于 /data1 目录,您可以通过以下修改将其变更至 /data1/dm。如果没有挂载数据盘则使用默认目录
  • 如果需要为某个服务创建单独的部署目录,您可以在 inventory.ini 中配置服务主机列表的同时设置 host 变量。此操作需要您添加第一列别名,以避免在混合服务部署场景下产生混淆。
dm-master ansible_host=172.16.10.71 deploy_dir=/data1/deploy
2、配置replay log同步位置

首次启动 DM-worker 时,您需要配置 relay_binlog_name 变量以指定 DM-worker 拉取上游 MySQL 或 MariaDB binlog 的起始位置,如果是全量 + 增量 就是 all 模式的话就不需要指定replay log同步位置

3、配置任务,重命名task.yaml.templete文件为task.yaml后配置相应的数据同步参数

在数据同步之前需要检查系统端口是否开放,检查步骤
1)检查端口

netstat -tlunp   #执行此命令查看已经开放的端口

2)开启端口需要防火墙处于运行状态

systemctl start firewalld   #开启防火墙
第十步、启动DM集群

进入到DM工具包文件夹下执行以下命令启动DM集群

ansible-playbook start.yml

相关文章