mco_backup_create
接口适用于实时数据库 RT 。
此函数会创建数据库的备份记录。
该记录可以是完整的(快照)或部分的(增量记录)。在备份文件中必须至少有一个快照。备份过程不会阻塞数据库处理,因此在备份进行期间,应用程序可以正常运行事务。备份过程仅在正常数据处理暂停时或在达到由传递给 mco_db_open_dev()
的备份参数 backup_min_pages
和 backup_max_passes
指定的事务数量后,才会短暂阻塞数据库。
有关概述,请参阅页面C中的增量备份和恢复。
void mco_backup_create(
/*IN*/ mco_db_h con,
/*IN*/ char const* file_name,
/*IN*/ char const* label,
/*IN*/ mco_backup_type type,
/*IN*/ int compression_level,
/*IN*/ char const* cipher,
/*IN*/ char* err_buf,
/*IN-OUT*/ unsigned int * err_buf_sz
)
参数
con
mco_db_h
用于创建备份记录的数据库连接。
file_name
char const*
待创建备份记录的备份文件名。
label
char const*
备份的标签。
type
mco_backup_type
备份记录的类型;下列之一:
- MCO_BACKUP_TYPE_SNAPSHOT:整个数据库的图像;必须至少做一次。
- MCO_BACKUP_TYPE_INCREMENTAL:数据库的部分图像。仅包含两个连续备份记录之间数据库内容的差异。
- MCO_BACKUP_TYPE_AUTO:根据备份文件的内容自动选择快照或增量记录。如果文件中尚无快照,备份过程将创建一个;否则将创建一个部分备份记录。
typedef enum {
MCO_BACKUP_TYPE_SNAPSHOT,
MCO_BACKUP_TYPE_INCREMENTAL,
MCO_BACKUP_TYPE_AUTO
} mco_backup_type;
compression_level
int
可选的备份压缩级别(1 ~ 9);1表示最快,但最低的压缩级别)。使用0禁用压缩。
cipher
char const*
用于加密备份的可选密码。
err_buf
char*
错误描述缓冲区。
err_buf_sz
unsigned int *
在输入时,它指定了 err_buf
的大小。在返回时,它包含写入缓冲区的字符数。如果 err_buf_sz
为 null
,则该例程返回 MCO_E_ILLEGAL_PARAM
。
返回
MCO_S_OK
备份成功。
MCO_E_ILLEGAL_PARAM
标签参数超过了允许的最大长度(MCO_MAX_BACKUP_LABEL_SIZE
)。
MCO_E_DISK_OPEN
无法打开备份文件。
MCO_E_DISK_SEEK
文件系统中的 fseek()
函数调用失败,可能是由于备份文件完整性受损所致。
MCO_E_DISK_VERSION_MISMATCH
无法执行增量备份,因为备份文件中不包含之前的备份映像。
示例
{
mco_db_h con;
MCO_RET rc;
char * filename = “backup.bak”;
char label[MAX_LABEL_SIZE;
int duration_msec = 1000;
int msec;
do
{
rc = mco_db_connect( db_name, &con );
if ( MCO_S_OK == rc )
{
msec = (int)MCO_SYSTEM_GET_CURRENT_TIME_MSEC();
sprintf(label, "Backup at %d msec", msec);
/* backup the database */
rc = mco_backup_create( con, filename, label,
MCO_BACKUP_TYPE_AUTO, 1, 0, 0);
sleep_msec(duration_msec);
mco_db_disconnect(con);
}
} while (rc == MCO_S_OK && !stop);
}
文件
- 头文件:
mco.h
- 源文件:
mcobackup.c
- 库:
libmcobackup.a