# DM 的使用 - 创建数据源（上游数据库）

__*DM 使用*__
__*DM 源数据库*__
__*DM 上游数据库*__

```
tiup dmctl --master-addr <master-addr> operate-source create ./source-mysql-01.yaml

source-id: "mysql-replica-01"

enable-gtid: false

relay-binlog-name: ""
relay-binlog-gtid: ""

from:
  host: "127.0.0.1"
  port: 3306
  user: "root"
  password: "ZqMLjZ2j5khNelDEfDoUhkD5aV5fIJOe0fiog9w="

```
-------------------------------------------------------------
create:创建一个或多个上游的数据库源。创建多个数据源失败时,会尝试回滚到执行命令之前的状态

上游数据库（源数据库）的配置信息写入到  conf/sourceN.yaml 文件中,文件中主要包含信息为:源数据库 IP ,端口号,用户名,密码,是否开启GTID,是否开启 relay log等。
例子文件如下,假设是 MySQL 的第一个实例: 

source-id: "mysql-replica-01"

# 是否开启 GTID
enable-gtid: false

# 是否开启 relay log
relay-binlog-name: ""     # 拉取上游 binlog 的起始文件名
relay-binlog-gtid: ""     # 拉取上游 binlog 的起始 GTID

from:
  host: "127.0.0.1"
  port: 3306
  user: "root"
  password: "ZqMLjZ2j5khNelDEfDoUhkD5aV5fIJOe0fiog9w=" # 推荐使用 dmctl 对上游数据库的用户密码加密之后的密码

在终端中执行下面的命令,使用 tiup dmctl 将 MySQL 的数据源配置加载到 DM 集群中:
tiup dmctl --master-addr 172.16.10.71:8261 operate-source create conf/source1.yaml
对于 MySQL 第 N 个实例,修改配置文件中的相关信息,并执行相同的 dmctl 命令即可。

输出结果:
{
    "result": true,
    "msg": "",
    "sources": [
        {
            "result": true,
            "msg": "",
            "source": "mysql-replica-01",
            "worker": "dm-worker-1"
        }
    ]
}
