1+ locals {
2+ db_name = " demodb"
3+ dts_job_name = " mysql2redis_dts"
4+ }
5+
6+ data "alicloud_regions" "default" {
7+ current = true
8+ }
9+
10+ data "alicloud_kvstore_zones" "default" {
11+ instance_charge_type = " PostPaid"
12+ engine = " Redis"
13+ product_type = " OnECS"
14+
15+ }
16+
17+ data "alicloud_db_instance_classes" "default" {
18+ zone_id = data. alicloud_kvstore_zones . default . zones . 0 . id
19+ engine = " MySQL"
20+ engine_version = " 8.0"
21+ instance_charge_type = " PostPaid"
22+ category = " Basic"
23+ db_instance_storage_type = " cloud_essd"
24+ }
25+ resource "alicloud_vpc" "vpc" {
26+ cidr_block = " 192.168.0.0/16"
27+ }
28+
29+ resource "alicloud_vswitch" "vswitch" {
30+ vpc_id = alicloud_vpc. vpc . id
31+ cidr_block = " 192.168.0.0/24"
32+ zone_id = data. alicloud_kvstore_zones . default . zones . 0 . id
33+ }
34+
35+ resource "alicloud_db_instance" "rds" {
36+ engine = " MySQL"
37+ engine_version = " 8.0"
38+ instance_type = data. alicloud_db_instance_classes . default . instance_classes . 0 . instance_class
39+ instance_storage = 100
40+ vswitch_id = alicloud_vswitch. vswitch . id
41+ security_ips = [" 192.168.0.0/16" ]
42+ category = " HighAvailability"
43+ }
44+
45+ # 创建数据库账号
46+ resource "alicloud_db_account" "account" {
47+ db_instance_id = alicloud_db_instance. rds . id
48+ account_name = var. rds_db_user
49+ account_password = var. db_password
50+ account_type = " Normal"
51+ }
52+
53+ # 创建数据库
54+ resource "alicloud_db_database" "database" {
55+ instance_id = alicloud_db_instance. rds . id
56+ name = local. db_name
57+ character_set = " utf8mb4"
58+ }
59+
60+ resource "alicloud_kvstore_instance" "redis" {
61+ instance_class = var. redis_instance_class
62+ vswitch_id = alicloud_vswitch. vswitch . id
63+ security_ips = [" 192.168.0.0/16" ]
64+ password = var. redis_password
65+ engine_version = " 6.0"
66+ zone_id = data. alicloud_kvstore_zones . default . zones . 0 . id
67+ }
68+
69+ resource "alicloud_dts_synchronization_instance" "dts" {
70+ payment_type = " PayAsYouGo"
71+ source_endpoint_engine_name = " MySQL"
72+ destination_endpoint_engine_name = " Redis"
73+ instance_class = " small"
74+ source_endpoint_region = data. alicloud_regions . default . regions . 0 . id
75+ destination_endpoint_region = data. alicloud_regions . default . regions . 0 . id
76+ sync_architecture = " oneway"
77+ }
78+
79+ resource "alicloud_dts_synchronization_job" "job" {
80+ dts_instance_id = alicloud_dts_synchronization_instance. dts . id
81+ dts_job_name = var. dts_job_name
82+ source_endpoint_region = data. alicloud_regions . default . regions . 0 . id
83+ source_endpoint_engine_name = " MySQL"
84+ source_endpoint_instance_type = " RDS"
85+ source_endpoint_instance_id = alicloud_db_instance. rds . id
86+ source_endpoint_user_name = var. rds_db_user
87+ source_endpoint_password = var. db_password
88+ source_endpoint_database_name = local. db_name
89+ destination_endpoint_engine_name = " REDIS"
90+ destination_endpoint_instance_type = " REDIS"
91+ destination_endpoint_instance_id = alicloud_kvstore_instance. redis . id
92+ destination_endpoint_password = var. redis_password
93+ db_list = jsonencode ({
94+ db_name = { name = local.db_name, all = true }
95+ })
96+ structure_initialization = false
97+ data_initialization = true
98+ data_synchronization = true
99+ }
0 commit comments