Skip to content

Commit

Permalink
fix(backend): 根据备份记录查询操作库问题 #5283
Browse files Browse the repository at this point in the history
  • Loading branch information
ygcyao authored and iSecloud committed Jul 1, 2024
1 parent ecfcddd commit df3f821
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
8 changes: 4 additions & 4 deletions dbm-ui/backend/db_services/sqlserver/rollback/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,17 +142,17 @@ def query_dbs_by_backup_log(
db_pattern: List[str],
ignore_db: List[str],
backup_logs: List[Dict] = None,
rollback_time: datetime = None,
restore_time: datetime = None,
):
"""
根据回档记录/回档时间,和库正则,过滤真正操作的DB库
@param db_pattern: 库正则
@param ignore_db: 忽略库正则
@param backup_logs: 备份记录列表(这里只关注记录中的备份库字段)
@param rollback_time: 回档时间
@param restore_time: 回档时间
"""
if rollback_time:
backup_logs = self.query_latest_backup_log(rollback_time)
if restore_time:
backup_logs = self.query_latest_backup_log(restore_time)

db_names = [log["dbname"] for log in backup_logs["logs"]]
real_db_names = sqlserver_match_dbs(db_names, db_pattern, ignore_db)
Expand Down
6 changes: 4 additions & 2 deletions dbm-ui/backend/db_services/sqlserver/rollback/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,16 @@ class QueryDbsByBackupLogSerializer(serializers.Serializer):
cluster_id = serializers.IntegerField(help_text=_("集群ID"))
db_pattern = serializers.ListSerializer(help_text=_("库匹配模式"), child=serializers.CharField())
ignore_db = serializers.ListSerializer(help_text=_("忽略库匹配模式"), child=serializers.CharField())
backup_logs = serializers.ListSerializer(help_text=_("备份记录"), child=serializers.JSONField(), required=False)
restore_time = DBTimezoneField(help_text=_("回档时间"), required=False)
backup_logs = serializers.DictField(help_text=_("备份记录"), required=False)
restore_time = DBTimezoneField(help_text=_("回档时间"), allow_blank=True, required=False)

def validate(self, attrs):
if not attrs.get("backup_logs") and not attrs.get("rollback_time"):
raise serializers.ValidationError(_("请输入备份记录或者备份时间来查询操作库表"))
if attrs.get("restore_time"):
attrs["restore_time"] = str2datetime(attrs["restore_time"])
else:
attrs.pop("restore_time")
return attrs


Expand Down

0 comments on commit df3f821

Please sign in to comment.