[Day28] Tableau 轻松学 - TabPy 备份与还原

前言

在勒索病毒盛行的年代,为资讯系统做好备份是最基本的工作,有效的备份除了可以抵挡病毒的攻击,同时可以降低服务器主机因意外毁损而导致无法快速重建系统的风险。同样地,TabPy 的 Model 也是可以备份起来,当有需要的时候可以直接还原,省去重新布署的程序。至於应该要将甚麽档案做备份,便是这里想要分享的主题。

Models

当我们将 Python 函式布署至 TabPy Server 的时候,TabPy 会执行两个步骤

  1. 更新 Models 资料库:这样在 http://localhost:9004 的 Deployed Models 中才会看到新增的 Model 资讯。
  2. 将新增的 Model 透过 cloudpickle 套件以 2 进制档案储存下来:启动 TabPy Server 的过程中会读取这些档案并转换为可呼叫的 Model,这也是我们重启 TabPy 不需要重新布署的原因。

Models 相关的资料都是以档案型式储存下来,使我们备份工作简单许多。但个人认为美中不足的是,我们无法从这些档案中取得原始程序码,这意味着我们用来布署的程序码同样也需要备份起来。

备份

我们已经知道当布署一个 Model 的时候会影响到两个档案,因此只需要备份这两个档案即可。

state.ini

state.ini 就是 Models 的资料库,用来记录 Models 的相关资讯。TabPy Server 启动时会先读取此档案,再去寻找对应的 cloudpickle 档案转为可呼叫 Model

此档案位於虚拟环境目录下的 \Lib\site-packages\tabpy\tabpy_server 目录

\Lib\site-packages\tabpy\tabpy_server\state.ini

pickle_archive

pickle_archive 为 TabPy 透过 cloudpickle 套件将 Model 储存的档案。路径格式如下,以 Model 名称与版次来切分不同的 pickle_archive 档案

\query_objects\{model_name}\{model_version}\pickle_archive
  • model_name:Model 的名称。
  • model_version:Model 的版次。

例如:test_SCRIPT_BOOL1 版的 pickle_archive 所在路径应为

\query_objects\test_SCRIPT_BOOL\1\pickle_archive

这样一来,所有 Models 的 pickle_archive 档案都会储存於 query_objects 目录下,因此我们直接备份这整个目录即可,此目录也同样位於 \Lib\site-packages\tabpy\tabpy_server 目录。

{% note info %}
简而言之,我们只需要备份一个档案 (state.ini) 与一个目录 (query_objects)。
{% endnote %}

范例

若我们的虚拟环境名称为 Tableau-Python-Server,且虚拟环境目录位於 C:\Users\wrxue\,则只需备份以下两个项目

C:\Users\wrxue\Tableau-Python-Server\Lib\site-packages\tabpy\tabpy_server\state.ini
C:\Users\wrxue\Tableau-Python-Server\Lib\site-packages\tabpy\tabpy_server\query_objects

还原

若要将备份还原,遵守一个原则「东西哪里拿来就哪里放回去」,将备份中的两个项目放回 \Lib\site-packages\tabpy\tabpy_server 即可,非常容易。

结语

备份不是一件难事,困难的是要知道应该备份甚麽东西,这里将个人为 TabPy 备份的经验分享给读者,让读者可以少走冤枉路。


<<:  Powershell 入门参数属性(2)

>>:  [ Day 14 ] 佳评如潮的 React Hooks

Day14 Lab 2 - Object storage data层和心跳

Data层的任务主要是储存Object的component,保证资料的安全,他和API层一样也有AP...

Dart语言和你 SAY HELLO!!

第四天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,知道...

mac, windows 安装 scrapy 失败解法摘要

今天安装 scrapy 时,在两个系统下都出现长篇红字错误,在此做个解决纪录。两个系统者皆在终端跟 ...

【Day 3】Git与Github入门

Git与Github关系? 说明 : Github是Git进行版本控制软件的服务平台供应商之一。 G...

[Day17] static静态方法

static静态方法 范围解析操作符(::) php可以利用这一对冒号来访问静态成员,类常量,还可以...