① 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開源工具進行增量備份