@@ -37,9 +37,17 @@ def execute_backup(
37
37
responses = []
38
38
for shard , node in nodes :
39
39
params ["shard" ] = shard if is_sharded else "noshard"
40
+
41
+ query_settings ["async" ] = "true"
40
42
if base_backup :
41
- query_settings ["base_backup" ] = f"S3('{ base_backup } /{ shard } ', '{ aws_key } ', '{ aws_secret } ')"
42
- final_query = query % (params or {}) if substitute_params else query
43
+ query_settings ["base_backup" ] = f"S3('{ base_backup } /{ params ['shard' ]} ', '{ aws_key } ', '{ aws_secret } ')"
44
+
45
+ parametrized_query = query % (params or {}) if substitute_params else query
46
+ final_query = "{query} SETTINGS {settings}" .format (
47
+ query = parametrized_query ,
48
+ settings = ", " .join ([f"{ k } = { v } " for k , v in query_settings .items ()]),
49
+ )
50
+
43
51
client = Client (
44
52
host = node ["host_address" ],
45
53
database = settings .CLICKHOUSE_DATABASE ,
@@ -51,7 +59,7 @@ def execute_backup(
51
59
send_receive_timeout = 30 ,
52
60
password = settings .CLICKHOUSE_PASSWORD ,
53
61
)
54
- result = client .execute (final_query , settings = query_settings , with_column_types = True , query_id = query_id )
62
+ result = client .execute (final_query , with_column_types = True , query_id = query_id )
55
63
response = []
56
64
for res in result [0 ]:
57
65
item = {}
@@ -90,12 +98,8 @@ def create_table_backup(
90
98
aws_key = settings .AWS_ACCESS_KEY_ID
91
99
aws_secret = settings .AWS_SECRET_ACCESS_KEY
92
100
93
- query_settings = {}
94
101
QUERY = """BACKUP TABLE %(database)s.%(table)s
95
- TO S3('https://%(bucket)s.s3.amazonaws.com/%(path)s/%(shard)s', '%(aws_key)s', '%(aws_secret)s')
96
- ASYNC"""
97
- if base_backup :
98
- query_settings ["base_backup" ] = f"S3('{ base_backup } ', '{ aws_key } ', '{ aws_secret } ')"
102
+ TO S3('https://%(bucket)s.s3.amazonaws.com/%(path)s/%(shard)s', '%(aws_key)s', '%(aws_secret)s')"""
99
103
return execute_backup (
100
104
QUERY ,
101
105
{
@@ -106,7 +110,6 @@ def create_table_backup(
106
110
"aws_key" : aws_key ,
107
111
"aws_secret" : aws_secret ,
108
112
},
109
- query_settings = query_settings ,
110
113
cluster = cluster ,
111
114
aws_key = aws_key ,
112
115
aws_secret = aws_secret ,
@@ -119,12 +122,9 @@ def create_database_backup(database, bucket, path, aws_key=None, aws_secret=None
119
122
if aws_key is None or aws_secret is None :
120
123
aws_key = settings .AWS_ACCESS_KEY_ID
121
124
aws_secret = settings .AWS_SECRET_ACCESS_KEY
122
- query_settings = {}
123
- QUERY = """BACKUP DATABASE %(database)s
124
- TO S3('https://%(bucket)s.s3.amazonaws.com/%(path)s/%(shard)s', '%(aws_key)s', '%(aws_secret)s')
125
- ASYNC"""
126
- if base_backup :
127
- query_settings ["base_backup" ] = f"S3('{ base_backup } ', '{ aws_key } ', '{ aws_secret } ')"
125
+
126
+ QUERY = """BACKUP DATABASE %(database)s
127
+ TO S3('https://%(bucket)s.s3.amazonaws.com/%(path)s/%(shard)s', '%(aws_key)s', '%(aws_secret)s')"""
128
128
return execute_backup (
129
129
QUERY ,
130
130
{
@@ -134,7 +134,6 @@ def create_database_backup(database, bucket, path, aws_key=None, aws_secret=None
134
134
"aws_key" : aws_key ,
135
135
"aws_secret" : aws_secret ,
136
136
},
137
- query_settings = query_settings ,
138
137
cluster = cluster ,
139
138
aws_key = aws_key ,
140
139
aws_secret = aws_secret ,
@@ -187,7 +186,8 @@ def run_backup(backup_id, incremental=False):
187
186
else :
188
187
backup .last_run = br
189
188
backup .last_run_time = now
190
- backup .last_base_backup = S3_LOCATION
189
+
190
+ backup .last_base_backup = S3_LOCATION
191
191
backup .save ()
192
192
return
193
193
0 commit comments