backup and restore MonetDB

简介:
备份需要注意的是一致性问题. 前面我们测试了, monetdb从现象上来看是repeatable read隔离级别的, 所以备份如果在一个事务中进行的话不存在不一致的问题.
例如以下截取, 可以看出备份确实是一个事务中进行的.
postgres@150-> msqldump test
-- msqldump dump database Thu Aug 14 15:35:29 2014
-- MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://150.sky-mobi.com:50000/test'
START TRANSACTION;
CREATE SCHEMA "datacell" AUTHORIZATION "monetdb";
CREATE SCHEMA "rdf" AUTHORIZATION "monetdb";
CREATE SEQUENCE "sys"."seq_6544" AS INTEGER;
SET SCHEMA "rdf";
CREATE TABLE "rdf"."graph" (
        "gname" CHARACTER LARGE OBJECT,
        "gid"   INTEGER
);
SET SCHEMA "sys";
CREATE TABLE "sys"."a" (
        "id"   INTEGER       NOT NULL DEFAULT next value for "sys"."seq_6544",
        "info" VARCHAR(32),
        CONSTRAINT "a_id_pkey" PRIMARY KEY ("id")
);
COPY 536870912 RECORDS INTO "sys"."a" FROM stdin USING DELIMITERS '\t','\n','"';
....


但是, 如果要防止备份期间, 数据库被变更(例如迁移数据库, 需要一致性数据), 那么可以锁库, 然后备份再发布.
Since MonetDB does not provide global locking schemes, a time-consuming dump operation may become invalidated by a concurrent update query.
所以如果需要全库一致性备份, 需要将数据库转入维护模式. 备份完成再发布. 例如 : 
锁: monetdb lock 库名
发布: monetdb release 库名

monetdb提供的备份命令行攻击msqldump.
[root@150 ~]# msqldump --help
Usage: msqldump [ options ] [ dbname ]

Options are:
 -h hostname | --host=hostname    host to connect to
 -p portnr   | --port=portnr      port to connect to
 -u user     | --user=user        user id
 -d database | --database=database  database to connect to
 -f          | --functions        dump functions
 -t table    | --table=table      dump a database table
 -D          | --describe         describe database
 -N          | --inserts          use INSERT INTO statements
 -q          | --quiet            don't print welcome message
 -X          | --Xdebug           trace mapi network interaction
 -?          | --help             show this usage message
--functions and --table are mutually exclusive


一般可以把用户密码配置在~/.monetdb文件中, 然后使用msqldump就不需要输入用户密码了.
[root@150 ~]# vi ~/.monetdb 
user=monetdb
password=monetdb
[root@150 ~]# chmod 400 ~/.monetdb 


例如
一般备份重定向到压缩命令或文件即可.

备份整个数据库的DDL
[root@150 ~]# msqldump -D 库名

备份表的DDL
[root@150 ~]# msqldump -t c -D 库名
-- msqldump describe table c Thu Aug 14 14:55:41 2014
-- MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://150.sky-mobi.com:50000/test'
CREATE TABLE "sys"."c" (
        "id"   INTEGER,
        "info" VARCHAR(64),
        "c1"   VARCHAR(64)
);

备份整个数据库, 包括数据
msqldump 库名

备份函数定义
msqldump -f 库名

备份数据, 默认使用COPY方式输出
[root@150 ~]# msqldump -f test
-- msqldump dump functions Thu Aug 14 14:58:24 2014
-- MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://150.sky-mobi.com:50000/test'
[root@150 ~]# msqldump -t c test
-- msqldump dump table c Thu Aug 14 14:59:00 2014
-- MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://150.sky-mobi.com:50000/test'
CREATE TABLE "sys"."c" (
        "id"   INTEGER,
        "info" VARCHAR(64),
        "c1"   VARCHAR(64)
);
COPY 6 RECORDS INTO "sys"."c" FROM stdin USING DELIMITERS '\t','\n','"';
1       "test"  "test"
1       "test"  "test"
1       "test"  "test"
1       "test"  "test"
1       "test"  "test"
100     "test"  "test"

使用INSERT方式输出
[root@150 ~]# msqldump -t c -N test
-- msqldump dump table c Thu Aug 14 14:59:07 2014
-- MonetDB v11.17.21 (Jan2014-SP3), 'mapi:monetdb://150.sky-mobi.com:50000/test'
CREATE TABLE "sys"."c" (
        "id"   INTEGER,
        "info" VARCHAR(64),
        "c1"   VARCHAR(64)
);
INSERT INTO "sys"."c" VALUES (1, 'test', 'test');
INSERT INTO "sys"."c" VALUES (1, 'test', 'test');
INSERT INTO "sys"."c" VALUES (1, 'test', 'test');
INSERT INTO "sys"."c" VALUES (1, 'test', 'test');
INSERT INTO "sys"."c" VALUES (1, 'test', 'test');
INSERT INTO "sys"."c" VALUES (100, 'test', 'test');

还原则在mclient下直接运行备份文件即可.
例如
mclient 库名
\< 文件名

[参考]
1. man msqldump
2. man mclient
目录
相关文章
|
传感器 监控 安全
闭环反馈系统原理概述
有时,为了获得系统的一致性和稳定性并产生控制系统的期望输出,我们使用反馈回路。反馈只不过是输出信号的一部分。这个概念在控制系统中最常见和最重要,以实现输出的稳定性。根据反馈连接,控制系统分为两种类型。它们是开环控制系统和闭环控制系统。下面简单介绍下闭环反馈系统。
4121 0
闭环反馈系统原理概述
|
12月前
|
数据采集
以“股票代码实时抓取股票信息”为例的爬虫案例
爬虫—根据股票代码实时抓取股票信息
463 0
|
机器学习/深度学习 编解码 人工智能
阿里云可以免费试用的云服务器配置有哪些?最低1核2G最高4核16G
阿里云为个人和企业用户提供“免费试用 0门槛上云”云服务器免费试用活动(二选一),帮您0门槛轻松体验3个月,可免费试用云服务器最低配置为1核2G,最高配置为4核16G,还有2核4G、2核8G等热门配置,个人用户可免费试用1台,企业用户可免费试用2台,现在只需要注册认证即可免费申请试用。
1123 1
阿里云可以免费试用的云服务器配置有哪些?最低1核2G最高4核16G
|
11月前
|
人工智能 搜索推荐 算法
技术与人性:在数字时代探索人文关怀####
身处技术日新月异的今天,我们享受着科技带来的便捷,却也面临着前所未有的挑战——如何在冰冷的代码与算法中融入温暖的人性?本文旨在探讨技术背后的人文价值,通过剖析当前技术发展趋势,揭示技术进步对个体和社会的双重影响,并提出构建以人为本的技术发展观。不涉及具体技术细节,而是从更宏观的视角审视技术与人性的关系,强调在追求技术创新的同时,不应忽视对人类情感、伦理及社会责任的考量。 ####
|
12月前
|
存储 安全 网络安全
云计算时代的网络安全挑战与对策
【9月更文挑战第36天】随着云计算技术的飞速发展,企业和用户越来越倾向于将数据和应用程序迁移到云端。这种转变虽然带来了便利和效率的提升,但同时也引发了新的网络安全问题。本文旨在探讨云计算环境下的网络安全挑战,并提出相应的解决策略。我们将从云服务的基本概念入手,深入分析当前面临的主要安全威胁,并结合最新的技术进展,讨论如何构建一个更加安全的云环境。
|
缓存 Java easyexcel
如何高效的导出 百万级别的数据量 到 Excel?
如何高效的导出 百万级别的数据量 到 Excel?
492 0
|
算法 安全 关系型数据库
非对称加密算法Diffie-Hellman算法
Diffie-Hellman算法是一种非对称加密方法,用于在不安全的通道上建立共享密钥。它基于两个用户交换公开的p和g(大素数和其原根)以及各自的随机数计算得出相同的秘密密钥s/s&#39;。算法的安全性依赖于离散对数问题的困难性,防止未授权者计算出密钥。该算法与对称加密(如AES)结合,先生成共享密钥,再用于加密实际通信,确保消息安全。
432 2
【qt】QTableWidget 表格组件3
【qt】QTableWidget 表格组件
289 0
|
网络协议 数据安全/隐私保护
Socks5代理和HTTP代理有哪些优缺点?
SOCKS5和HTTP代理对比:SOCKS5支持TCP/UDP,提供身份验证和数据加密,性能优但无法处理HTTP头部信息;HTTP代理能读取头部做细粒度控制,广泛支持但仅限HTTP协议,可能影响性能。选择取决于具体需求和应用支持。
|
存储 分布式计算 大数据
首批!阿里云MaxCompute完成中国信通院基于无服务器架构大数据平台测试
近日,阿里云计算有限公司MaxCompute产品顺利完成中国信通院首批无服务器架构(Serverless)大数据平台测试。
721 7