MusicBrainz数据库工具
mbdata的Python项目详细描述
MusicBrainz数据库副本
此存储库现在包含用于管理 MusicBrainz数据库的副本。这些过去被称为"mbslave", 但已移动到此存储库。
这些脚本的主要动机是能够定制 你的数据库。如果你不需要这样的监护,可能是 更易于使用MusicBrainz自己提供的复制工具。
安装
确保已安装了 python 和 psycopg2 。 在debian和ubuntu上,这意味着安装这些包:
sudo apt install python python-pip python-psycopg2 pip install -U mbdata # if you don't have it installed already
该命令将把 mbslave 脚本安装到 $home/.local/bin中。
在metabrainz网站上获取api令牌。
通过复制和编辑创建mbslave.conf
curl https://raw.githubusercontent.com/lalinsky/mbdata/master/mbslave.conf.default -o mbslave.conf vim mbslave.conf
默认情况下,mbslave脚本将在当前目录中查找配置文件。 如果您想从任何地方找到它,请将其保存到 /etc/mbslave.conf 或 设置 mbslave_config 环境变量。例如:
export MBSLAVE_CONFIG=/usr/local/etc/mbslave.conf
设置数据库。如果你从零开始, 您可以使用以下命令来设置干净的数据库:
sudo su - postgres createuser musicbrainz createdb -l C -E UTF-8 -T template0 -O musicbrainz musicbrainz createlang plpgsql musicbrainz psql musicbrainz -c 'CREATE EXTENSION cube;' psql musicbrainz -c 'CREATE EXTENSION earthdistance;'
为musicbrainz数据库准备空模式并创建表结构:
echo 'CREATE SCHEMA musicbrainz;' | mbslave psql -S echo 'CREATE SCHEMA statistics;' | mbslave psql -S echo 'CREATE SCHEMA cover_art_archive;' | mbslave psql -S echo 'CREATE SCHEMA wikidocs;' | mbslave psql -S echo 'CREATE SCHEMA documentation;' | mbslave psql -S mbslave psql -f CreateTables.sql mbslave psql -f statistics/CreateTables.sql mbslave psql -f caa/CreateTables.sql mbslave psql -f wikidocs/CreateTables.sql mbslave psql -f documentation/CreateTables.sql
从下载musicbrainz数据库转储文件 http://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/
导入数据转储,例如:
mbslave import mbdump.tar.bz2 mbdump-derived.tar.bz2
设置主键、索引和视图:
mbslave psql -f CreatePrimaryKeys.sql mbslave psql -f statistics/CreatePrimaryKeys.sql mbslave psql -f caa/CreatePrimaryKeys.sql mbslave psql -f wikidocs/CreatePrimaryKeys.sql mbslave psql -f documentation/CreatePrimaryKeys.sql mbslave psql -f CreateIndexes.sql mbslave psql -f CreateSlaveIndexes.sql mbslave psql -f statistics/CreateIndexes.sql mbslave psql -f caa/CreateIndexes.sql mbslave psql -f CreateFunctions.sql mbslave psql -f CreateViews.sql
清空新创建的数据库(可选):
echo 'VACUUM ANALYZE;' | mbslave psql
复制
在初始数据库设置之后,您可能需要使用最新数据更新数据库。 mbslave sync脚本将从musicbrainz获取更新并将其应用到本地数据库:
mbslave sync
为了定期更新数据库,请添加这样一个每小时运行一次的cron作业:
sudo apt install python python-pip python-psycopg2 pip install -U mbdata # if you don't have it installed already0
架构升级
当musicbrainz数据库架构更改时,复制将停止工作。 这通常在musicbrainz博客上宣布。 发生这种情况时,您需要升级数据库。
发布日期:2019-05-14(25)
运行升级脚本:
sudo apt install python python-pip python-psycopg2 pip install -U mbdata # if you don't have it installed already1
发布日期:2017-05-25(24)
运行升级脚本:
sudo apt install python python-pip python-psycopg2 pip install -U mbdata # if you don't have it installed already2
提示和技巧
单个数据库模式
默认情况下,musicbrainz使用了许多模式。如果要将musicbrainz数据库嵌入 作为应用程序的现有数据库,可以方便地将它们合并到单个模式中。 这可以通过改变y来实现我们的配置如下:
sudo apt install python python-pip python-psycopg2 pip install -U mbdata # if you don't have it installed already3
在此之后,您只需创建"musicbrainz"模式并导入其中的所有表即可。
完全导入架构升级
您可以使用模式映射功能对数据库进行零停机升级 数据导入。您可以临时将所有模式映射到"musicbrainz_new",导入新模式 数据库,然后重命名:
sudo apt install python python-pip python-psycopg2 pip install -U mbdata # if you don't have it installed already4