① mysql数据增量同步到hive
同步业务库的数据到ODS层,之前一直是全量同步数据,主要考虑IO太大,耗时太长,重复拉取同样的数据,现在考虑增量同步的方式实现,同时对库表数据做分区。
增量同步主要分为两步,第一步,存量数据一次性同步;第二步,在存量数据的基础之上,做增量;后期的每一次同步都是增量同步。以下是具体同步方案:
用Sqoop同步表中全部数据到Hive表中;
a.根据hive中最大更新时间,用Sqoop提取更新时间为这个时间之后的增量数据;
1)获取表的所有列,把datetime和timestamp类型,统一在java中映射成TIMESTAMP类型,脚本如下:
2) 用sqoop import拉取数据,脚本如下:
1)创建增量同步的sqoop job,脚本如下:
a、从hive中获取表的最大更新时间
b、以上面获取的最大更新时间,作为起点,创建sqoop job,脚本如下:
c、创建sqoop job之后,就是执行job了,脚本如下:
具体参数详解,参考: https://www.cnblogs.com/Alcesttt/p/11432547.html
② 如何增量导入MYSQL数据库中的数据
mysql数据库的导入,有两种方法:
1)
先导出数据库sql脚本,再导入;
2)
直接拷贝数据库目录和文件。
在不同操作系统或mysql版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用sql脚本形式导入。下面分别介绍两种方法。
2.
方法一
sql脚本形式
操作步骤如下:
2.1.
导出sql脚本
在原数据库服务器上,可以用phpmyadmin工具,或者mysqlmp命令行,导出sql脚本。
2.1.1
用phpmyadmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“drop
database”和“drop
table”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的sql文件保存下来。
2.1.2
用mysqlmp命令行
命令格式
mysqlmp
-u用户名
-p
数据库名
>
数据库名.sql
范例:
mysqlmp
-uroot
-p
abc
>
abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2.
创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
2.3.
将sql脚本导入执行
同样是两种方法,一种用phpmyadmin(mysql数据库管理)工具,或者mysql命令行。
2.3.1
用phpmyadmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"sql"菜单中,浏览选择刚才导出的sql文件,点击“执行”以上载并执行。
注意:phpmyadmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
#
gzip
xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3
直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1
准备原始文件
用tar打包为一个文件
3.2
创建空数据库
3.3
解压
在临时目录中解压,如:
cd
/tmp
tar
zxf
mydb.tar.gz
3.4
拷贝
将解压后的数据库文件拷贝到相关目录
cd
mydb/
cp
*
/var/lib/mysql/mydb/
对于freebsd:
cp
*
/var/db/mysql/mydb/
3.5
权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown
mysql:mysql
/var/lib/mysql/mydb/*
chmod
660
/var/lib/mysql/mydb/*
打字不易,如满意,望采纳。
③ rman备份脚本和rman增量备份脚本分享
一、单独备份
1、经典整库备份:backup
as
compressed
backupset
database
include
current
controlfile
plus
archivelog
delete
all
input;
2、tablespace:backup
tablespace
名字;
3、数据文件:backup
datafile
n;
(n:具体的数据文件编号select
file_name,file_id,tablespace_name
from
dba_data_files;)
4、控制文件:backup
current
controlfile;或者backup
database
include
current
controlfile;
5、日志文件:backup
archivelog
all;或者
database
plus
archivelog;
6、参数文件:backup
spfile;
7、全库备份脚本:
复制代码
代码如下:
run{
allocate
channel
c1
type
disk;
backup
full
tag
‘dbfull'
format
‘/backup/full%u_%s_%p'
database
include
current
controlfile;
sql
‘alter
system
archive
log
current';
#在数据库进行全备份完成之后,需要执行该条命令将当前日志归档,备份归档日志时应该包括最后生成的归档
backup
filesperset
3
format
‘/backup/arch%u_%s_%p'#filesperset
3设定每个备份集里文件不超过3个
archivelog
all
delete
input;
#备份归档可选,可以单独定期备份
release
channel
c1;
}
二、增量备份
1、0级增量备份
复制代码
代码如下:
run{
allocate
channel
c1
type
disk;
backup
incremental
level
0
tag
‘db0'
format
‘/backup/db0%u_%s_%p'database
include
current
controlfile;
;
sql
'alter
system
archive
log
current';#在数据库进行全备份完成之后,需要执行该条命令将当前日志归档,备份归档日志时应该包括最后生成的归档
backup
filesperset
3
format
‘/backup/arch%u_%s_%p'#filesperset
3设定每个备份集里文件不超过3个
archivelog
all
delete
input;
#备份归档可选,可以单独定期备份
release
channel
c1;
}
2、1级备份脚本
复制代码
代码如下:
run{
allocate
channel
c1
type
disk;
backup
incremental
level
1
tag
‘db1'
format
‘/backup/db1%u_%s_%p'
database
skip
readonly
include
current
controlfile;
backup
filesperset
3
format
‘/backup/arch%u_%s_%p'#filesperset设定每个备份集里文件不超过3个
archivelog
all
delete
input;
#备份归档可选,可以单独定期备份
release
channel
c1;
}
④ 如何让SQL数据库进行增量备份
在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误,我们都可以通过备份文件将数据库恢复到任何一个备份过的时刻点。
备份步骤:
1. 在“SQL Server企业管理器”中注册数据库所在的服务器,注意要使用sa用户名和口令,否则以后执行备份调度的时候,会出现权限不足,导致不能进行备份。
2. 确保该服务器的SQL Server Agent服务是开启的,因为所有的调度都是通过该代理进行执行的。
3. 在“SQL Server企业管理器”中选中Test数据库,右键打开“备份数据库”窗口,指定一个新的文件Test-daily.bak,选择“完全”进行一次完全备份。
4. 再次打开“备份数据库”窗口,这次使用“差异备份”,“重写”选项设置为“追加到媒体”,目的文件仍然是前面步骤所指定的Test-daily.bak,并在“调度”选项中设置为每天的19:00,这样,SQL Server会在每天的19:00将数据库自上次备份以来发生的变化,以增量备份的方式追加到Test-daily.bak文件中。(测试的时候,可以设置为每天的每1分钟进行一次备份,以便可以很快的看到备份结果)
在需要进行数据库恢复的时候,可以按照如下还原步骤进行操作:
1. 新建一个数据库,比如名为Back, 右键打开“还原数据库”窗口,选择“从设备”进行还原,然后在“选择设备…”中选定备份所使用的Test-daily.bak文件,回到“还原数据库”窗口,“备份号”默认为1(对应的就是备份步骤3中的初次完全备份),不必更改。在“选项”标签页中,选中“强制还原”,最关键的一步是,在“恢复完成状态”中,选中第2或第3项,即保证“能还原其它事务日志”,这样还原之后,这个新的数据库就回到了我们进行第一次完全备份时候的状态,此时,该Back数据库将处于“正在装载”或“只读”的状态,没有关系,这是正常的,因为我们接下来还需要通过事务日志将该数据库恢复到指定的某个状态。
2. 再次打开“还原数据库”窗口,同样选择“从设备”进行还原,然后在“选择设备…”中选定备份所使用的Test-daily.bak文件,回到“还原数据库”窗口,点击“备份号”后面的“查看内容…”按钮,在新的窗口中,可以看到里面列出了每天19:00左右备份过的备份集(除了最顶上一个是我们初次的完全备份集,其它都是每天的增量备份集),选中想要恢复的某个备份集,单击“确定”回到主窗口,可以看到“还原备份集”默认选中的是“差异”,再单击确定,这样,Back数据库就恢复到了我们选定的某个备份集了。
上述还原步骤可以重复进行,直到我们找到确切需要的某个备份集。
另外,恢复后的数据库名称是Back,如果想将其改名为Test,可以执行
EXEC sp_renamedb 'Back', 'Test'
在重命名数据库之前,应该确保没有人使用该数据库,而且数据库设置为单用户模式。
补充:需要在"备份数据库"->"常规"选项卡里选中"重写现有媒体",这样在"选项"选项卡里才能设定"备份集到期时间",并且发现,这样设定好"到期时间"之后,即使将"重写现有媒体"改为"追加到媒体",所设定的"到期时间"还是有效的,这可以在调度里的"步骤"脚本中看出来,如:
BACKUP DATABASE [model] TO DISK = N'D:\test.bak' WITH NOINIT , NOUNLOAD , RETAINDAYS = 1, DIFFERENTIAL , NAME = N'model 备份', NOSKIP , STATS = 10, NOFORMAT,通过这种方式应该可以实现保留最近N天的备份,测试中....
⑤ 版本控制工具共有哪些各有什么区别
常见的版本控制软件有Visual SourceSafe,SourceAnywhere,Concurrent Version System(简称CVS),StarTeam和Subversion(简称SVN)。具体区别可以参考文章:常见版本控制软件汇总
⑥ QLIKVIEW怎么写增量加载脚本
qlikview写增量加载脚本还是挺麻烦的,但是你可以进行如下操作来实现增量数据加载:
寻找增量时间戳
各种数据库:表的创建时间字段和修改时间字段或者最后的修改时间字段:
sql server:可以用找自增字段或者时间戳;
oracle:找序列字段也是自增的;
如果找不到以上字段,可以分析实际业务数据,比如各种编号是不是不重复自增的,上个月的数据不会改变,变化的只是本月的,那么本月数据就是增量数据。
对有增量变更记录的数据表进行拆分
对有增量数据的
Lookup组件delete可以实现insert和update,delete只能采用outer join方法;
outer join和NULL关键字方法可以实现insert,update和delete,但是当数据量较大时消耗性能。
SCD缓慢变化维度组件可以很容易实现insert和update,delete只能采用outer join方法;
ETL无增量数据,如果是在找不到增量数据,智能先全部删除然后全部抽取。
其实你不一定要用qlikview的,商业智能FineBI也不错的,简单好用易上手,自助用起来流畅。
⑦ linux下增量备份脚本怎么针对某一个数据库备份
可以用xtrabackup开源工具进行增量备份