3.4 安装数据库
domjudge 使用 MySQL
或 MariaDB
数据库服务进行数据存储; 本节将讨论 MySQL
, 你可以认为它对 MariaDB
也适用
数据库结构和权限在 sql 子文件夹的 MySQL
转储文件中; 默认的数据库名称是 domjudge
; 你可以在 etc/dbpasswords.secret
文件中进行修改, 安装时将采用此文件中指定的数据库名称
数据库通过 bin/dj_setup_database
命令安装; 为此你需要一个安装并配置好的 MySQL 服务和其管理员访问权限; 执行下列命令
这首先会创建一个 Domjudge 数据库的凭证文件 etc/dbpasswords.secret
(你可以改变程序生成的随机密码, 尽管一般操作并不需要); 接下来它会创建数据库和用户并向 domjudge 数据库插入一些默认(示例)数据; 选项 -r
将会询问你 mysql 的密码; 如果你没有指定用户, mysql 客户端将尝试从 $HOME/.my.cnf
读取凭据; dj_setup_database
命令的 uninstall
选项将会删除 domjudge 的数据库和用户(这将会删除所有数据)
domjudge 数据库包含很多数据表, 其中一些表需要在比赛开始之前手动填入数据, 详情参见 比赛数据库设置
设置复制(replication)或备份
MySQL
服务器是 Domjudge 的数据存储中心, 想一想若是 MySQL 主机出现故障或丢失数据该怎么办
一种很可靠的方法是在另一台主机上设置一个复制的 MySQL 服务, 所有的数据都将被热拷贝到这台主机中; 一旦当前主机挂掉, 可以立刻切到另一台主机; MySQl 手册
中有关于此的详细信息
另外, 你也可以在另一台主机上做一个常规的数据备份, 例如使用 mysqldump
命令或一个基于 RAID
的系统
你也可以用复制来高性能, 即通过在主服务器上完成更新(update)动作, 而将所有选择查询(select-queries)定向到一个或多个复制的从属服务器中; 但是这个功能不支持开箱即用并且需要修改 Domjudge 的源码
存储提交信息
数据库中的内容是提交的源代码的权威版本(注: 即数据库中的文件在还原比赛过程中更具有权威性); 文件系统存储是一种访问源文件和备份的简便方法, 但是只有当 web 服务对 <domjudge_submitdir>
有可写权的时候才能使用, 如果没有权限, 则会忽略文件系统存储; bin/save_sources2file
和 bin/restore_sources2db
命令可以用于存储数据库中的提交表到这些文件, 或从这些文件中恢复提交表
Last updated