1 | |
2 | type Digitalocean = { |
3 | token: string; |
4 | }; |
5 | |
6 | * Update the Database Configuration for an Existing Database |
7 | * To update the configuration for an existing database cluster, send a PATCH request to |
8 | `/v2/databases/$DATABASE_ID/config`. |
9 |
|
10 | */ |
11 | export async function main( |
12 | auth: Digitalocean, |
13 | database_cluster_uuid: string, |
14 | body: { |
15 | config?: |
16 | | { |
17 | backup_hour?: number; |
18 | backup_minute?: number; |
19 | sql_mode?: string; |
20 | connect_timeout?: number; |
21 | default_time_zone?: string; |
22 | group_concat_max_len?: number; |
23 | information_schema_stats_expiry?: number; |
24 | innodb_ft_min_token_size?: number; |
25 | innodb_ft_server_stopword_table?: string; |
26 | innodb_lock_wait_timeout?: number; |
27 | innodb_log_buffer_size?: number; |
28 | innodb_online_alter_log_max_size?: number; |
29 | innodb_print_all_deadlocks?: false | true; |
30 | innodb_rollback_on_timeout?: false | true; |
31 | interactive_timeout?: number; |
32 | internal_tmp_mem_storage_engine?: "TempTable" | "MEMORY"; |
33 | net_read_timeout?: number; |
34 | net_write_timeout?: number; |
35 | sql_require_primary_key?: false | true; |
36 | wait_timeout?: number; |
37 | max_allowed_packet?: number; |
38 | max_heap_table_size?: number; |
39 | sort_buffer_size?: number; |
40 | tmp_table_size?: number; |
41 | slow_query_log?: false | true; |
42 | long_query_time?: number; |
43 | binlog_retention_period?: number; |
44 | innodb_change_buffer_max_size?: number; |
45 | innodb_flush_neighbors?: 0 | 1 | 2; |
46 | innodb_read_io_threads?: number; |
47 | innodb_write_io_threads?: number; |
48 | innodb_thread_concurrency?: number; |
49 | net_buffer_length?: number; |
50 | log_output?: "INSIGHTS" | "TABLE" | "INSIGHTS,TABLE" | "NONE"; |
51 | } |
52 | | { |
53 | autovacuum_freeze_max_age?: number; |
54 | autovacuum_max_workers?: number; |
55 | autovacuum_naptime?: number; |
56 | autovacuum_vacuum_threshold?: number; |
57 | autovacuum_analyze_threshold?: number; |
58 | autovacuum_vacuum_scale_factor?: number; |
59 | autovacuum_analyze_scale_factor?: number; |
60 | autovacuum_vacuum_cost_delay?: number; |
61 | autovacuum_vacuum_cost_limit?: number; |
62 | backup_hour?: number; |
63 | backup_minute?: number; |
64 | bgwriter_delay?: number; |
65 | bgwriter_flush_after?: number; |
66 | bgwriter_lru_maxpages?: number; |
67 | bgwriter_lru_multiplier?: number; |
68 | deadlock_timeout?: number; |
69 | default_toast_compression?: "lz4" | "pglz"; |
70 | idle_in_transaction_session_timeout?: number; |
71 | jit?: false | true; |
72 | log_autovacuum_min_duration?: number; |
73 | log_error_verbosity?: "TERSE" | "DEFAULT" | "VERBOSE"; |
74 | log_line_prefix?: |
75 | | "pid=%p,user=%u,db=%d,app=%a,client=%h" |
76 | | "%m [%p] %q[user=%u,db=%d,app=%a]" |
77 | | "%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h"; |
78 | log_min_duration_statement?: number; |
79 | max_files_per_process?: number; |
80 | max_prepared_transactions?: number; |
81 | max_pred_locks_per_transaction?: number; |
82 | max_locks_per_transaction?: number; |
83 | max_stack_depth?: number; |
84 | max_standby_archive_delay?: number; |
85 | max_standby_streaming_delay?: number; |
86 | max_replication_slots?: number; |
87 | max_logical_replication_workers?: number; |
88 | max_parallel_workers?: number; |
89 | max_parallel_workers_per_gather?: number; |
90 | max_worker_processes?: number; |
91 | "pg_partman_bgw.role"?: string; |
92 | "pg_partman_bgw.interval"?: number; |
93 | "pg_stat_statements.track"?: "all" | "top" | "none"; |
94 | temp_file_limit?: number; |
95 | timezone?: string; |
96 | track_activity_query_size?: number; |
97 | track_commit_timestamp?: "off" | "on"; |
98 | track_functions?: "all" | "none" | "pl"; |
99 | track_io_timing?: "off" | "on"; |
100 | max_wal_senders?: number; |
101 | wal_sender_timeout?: number; |
102 | wal_writer_delay?: number; |
103 | shared_buffers_percentage?: number; |
104 | pgbouncer?: { |
105 | server_reset_query_always?: false | true; |
106 | ignore_startup_parameters?: "extra_float_digits" | "search_path"[]; |
107 | min_pool_size?: number; |
108 | server_lifetime?: number; |
109 | server_idle_timeout?: number; |
110 | autodb_pool_size?: number; |
111 | autodb_pool_mode?: "session" | "transaction" | "statement"; |
112 | autodb_max_db_connections?: number; |
113 | autodb_idle_timeout?: number; |
114 | }; |
115 | work_mem?: number; |
116 | timescaledb?: { max_background_workers?: number }; |
117 | synchronous_replication?: "off" | "quorum"; |
118 | stat_monitor_enable?: false | true; |
119 | max_failover_replication_time_lag?: number; |
120 | } |
121 | | { |
122 | redis_maxmemory_policy?: |
123 | | "noeviction" |
124 | | "allkeys_lru" |
125 | | "allkeys_random" |
126 | | "volatile_lru" |
127 | | "volatile_random" |
128 | | "volatile_ttl"; |
129 | redis_pubsub_client_output_buffer_limit?: number; |
130 | redis_number_of_databases?: number; |
131 | redis_io_threads?: number; |
132 | redis_lfu_log_factor?: number; |
133 | redis_lfu_decay_time?: number; |
134 | redis_ssl?: false | true; |
135 | redis_timeout?: number; |
136 | redis_notify_keyspace_events?: string; |
137 | redis_persistence?: "off" | "rdb"; |
138 | redis_acl_channels_default?: "allchannels" | "resetchannels"; |
139 | } |
140 | | { |
141 | default_read_concern?: "local" | "available" | "majority"; |
142 | default_write_concern?: string; |
143 | transaction_lifetime_limit_seconds?: number; |
144 | slow_op_threshold_ms?: number; |
145 | verbosity?: number; |
146 | } |
147 | | { |
148 | compression_type?: |
149 | | "lz4" |
150 | | "gzip" |
151 | | "snappy" |
152 | | "zstd" |
153 | | "uncompressed" |
154 | | "producer"; |
155 | group_initial_rebalance_delay_ms?: number; |
156 | group_min_session_timeout_ms?: number; |
157 | group_max_session_timeout_ms?: number; |
158 | connections_max_idle_ms?: number; |
159 | max_incremental_fetch_session_cache_slots?: number; |
160 | message_max_bytes?: number; |
161 | offsets_retention_minutes?: number; |
162 | log_cleaner_delete_retention_ms?: number; |
163 | log_cleaner_min_cleanable_ratio?: number; |
164 | log_cleaner_max_compaction_lag_ms?: number; |
165 | log_cleaner_min_compaction_lag_ms?: number; |
166 | log_cleanup_policy?: "delete" | "compact" | "compact,delete"; |
167 | log_flush_interval_messages?: number; |
168 | log_flush_interval_ms?: number; |
169 | log_index_interval_bytes?: number; |
170 | log_index_size_max_bytes?: number; |
171 | log_message_downconversion_enable?: false | true; |
172 | log_message_timestamp_type?: "CreateTime" | "LogAppendTime"; |
173 | log_message_timestamp_difference_max_ms?: number; |
174 | log_preallocate?: false | true; |
175 | log_retention_bytes?: number; |
176 | log_retention_hours?: number; |
177 | log_retention_ms?: number; |
178 | log_roll_jitter_ms?: number; |
179 | log_roll_ms?: number; |
180 | log_segment_bytes?: number; |
181 | log_segment_delete_delay_ms?: number; |
182 | auto_create_topics_enable?: false | true; |
183 | min_insync_replicas?: number; |
184 | num_partitions?: number; |
185 | default_replication_factor?: number; |
186 | replica_fetch_max_bytes?: number; |
187 | replica_fetch_response_max_bytes?: number; |
188 | max_connections_per_ip?: number; |
189 | producer_purgatory_purge_interval_requests?: number; |
190 | socket_request_max_bytes?: number; |
191 | transaction_state_log_segment_bytes?: number; |
192 | transaction_remove_expired_transaction_cleanup_interval_ms?: number; |
193 | } |
194 | | { |
195 | http_max_content_length_bytes?: number; |
196 | http_max_header_size_bytes?: number; |
197 | http_max_initial_line_length_bytes?: number; |
198 | indices_query_bool_max_clause_count?: number; |
199 | indices_fielddata_cache_size_percentage?: number; |
200 | indices_memory_index_buffer_size_percentage?: number; |
201 | indices_memory_min_index_buffer_size_mb?: number; |
202 | indices_memory_max_index_buffer_size_mb?: number; |
203 | indices_queries_cache_size_percentage?: number; |
204 | indices_recovery_max_mb_per_sec?: number; |
205 | indices_recovery_max_concurrent_file_chunks?: number; |
206 | thread_pool_search_size?: number; |
207 | thread_pool_search_throttled_size?: number; |
208 | thread_pool_get_size?: number; |
209 | thread_pool_analyze_size?: number; |
210 | thread_pool_write_size?: number; |
211 | thread_pool_force_merge_size?: number; |
212 | thread_pool_search_queue_size?: number; |
213 | thread_pool_search_throttled_queue_size?: number; |
214 | thread_pool_get_queue_size?: number; |
215 | thread_pool_analyze_queue_size?: number; |
216 | thread_pool_write_queue_size?: number; |
217 | ism_enabled?: false | true; |
218 | ism_history_enabled?: false | true; |
219 | ism_history_max_age_hours?: number; |
220 | ism_history_max_docs?: number; |
221 | ism_history_rollover_check_period_hours?: number; |
222 | ism_history_rollover_retention_period_days?: number; |
223 | search_max_buckets?: number; |
224 | action_auto_create_index_enabled?: false | true; |
225 | enable_security_audit?: false | true; |
226 | action_destructive_requires_name?: false | true; |
227 | cluster_max_shards_per_node?: number; |
228 | override_main_response_version?: false | true; |
229 | script_max_compilations_rate?: string; |
230 | cluster_routing_allocation_node_concurrent_recoveries?: number; |
231 | reindex_remote_whitelist?: string[]; |
232 | plugins_alerting_filter_by_backend_roles_enabled?: false | true; |
233 | }; |
234 | }, |
235 | ) { |
236 | const url = new URL( |
237 | `https://api.digitalocean.com/v2/databases/${database_cluster_uuid}/config`, |
238 | ); |
239 |
|
240 | const response = await fetch(url, { |
241 | method: "PATCH", |
242 | headers: { |
243 | "Content-Type": "application/json", |
244 | Authorization: "Bearer " + auth.token, |
245 | }, |
246 | body: JSON.stringify(body), |
247 | }); |
248 | if (!response.ok) { |
249 | const text = await response.text(); |
250 | throw new Error(`${response.status} ${text}`); |
251 | } |
252 | return await response.json(); |
253 | } |
254 |
|