管理Odoo服务端数据库

原文出自:https://alanhou.org/odoo-14-installing-the-odoo-development-environment/
在使用Odoo时,你的实例所有的数据都存储在PostgreSQL数据库中。可以使用你习惯的任意标准数据库管理工具,但Odoo为一些常用操作提供了一个网页界面。

准备工作

我们假定你的工作环境已配置好,并且已运行了一个实例。

如何管理…

Odoo数据库管理界面提供创建、复制、删除、备份和恢复数据库的工具。还有一种修改主控密码(master密码)的方式,用于保护对数据库管理界面的访问。

访问数据库管理界面

需要执行如下步骤来访问数据库:
1、进入实例的登录页面(如果已登录请先登出)。
2、点击Manage Databases链接。这会导航至http://localhost:8069/web/database/manager(也可以在浏览器中直接访问这个URL)。

1.jpeg

设置或修改主控密码

如果已经以默认值设置了实例且尚未像下面讲解的那样做过修改,数据库管理页面会显示一条警告,告诉你还没有设置主控密码并建议你通过直接点击链接来进行设置:
2.jpeg

图1.4 – 主控密码警告

需要执行如下步骤来设置master:

1、点击Set Master Password按钮。会弹出一个对话框来要求你提供新的主控密码:


3.jpeg

2、输入一个复杂的新密码并点击Continue
如果已设置了主控密码,点击页面底部的Set Master Password按钮来进行修改。在弹出的对话框中输入老的主控密码再输入新密码,然后点击Continue。

📝主控密码是在admin_password键下的服务端配置。如果启动服务时没有指定配置文件,会在~/.odoorc中生成新的配置文件。查看下一部分获取更多有关配置文件的信息。
创建新数据库

这个对话框用于创建一个由当前Odoo服务处理的新数据库实例:

1、在数据库管理窗口中,点击页面底部的Create Database按钮。会弹出如下对话框:


4.jpeg

2、填写表单,如下:

  • Master Password:这是这一实例的主控密码。
  • Database Name:输入所想要创建的数据库名称。
  • Email: 在此处添加email地址;在稍后用作用户名。
  • Password:输入你想为新实例所设置的admin用户密码。
  • Phone Number:设置电话号码(可选)。
  • Language:在下拉列表中选择你希望新数据库默认安装的语言。Odoo会自动加载所选语言的翻译。
  • Country:在下拉列表中选择主租户的国家。选择这一项后会自动做一些配置,如公司的币种。
  • Demo data:勾选获取演示数据。这对于运行交互式测试或为用户设置演示项目非常有用,但针对包含生产数据的数据库设计时则不应勾选。
ℹ️如果想要使用该数据库来运行模块的自动化测试(参见[第七章 调试](https://alanhou.org/odoo-14-debugging/)),则需要有演示数据,因为Odoo中的大多数自动化测试依赖于这些记录来成功运行。

3、点击Continue按钮并等待新数据库初始化完成。然后会被重定向到该实例并以管理员进行连接。

问题处理:如果被重定向到了登录页,这可能是因为向Odoo传递了–db-filter选项并且与新数据库名不匹配造成的。注意odoo-bin start会默默地进行这一操作,仅让当前数据库可用。解决这一问题,只需不使用start命令来对Odoo进行重启,在本章中的通过源码轻松安装 Odoo 一节展示过这一做法。如果你有一个配置文件(参见本章后面的在一个文件中存储实例配置一节),那么请检查db_filter未进行设置或设置一个与新数据库名称匹配的值。

复制数据库
通常你已经有一个数据库了,会希望使用它做一存储过程的试验或运行测试,但又不修改已有数据。这里的方案很简单:复制该数据库并在拷贝上运行测试。可以按需重复多次
1、在数据库管理页面,点击Duplicate Database:


image.png

2、填写表单如下:

  • Master Password:这是Odoo服务的主控密码
  • New Name:给予拷贝的名称
    3、点击Continue按钮。
    4、可以在数据库管理页面点击新创建的数据库名称来访问该数据库的登录页面。
    删除数据库
    1、在完成测试之后,如想要清理掉所复制的数据库。通过如下步骤来进行清理:

在数据库管理页面,点击想删除的数据库名称旁的Delete Database链接,会出现下图中的对话框:


image.png

2、填写表单并输入 Master Password,即Odoo服务的主控密码。
3、点击Delete按钮。

📝小心!数据丢失!

如果你选择了错误的数据库,并且没有备份,则无法恢复损失的数据。
备份数据库

需执行如下步骤来创建备份:
1、在数据库管理页面,点击想备份数据库名称旁的Backup按钮,会弹出下图这样的对话框:


1.jpeg

2、填写表单

  • Master Password:Odoo服务的主控密码。
  • Backup Format:对生产数据库请保持使用zip,因为这是唯一真正的全量备份格式。仅在备份不关心文件存储的开发数据库时使用pg_dump格式。
    3、点击Backup。然后浏览器会下载备份文件。
还原数据库备份

如果需要还原一个备份,需要按如下步骤操作:
1、在数据库管理页面,点击页面底部的Restore Database按钮,会弹出如下的对话框:


2.jpeg

2、填写表单:

  • Master Password:这是Odoo服务的主控密码。
  • File:这是之前所下载的Odoo备份
  • Database Name:提供你需进行备份还原的数据库名称。该数据库在服务器上一定不能存在。
  • 数据库可能进行了迁移或拷贝:如果原数据库在另一台服务器上或是为从当前服务器删除则选择This database was moved。否则选择This database is a copy,这也是安全的默认选项。
    3、点击Continue按钮。
📝不能在数据库自身之上还原数据库。这么做会得到一条错误消息(Database restore error: Database already exists)。需要先删除该数据库。

运行原理…

除Change master password以外的这些页面上的功能,是在服务器上运行PostgreSQL运维命令并通过网页界面报告结果。

主控密码是非常重要的信息,仅存储在Odoo服务的配置文件中,从不在数据库中进行存储。曾经有一个admin默认值,但使用这个值是一个广为人知的安全问题。在Odoo v9及之后的版本中,这被识别为一个未设置的主控密码,并在访问数据库管理页面时会敦促你修改密码。虽然这在配置文件中以admin_passwd进行存储,它与admin的密码是不同的,它们是两个不同的密码。主控密码是为Odoo服务进程设置的,进程本身可以处理多个数据库实例,每个实例都有一个独立的admin用户及其自己的密码。

📝安全考虑:记住本章中我们所考虑的是开发环境。Odoo数据库管理界面在我们运行生产服务时是需要进行安全保护的,因为这里给到了过多敏感信息的访问权限,尤其是在服务器托管了多个不同客户端的Odoo实例时。

Odoo使用PostgreSQL的createdb工具来新建数据库,它通过和以空数据库启动Odoo时相同的方式调用内部的Odoo函数来初始化新数据库。

Odoo使用createdb的–template选项传递原数据库作为参数来复制数据库。这基本上使用内部优化的PostgreSQL例行程序在新数据库中复制模板数据库的结构,这比创建备份和还原备份的速度会快很多(尤其是在使用网页界面时,还要求你下载备份文件然后再重新上传)。

备份和还原操作分别使用pg_dump和pg_restore工具。在使用zip格式时,备份还包含文件存储的拷贝,其中为配置Odoo不保存在数据库中的文档的拷贝,这是14.0中的默认选项。如果没做过修改的话,这些文件存放在~/.local/share/Odoo/filestore中。

📝如果备份很大,下载时会失败。这可能是因为Odoo服务本身无法在内存中处理这么大的文件或者是因为服务在反向代理之后运行,而这个代理设置了HTTP响应大小的限制。反过来,出于某些原因,你可能会在还原数据库的操作中遇到问题。在碰到这些问题时,应当投入时间建立更健壮的外部备份方案。
更多内容…

有经验的Odoo开发者通常不使用数据库管理界面,而在命令行执行相关操作。比如使用演示数据初始化新数据库,可以使用如下的一行代码:

$ createdb testdb && odoo-bin -d testdb

命令行的另一个彩蛋是可以在使用时要求安装一些插件,比如 -i sale,purchase,stock。

停止服务并运行如下这些命令来复制数据库:

$ createdb -T dbname newdbname
$ cd ~/.local/share/Odoo/filestore # 如果你修改了data_dir请调整此处
$ cp -r dbname newdbname
$ cd -

注意在开发的上下文中,文件存储通常会被省略。

📝createdb -T 仅在数据库没有活跃会话时方能使用,这表示在通过命令行复制数据库之前你需要关闭Odoo服务。

可运行如下命令来删除一个实例:

$ dropdb dbname
$ rm -rf ~/.local/share/Odoo/filestore/dbname

可运行如下命令来创建一个备份(假设PostgreSQL服务在本地运行):

$ pg_dump -Fc -f dbname.dump dbname
$ tar cjf dbname.tgz dbname.dump ~/.local/share/Odoo/filestore/dbname

可运行如下命令来还原备份:

$ tar xf dbname.tgz
$ pg_restore -C -d dbname dbname.dump
📝当心!

如果你的Odoo实例使用了另一个用户连接数据库,需要传递-U username来使用正确的用户作为还原数据库的所有者。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容