适用场景
Nacos 数据同步是通过数据库层面的数据导入,实现将自建的 Nacos 集群数据库中存储的配置数据、用户信息、命名空间数据、访问控制等信息全量迁移至 TSE Nacos 集群并进行实时增量同步。
Nacos 数据同步功能适用于以下场景:
自建 Nacos 迁移至 TSE Nacos,请参见 Nacos 迁移指南。
Nacos 多活容灾与就近访问,请参见 Nacos 多活容灾指南。
架构图
步骤1:TSE 创建 Nacos 实例
通过 TSE 控制台 创建 Nacos 实例,创建的环境信息需跟自建的 Nacos 一致。在数据同步的过程中,将会覆盖 TSE Nacos 实例原本的数据,所以建议 TSE Nacos 实例为空库,或在迁移前确保 TSE Nacos 的数据可以被覆盖。
步骤2:源 Nacos 数据库开启公网访问并检查配置
TSE Nacos 数据同步任务支持通过公网的方式,接入源数据库类型为自建数据库、腾讯云数据库、第三方云厂商数据库等,并实施数据同步。
在开始数据同步任务前,您需要先为您的源数据开启公网访问,并将数据同步任务的 IP 地址添加到源数据库的白名单中,以便数据同步任务可以与需要访问的数据库连通。
同时,请根据以下提供的校验项检查您的源 Nacos 数据库配置,校验失败将会导致数据同步失败。
操作指引
1. 根据源数据库所在地域,在下方获取对应地域 数据同步任务 的 IP 地址,将其加入到源数据库的白名单中。
自建数据库,请在防火墙设置中允许 数据同步任务 IP 地址访问。
Windows 系统:打开控制面板找到 Windows 防火墙,查看防火墙策略。
Linux 系统:请执行
iptables -L
命令,查看服务器防火墙策略。腾讯云数据库或者 CVM 上的自建数据库,请参考如下指导将 数据同步任务的 IP 地址添加到安全组中。
登录源数据库,在实例列表,单击实例 ID,进入实例管理页面。
在实例管理页面,选择安全组页或者数据安全页, 添加 DTS 服务的 IP 地址到安全组中。
第三方云厂商数据库,请添加 数据同步任务 IP 地址到相关的安全组配置中。
数据同步任务的 IP 地址:
地域 | 数据同步任务 IP 地址 |
广州 | 111.230.198.143,118.89.34.161,123.207.84.254,139.199.74.159 |
上海 | 111.231.139.59,111.231.142.94,115.159.71.186,182.254.153.245 |
北京 | 123.207.145.84,211.159.157.165,211.159.160.104,58.87.92.66 |
成都 | 111.231.225.99,118.24.42.158 |
重庆 | 139.186.122.1/24,129.28.12.1/24,129.28.14.1/24,139.186.77.242,139.186.109.1/24, 139.186.131.1/23,94.191.102.144,94.191.98.210 |
杭州ec | 111.231.139.59,111.231.142.94,115.159.71.186,182.254.153.245 |
南京 | 129.211.166.117,129.211.167.130 |
天津 | 154.8.246.150,154.8.246.48 |
深圳 | 118.126.124.6,118.126.124.83 |
中国香港 | 119.29.180.130,119.29.208.220,124.156.168.151,150.109.72.54 |
北京金融 | 62.234.240.36,62.234.241.241 |
深圳金融 | 118.89.251.206,139.199.90.75 |
上海金融 | 115.159.237.246,211.159.242.74 |
新加坡 | 119.28.103.40,119.28.104.184,119.28.116.123,150.109.11.113 |
雅加达 | 43.129.33.41,43.129.35.144 |
曼谷 | 150.109.164.203,150.109.164.82 |
孟买 | 119.28.246.130,119.28.246.18 |
首尔 | 119.28.150.71,119.28.157.173 |
东京 | 150.109.195.201,150.109.196.137 |
硅谷 | 49.51.38.216,49.51.39.189 |
弗吉尼亚 | 170.106.2.63,49.51.85.120 |
多伦多 | 45.113.70.156,45.113.70.6,49.51.10.104,49.51.9.221 |
法兰克福 | 49.51.132.38,49.51.133.85 |
2. 根据以下的配置校验项,检查您的源 Nacos 数据库配置正确:
校验项 | 说明 |
innodb_stats_on_metadata | 源数据库环境变量参数 innodb_stats_on_metadata 需要设置为 OFF。 innodb_stats_on_metadata 参数开启时,每当查询 information_schema 元数据库里的表,Innodb 就会更新 information_schema.statistics 表,导致访问时间变长。关闭后可加快对于 schema 库表的访问。 MySQL 5.6.6 之前版本 innodb_stats_on_metadata 参数预设值为 ON,需要修改为 OFF。MySQL 5.6.6 及其以后的版本预设值为 OFF,不存在问题。 |
数据库版本 | 源数据库版本 ≤ 8.0 |
数据库权限 | 源数据库账号需要至少具备以下权限: RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHOW VIEW,PROCESS |
实例参数检查 | 1. 源库变量 connect_timeout 必须大于10。 2. 源库表的 row_format 不能为 FIXED。 3. 源库表lower_case_table_names 变量必须为0。 |
BINLOG相关参数检查 | 1. log_bin 变量必须设置为 ON。 2. binlog_format 变量必须设置为 ROW。 3. binlog_row_image 必须设置为 FULL。 4. server_id 参数需要手动设置,且值不能设置为0。 5. 不允许设置 do_db,ignore_db。 |
外键依赖检查 | 外键依赖只能设置为 NO ACTION、RESTRICT。 部分库表迁移时,有外键依赖的表必须齐全。 |
步骤3:TSE Nacos 中创建迁移任务
在完成源 Nacos 集群数据库的公网访问配置后,请在 TSE Nacos 实例详情页面 - 迁移任务页面下配置并开启迁移任务。
接入类型:当前仅支持公网接入。
数据库类型:当前仅支持 MySQL 数据库。
数据库名:请输入源 Nacos 数据库名。
主机地址:请填入源 Nacos 数据库实例公网地址。
端口:请填入源 Nacos 数据库实例公网端口。
账号:请填入源 Nacos 数据库账号。
密码:请填入源 Nacos 数据库密码。
单击提交后,迁移任务将开始执行。
步骤4:数据同步
在完成迁移任务的配置后,将开启源 Nacos 数据库的全量+增量数据迁移,在任务执行过程当中支持向源 Nacos 数据库写入新的数据,目标TSE Nacos 数据库将会实时同步新的数据。请注意,如果您需要在迁移过程中保证新增服务的可用性,需要配合 Nacos 双注册双发现热迁移一起使用。
注意事项
在执行数据迁移时,会占用一定源数据库实例资源,可能会导致源数据库实例负载上升,增加数据库自身压力。如果您的数据库配置过低,建议您在业务低峰期进行迁移。
默认采用无锁迁移来实现,迁移过程中对源数据库不加全局锁(FTWRL),仅对无主键的表加表锁,其他不加锁。
迁移任务执行时,会使用执行迁移任务的账号在源数据库中写入系统库
__tencentdb__
,用于记录迁移任务过程中的数据对比信息。为保证后续数据对比问题可定位,迁移任务结束后不会删除源数据库中的
__tencentdb__
。__tencentdb__
系统库占用空间非常小,约为源数据库存储空间的千分之一到万分之一(例如源数据库为50GB,则__tencentdb__
系统库约为5MB-50MB) ,并且采用单线程,等待连接机制,所以对源数据库的性能几乎无影响,也不会抢占资源。操作指引
您可以在 TSE Nacos 实例详情页 - 迁移任务页面下查看迁移任务当前运行的进度与状态:
当迁移任务执行至同步增量阶段后,任务将持续同步源 Nacos 数据库中的增量数据。
如果在迁移任务执行过程中出现错误,且检查您的源 Nacos 数据库配置无误,可通过 快速提工单,联系腾讯云助手协助。