

# mysql.rds\$1set\$1external\$1master\$1gtid
<a name="mysql_rds_set_external_master_gtid"></a>

配置从在 Amazon RDS 外部运行的 MariaDB 实例到 MariaDB 数据库实例的基于 GTID 的复制。仅当外部 MariaDB 实例的版本为 10.0.24 或更高版本时，才支持此存储过程。在设置复制时，如果其中的一个或两个实例不支持 MariaDB 全局事务标识符 (GTID)，请使用 [mysql.rds\$1set\$1external\$1master（RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本）](mysql-stored-proc-replicating.md#mysql_rds_set_external_master)。

使用 GTID 进行复制提供了二进制日志复制无法提供的崩溃安全功能，因此，我们建议在复制实例支持 GTID 的情况下使用它。

## 语法
<a name="mysql_rds_set_external_master_gtid-syntax"></a>

 

```
CALL mysql.rds_set_external_master_gtid(
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , gtid
  , ssl_encryption
);
```

## 参数
<a name="mysql_rds_set_external_master_gtid-parameters"></a>

 *host\$1name*   
字符串。在 Amazon RDS 外部运行并将变为源实例的 MariaDB 实例的主机名或 IP 地址。

 *host\$1port*   
整数。在 Amazon RDS 外部运行的要配置为源实例的 MariaDB 实例使用的端口。如果网络配置包括转换端口号的 SSH 端口复制，则指定由 SSH 公开的端口号。

 *replication\$1user\$1name*   
字符串。在要配置为只读副本的 MariaDB 数据库实例中具有 `REPLICATION SLAVE` 权限的用户的 ID。

 *replication\$1user\$1password*   
字符串。在 `replication_user_name` 中指定的用户 ID 的密码。

 *gtid*   
字符串。应作为复制的起始点的源实例上的全局事务 ID。  
如果源实例在您配置复制时已被锁定，则可以使用 `@@gtid_current_pos` 获取当前 GTID，以便让二进制日志在您获得 GTID 和复制开始之间的这一段时间内不会改变。  
否则，如果您使用 `mysqldump` 版本 10.0.13 或更高版本在开始复制前填充副本实例，则可以使用 `--master-data` 或 `--dump-slave` 选项获取输出中的 GTID 位置。如果您不使用 `mysqldump` 10.0.13 版或更高版本，则可以运行 `SHOW MASTER STATUS` 或使用这些相同的 `mysqldump` 选项来获取二进制日志文件名称和位置，然后通过对外部 MariaDB 实例运行 `BINLOG_GTID_POS` 来将这些名称和位置转换为 GTID：  

```
SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);
```
有关 GTID 的 MariaDB 实施的更多信息，请参阅 MariaDB 文档中的[全局事务 ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/)。

 *ssl\$1encryption*   
指定是否在复制连接中使用安全套接字层（SSL）加密的值。1 表示使用 SSL 加密，0 表示不使用加密。默认值为 0。  
不支持 `MASTER_SSL_VERIFY_SERVER_CERT` 选项。此选项设置为 0，这意味着连接已加密，但未验证证书。

## 使用说明
<a name="mysql_rds_set_external_master_gtid-usage-notes"></a>

`mysql.rds_set_external_master_gtid` 过程必须由主用户运行。它必须在 MariaDB 数据库实例（由您配置为在 Amazon RDS 外部运行的 MariaDB 实例的副本）上运行。在运行 `mysql.rds_set_external_master_gtid` 之前，必须将在 Amazon RDS 外部运行的 MariaDB 实例配置为源实例。有关更多信息，请参阅“[将数据导入到 Amazon RDS for MariaDB 数据库实例](MariaDB.Procedural.Importing.md)”。

**警告**  
请勿使用 `mysql.rds_set_external_master_gtid` 管理两个 Amazon RDS 数据库实例之间的复制。仅当使用在 RDS 外部运行的 MariaDB 实例进行复制时，才能使用它。有关管理 Amazon RDS 数据库实例之间的复制的信息，请参阅[使用数据库实例只读副本](USER_ReadRepl.md)。

在调用 `mysql.rds_set_external_master_gtid` 将 Amazon RDS 数据库实例配置为只读副本后，可对该副本调用 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 开始复制过程。您可以调用 [mysql.rds\$1reset\$1external\$1master（RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本）](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 删除只读副本配置。

调用 `mysql.rds_set_external_master_gtid` 时，Amazon RDS 将时间、用户和“设置主体”的操作记录在 `mysql.rds_history` 和 `mysql.rds_replication_status` 表中。

## 示例
<a name="mysql_rds_set_external_master_gtid-examples"></a>

在 MariaDB 数据库实例上运行时，以下示例将该数据库实例配置为在 Amazon RDS 外部运行的某个 MariaDB 实例的副本。

```
call mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0); 
```