一、部署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