真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于mysql怎么實(shí)時(shí)etl的信息

如何將mysql中的數(shù)據(jù)導(dǎo)入或備份到sql server中

最簡(jiǎn)單的方式就是購(gòu)買一個(gè)etl工具,可以實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)之間的交流。再不行就做一個(gè)程序?qū)iT針對(duì)mysql與SQLserver之間數(shù)據(jù)的轉(zhuǎn)換,反正也沒(méi)有幾個(gè)表,用hibernate(java),nhibernate(C#)二級(jí)緩存機(jī)制將表中字段轉(zhuǎn)為一個(gè)個(gè)對(duì)象實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)之間的交流。

創(chuàng)新互聯(lián)建站長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為白堿灘企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,白堿灘網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

如何實(shí)時(shí)監(jiān)控MySql狀態(tài)

首先介紹下 pt-stalk,它是 Percona-Toolkit 工具包中的一個(gè)工具,說(shuō)起 PT 工具包大家都不陌生,平時(shí)常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于這個(gè)工具包,這里就不多介紹了。

pt-stalk 的主要功能是在出現(xiàn)問(wèn)題時(shí)收集 OS 及 MySQL 的診斷信息,這其中包括:

1. OS 層面的 CPU、IO、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)等信息;

2. MySQL 層面的行鎖等待、會(huì)話連接、主從復(fù)制,狀態(tài)參數(shù)等信息。

而且 pt-stalk 是一個(gè) Shell腳本,對(duì)于我這種看不懂 perl 的人來(lái)說(shuō)比較友好,腳本里面的監(jiān)控邏輯與監(jiān)控命令也可以拿來(lái)參考,用于構(gòu)建自己的監(jiān)控體系。

三、使用

接著我們來(lái)看下如何使用這個(gè)工具。

pt-stalk 通常以后臺(tái)服務(wù)形式監(jiān)控 MySQL 并等待觸發(fā)條件,當(dāng)觸發(fā)條件時(shí)收集相關(guān)診斷數(shù)據(jù)。

觸發(fā)條件相關(guān)的參數(shù)有以下幾個(gè):

function:

°?默認(rèn)為 status,代表監(jiān)控 SHOW GLOBAL STATUS 的輸出;

°?也可以設(shè)置為 processlist,代表監(jiān)控 show processlist 的輸出;

variable:

°?默認(rèn)為 Threads_running,代表 監(jiān)控參數(shù),根據(jù)上述監(jiān)控輸出指定具體的監(jiān)控項(xiàng);

threshold:

°?默認(rèn)為 25,代表 監(jiān)控閾值,監(jiān)控參數(shù)超過(guò)閾值,則滿足觸發(fā)條件;

°?監(jiān)控參數(shù)的值非數(shù)字時(shí),需要配合 match 參數(shù)一起使用,如 processlist 的 state 列;

cycles:

°?默認(rèn)為 5,表示連續(xù)觀察到五次滿足觸發(fā)條件時(shí),才觸發(fā)收集;

連接參數(shù):host、password、port、socket。

其他一些重要參數(shù):

iterations:該參數(shù)指定 pt-stalk 在觸發(fā)收集幾次后退出,默認(rèn)會(huì)一直運(yùn)行。

run-time:觸發(fā)收集后,該參數(shù)指定收集多長(zhǎng)時(shí)間的數(shù)據(jù),默認(rèn) 30 秒。

sleep:該參數(shù)指定在觸發(fā)收集后,sleep 多久后繼續(xù)監(jiān)控,默認(rèn) 300 秒。

interval:指定狀態(tài)參數(shù)的檢查頻率,判斷是否需要觸發(fā)收集,默認(rèn) 1 秒。

dest:監(jiān)控?cái)?shù)據(jù)存放路徑,默認(rèn)為 /var/lib/pt-stalk。

retention-time :監(jiān)控?cái)?shù)據(jù)保留時(shí)長(zhǎng),默認(rèn) 30 天。

daemonize:以后臺(tái)服務(wù)運(yùn)行,默認(rèn)不開(kāi)啟。

log:后臺(tái)運(yùn)行日志,默認(rèn)為 /var/log/pt-stalk.log。

collect:觸發(fā)發(fā)生時(shí)收集診斷數(shù)據(jù),默認(rèn)開(kāi)啟。

°?collect-gdb:收集 GDB 堆棧跟蹤,需要 gdb 工具。

°?collect-strace:收集跟蹤數(shù)據(jù),需要 strace 工具。

°?collect-tcpdump:收集 tcpdump 數(shù)據(jù),需要 tcpdump 工具。

如何對(duì)MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行實(shí)時(shí)同步

實(shí)現(xiàn)兩個(gè)Mysql數(shù)據(jù)庫(kù)之間同步同步原理:

MySQL 為了實(shí)現(xiàn)replication 必須打開(kāi)bin-log 項(xiàng),也是打開(kāi)二進(jìn)制的MySQL 日志記錄選項(xiàng)。MySQL 的bin log 二

進(jìn)制日志,可以記錄所有影響到數(shù)據(jù)庫(kù)表中存儲(chǔ)記錄內(nèi)容的sql 操作,如insert / update / delete 操作,而不記錄

select 這樣的操作。因此,我們可以通過(guò)二進(jìn)制日志把某一時(shí)間段內(nèi)丟失的數(shù)據(jù)可以恢復(fù)到數(shù)據(jù)庫(kù)中(如果二進(jìn)制日

志中記錄的日志項(xiàng),包涵數(shù)據(jù)庫(kù)表中所有數(shù)據(jù),那么, 就可以恢復(fù)本地?cái)?shù)據(jù)庫(kù)的全部數(shù)據(jù)了)。 而這個(gè)二進(jìn)制日志,

如果用作遠(yuǎn)程數(shù)據(jù)庫(kù)恢復(fù),那就是replication 了。這就是使用replication 而不用sync 的原因。這也是為什么要設(shè)

置bin-log = 這個(gè)選項(xiàng)的原因。

在同步過(guò)程中,最重要的同步參照物,就是同步使用那一個(gè)二進(jìn)制日志文件,從那一條記錄開(kāi)始同步。下面就介紹

下怎樣實(shí)現(xiàn)兩個(gè)Mysql數(shù)據(jù)庫(kù)之間的主從同步。

一、 概述

  MySQL從3.23.15版本以后提供數(shù)據(jù)庫(kù)復(fù)制(replication)功能,利用該功能可以實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)同步、主從模式、

互相備份模式的功能。本文檔主要闡述了如何在linux系統(tǒng)中利用mysql的replication進(jìn)行雙機(jī)熱備的配置。

二、 環(huán)境

操作系統(tǒng):Linux 2.6.23.1-42.fc8 # SMP(不安裝XEN)

Mysql版本:5.0.45-4.fc8

設(shè)備環(huán)境:PC(或者虛擬機(jī))兩臺(tái)

三、 配置

數(shù)據(jù)庫(kù)同步復(fù)制功能的設(shè)置都在MySQL的配置文件中體現(xiàn),MySQL的配置文件(一般是my.cnf):在本環(huán)境下

為/etc/my.cnf。

3.1 設(shè)置環(huán)境:

IP的設(shè)置:

A主機(jī) IP:10.10.0.119

Mask:255.255.0.0

B主機(jī) IP:10.10.8.112

Mask:255.255.0.0

在IP設(shè)置完成以后,需要確定兩主機(jī)的防火墻確實(shí)已經(jīng)關(guān)閉。可以使用命令service iptables status查看防火墻狀態(tài)

。如果防火墻狀態(tài)為仍在運(yùn)行。使用service iptables stop來(lái)停用防火墻。如果想啟動(dòng)關(guān)閉防火墻,可以使用setup命

令來(lái)禁用或定制。

最終以兩臺(tái)主機(jī)可以相互ping通為佳。

3.2 配置A主(master) B從(slave)模式

3.2.1 配置A 為master

  1、增加一個(gè)用戶同步使用的帳號(hào):

GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;

GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;

賦予10.10.8.112也就是Slave機(jī)器有File權(quán)限,只賦予Slave機(jī)器有File權(quán)限還不行,還要給它REPLICATION SLAVE的權(quán)

限才可以。

2、增加一個(gè)數(shù)據(jù)庫(kù)作為同步數(shù)據(jù)庫(kù):

create databbse test;

3、創(chuàng)建一個(gè)表結(jié)構(gòu):

create table mytest (username varchar(20),password varchar(20));

4、修改配置文件:

修改A的/etc/my.cnf文件,在my.cnf配置項(xiàng)中加入下面配置:

server-id = 1 #Server標(biāo)識(shí)

log-bin

binlog-do-db=test #指定需要日志的數(shù)據(jù)庫(kù)

5、重起數(shù)據(jù)庫(kù)服務(wù):

service mysqld restart

查看server-id:

show variable like ‘server_id’;

實(shí)例:

mysql show variables like 'server_id';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| server_id | 1 |

+---------------+-------+

1 row in set (0.00 sec)

6、用show master status/G命令看日志情況。

正常為:

mysql show master status/G

*************************** 1. row ***************************

File: mysqld-bin.000002

positiion: 198

Binlog_Do_DB: test,test

Binlog_Ignore_DB:

1 row in set (0.08 sec)

3.2.2 配置B 為slave

1、增加一個(gè)數(shù)據(jù)庫(kù)作為同步數(shù)據(jù)庫(kù):

create databbse test;

2、創(chuàng)建一個(gè)表結(jié)構(gòu):

create table mytest (username varchar(20),password varchar(20));

3、修改配置文件:

修改B的/etc/my.cnf文件,在my.cnf配置項(xiàng)中加入下面配置:

server-id=2

master-host=10.10. 0.119

master-user=backup #同步用戶帳號(hào)

master-password=1234

master-port=3306

master-connect-retry=60 #預(yù)設(shè)重試間隔60秒

replicate-do-db=test #告訴slave只做backup數(shù)據(jù)庫(kù)的更新

5、重起數(shù)據(jù)庫(kù)服務(wù):

service mysqld restart

查看server-id:

show variables like ‘server_id’;

實(shí)例:

mysql show variables like 'server_id';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| server_id | 2 |

+---------------+-------+

1 row in set (0.00 sec)

6、用show slave status/G命令看日志情況。

正常為:

mysql show slave status/G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.10.0.119

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqld-bin.000001

Read_Master_Log_Pos: 98

Relay_Log_File: mysqld-relay-bin.000003

Relay_Log_Pos: 236

Relay_Master_Log_File: mysqld-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test,test

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 98

Relay_Log_Space: 236

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

1 row in set (0.01 sec)

3.2.3 驗(yàn)證配置

分別使用insert, delete , update在A主機(jī)進(jìn)行增刪改查數(shù)據(jù)庫(kù);查看B主機(jī)的數(shù)據(jù)庫(kù)是否與A主機(jī)一致;若一致,則配

置成功。

3.3雙機(jī)互備模式

如果在A主機(jī)加入slave設(shè)置,在B主機(jī)加入master設(shè)置,則可以做B-A的同步。

1、在A主機(jī)的配置文件中 mysqld配置項(xiàng)加入以下設(shè)置:

master-host=10.10.8.112

master-user=backup

master-password=1234

replicate-do-db=test

master-connect-retry=10

2、在B的配置文件中 mysqld配置項(xiàng)加入以下設(shè)置:

log-bin

binlog-do-db=test

注意:當(dāng)有錯(cuò)誤產(chǎn)生時(shí),*.err日志文件同步的線程退出,當(dāng)糾正錯(cuò)誤后,要讓同步機(jī)制進(jìn)行工作,運(yùn)行slave

start。

重起A、B機(jī)器,則可以實(shí)現(xiàn)雙向的熱備份。

總之,成功完成以上配置后,在主服務(wù)器A的test庫(kù)里添加數(shù)據(jù)或刪除數(shù)據(jù),在從服務(wù)器B的test庫(kù)里馬上也能

看到相應(yīng)的變更。兩臺(tái)服務(wù)器的同步操作可以說(shuō)是瞬間完成的。

MYSQL數(shù)據(jù)如何實(shí)時(shí)備份

MYSQL數(shù)據(jù)如何實(shí)時(shí)備份

依次單擊:開(kāi)始--程序--Microsoft SQL Server--企業(yè)管理器--SQL Server組--管理--數(shù)據(jù)庫(kù)維護(hù)計(jì)劃

在右側(cè)空白處右鍵單擊,新建維護(hù)計(jì)劃--勾選要備份的數(shù)據(jù)庫(kù)--下一步

指定數(shù)據(jù)庫(kù)備份計(jì)劃--調(diào)度--單擊"更改"--設(shè)置備份的時(shí)間,備份周期--下一步

每日頻率即是每天什么時(shí)間開(kāi)始進(jìn)行備份

發(fā)生頻率即是執(zhí)行的周期

指定備份磁盤(pán)目錄--修改"使用此目錄"的路徑作為備份數(shù)據(jù)庫(kù)的存放路徑.勾選刪除早于此時(shí)間的文件,我這里選擇一周,即是數(shù)據(jù)庫(kù)備份文件把一周前的進(jìn)行刪除

給此任務(wù)計(jì)劃填寫(xiě)一個(gè)名字:back 2單擊"完成",就可以在數(shù)據(jù)庫(kù)維護(hù)計(jì)劃中看到剛才新建的計(jì)劃.

注意事項(xiàng)

一定要開(kāi)啟sql server agent服務(wù)

調(diào)度工具(ETL+任務(wù)流)

kettle是一個(gè)ETL工具,ETL(Extract-Transform-Load的縮寫(xiě),即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過(guò)程)。

kettle中文名稱叫水壺,該項(xiàng)目的主程序員MATT 希望把各種數(shù)據(jù)放到一個(gè)壺里,然后以一種指定的格式流出。

所以他的重心是用于數(shù)據(jù)

oozie是一個(gè)工作流,Oozie工作流是放置在控制依賴DAG(有向無(wú)環(huán)圖 Direct Acyclic Graph)中的一組動(dòng)作(例如,Hadoop的Map/Reduce作業(yè)、Pig作業(yè)等),其中指定了動(dòng)作執(zhí)行的順序。

oozie工作流中是有數(shù)據(jù)流動(dòng)的,但是重心是在于工作流的定義。

二者雖然都有相關(guān)功能及數(shù)據(jù)的流動(dòng),但是其實(shí)用途是不一樣的。

查看幫助

列舉出所有l(wèi)inux上的數(shù)據(jù)庫(kù)

列舉出所有Window上的數(shù)據(jù)庫(kù)

查看數(shù)據(jù)庫(kù)下的所有表

(1)確定mysql服務(wù)啟動(dòng)正常

查詢控制端口和查詢進(jìn)程來(lái)確定,一下兩種辦法可以確認(rèn)mysql是否在啟動(dòng)狀態(tài)

辦法1:查詢端口

MySQL監(jiān)控的TCP的3306端口,如果顯示3306,證明MySQL服務(wù)在運(yùn)行中

辦法二:查詢進(jìn)程

可以看見(jiàn)mysql的進(jìn)程

沒(méi)有指定數(shù)據(jù)導(dǎo)入到哪個(gè)目錄,默認(rèn)是/user/root/表名

原因:

如果表中有主鍵,m的值可以設(shè)置大于1的值;如果沒(méi)有主鍵只能將m值設(shè)置成為1;或者要將m值大于1,需要使用--split-by指定一個(gè)字段

設(shè)置了-m 1 說(shuō)明只有一個(gè)maptask執(zhí)行數(shù)據(jù)導(dǎo)入,默認(rèn)是4個(gè)maptask執(zhí)行導(dǎo)入操作,但是必須指定一個(gè)列來(lái)作為劃分依據(jù)

導(dǎo)入數(shù)據(jù)到指定目錄

在導(dǎo)入表數(shù)據(jù)到HDFS使用Sqoop導(dǎo)入工具,我們可以指定目標(biāo)目錄。使用參數(shù) --target-dir來(lái)指定導(dǎo)出目的地,使用參數(shù)—delete-target-dir來(lái)判斷導(dǎo)出目錄是否存在,如果存在就刪掉

查詢導(dǎo)入

提示:must contain '$CONDITIONS' in WHERE clause。

where id =1 匹配條件

$CONDITIONS:傳遞作用。

如果 query 后使用的是雙引號(hào),則 $CONDITIONS前必須加轉(zhuǎn)義符,防止 shell 識(shí)別為自己的變量。

--query時(shí)不能使用--table一起使用

需要指定--target-dir路徑

導(dǎo)入到hdfs指定目錄并指定要求

數(shù)據(jù)導(dǎo)出儲(chǔ)存方式(數(shù)據(jù)存儲(chǔ)文件格式---( textfil parquet)--as-textfileImports data as plain text (default)--as-parquetfile Imports data to Parquet Files)

導(dǎo)入表數(shù)據(jù)子集到HDFS

sqoop導(dǎo)入blob數(shù)據(jù)到hive

對(duì)于CLOB,如xml文本,sqoop可以遷移到Hive表,對(duì)應(yīng)字段存儲(chǔ)為字符類型。

對(duì)于BLOB,如jpg圖片,sqoop無(wú)法直接遷移到Hive表,只能先遷移到HDFS路徑,然后再使用Hive命令加載到Hive表。遷移到HDFS后BLOB字段存儲(chǔ)為16進(jìn)制形式。

2.1.3導(dǎo)入關(guān)系表到Hive

第一步:導(dǎo)入需要的jar包

將我們mysql表當(dāng)中的數(shù)據(jù)直接導(dǎo)入到hive表中的話,我們需要將hive的一個(gè)叫做hive-exec-1.1.0-cdh5.14.0.jar的jar包拷貝到sqoop的lib目錄下

第二步:開(kāi)始導(dǎo)入

導(dǎo)入關(guān)系表到hive并自動(dòng)創(chuàng)建hive表

們也可以通過(guò)命令來(lái)將我們的mysql的表直接導(dǎo)入到hive表當(dāng)中去

通過(guò)這個(gè)命令,我們可以直接將我們mysql表當(dāng)中的數(shù)據(jù)以及表結(jié)構(gòu)一起倒入到hive當(dāng)中去

--incremental 增量模式。

append id 是獲取一個(gè)某一列的某個(gè)值。

lastmodified “2016-12-15 15:47:35” 獲取某個(gè)時(shí)間后修改的所有數(shù)據(jù)

-append 附加模式

-merge-key id 合并模式

--check-column 用來(lái)指定一些列,可以去指定多個(gè)列;通常的是指定主鍵id

--last -value 從哪個(gè)值開(kāi)始增量

==注意:增量導(dǎo)入的時(shí)候,一定不能加參數(shù)--delete-target-dir 否則會(huì)報(bào)錯(cuò)==

第一種增量導(dǎo)入方式(不常用)

1.Append方式

使用場(chǎng)景:有個(gè)訂單表,里面每個(gè)訂單有一個(gè)唯一標(biāo)識(shí)的自增列id,在關(guān)系型數(shù)據(jù)庫(kù)中以主鍵的形式存在。之前已經(jīng)將id在0-1000之間的編號(hào)的訂單導(dǎo)入到HDFS 中;如果在產(chǎn)生新的訂單,此時(shí)我們只需指定incremental參數(shù)為append,--last-value參數(shù)為1000即可,表示只從id大于1000后開(kāi)始導(dǎo)入。

(1)創(chuàng)建一個(gè)MySQL表

(2)創(chuàng)建一個(gè)hive表(表結(jié)構(gòu)與mysql一致)

注意:

append 模式不支持寫(xiě)入到hive表中

2.lastModify方式

此方式要求原有表有time字段,它能指定一個(gè)時(shí)間戳,讓sqoop把該時(shí)間戳之后的數(shù)據(jù)導(dǎo)入到HDFS;因?yàn)楹罄m(xù)訂單可能狀體會(huì)變化,變化后time字段時(shí)間戳也會(huì)變化,此時(shí)sqoop依然會(huì)將相同狀態(tài)更改后的訂單導(dǎo)入HDFS,當(dāng)然我們可以只當(dāng)merge-key參數(shù)為order-id,表示將后續(xù)新的記錄和原有記錄合并。

# 將時(shí)間列大于等于閾值的數(shù)據(jù)增量導(dǎo)入HDFS

使用 lastmodified 方式導(dǎo)入數(shù)據(jù),要指定增量數(shù)據(jù)是要 --append(追加)還是要 --merge-key(合并)last-value 指定的值是會(huì)包含于增量導(dǎo)入的數(shù)據(jù)中。

第二種增量導(dǎo)入方式(推薦)

==通過(guò)where條件選取數(shù)據(jù)更加精準(zhǔn)==

2.1.5從RDBMS到HBase

會(huì)報(bào)錯(cuò)

原因:sqoop1.4.6 只支持 HBase1.0.1 之前的版本的自動(dòng)創(chuàng)建 HBase 表的功能。

解決方案:手動(dòng)創(chuàng)建 HBase 表

導(dǎo)出前,目標(biāo)表必須存在與目標(biāo)數(shù)據(jù)庫(kù)中

默認(rèn)操作是將文件中的數(shù)據(jù)使用insert語(yǔ)句插入到表中

數(shù)據(jù)是在HDFS當(dāng)中的如下目錄/sqoop/emp,數(shù)據(jù)內(nèi)容如下

第一步:創(chuàng)建MySQL表

第二步:執(zhí)行導(dǎo)出命令

通過(guò)export來(lái)實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)出,將hdfs的數(shù)據(jù)導(dǎo)出到mysql當(dāng)中去

全量導(dǎo)出

增量導(dǎo)出

更新導(dǎo)出

總結(jié):

參數(shù)介紹

--update-key 后面也可以接多個(gè)關(guān)鍵字列名,可以使用逗號(hào)隔開(kāi),Sqoop將會(huì)匹配多個(gè)關(guān)鍵字后再執(zhí)行更新操作。

--export-dir 參數(shù)配合--table或者--call參數(shù)使用,指定了HDFS上需要將數(shù)據(jù)導(dǎo)入到MySQL中的文件集目錄。

--update-mode updateonly和allowinsert。 默認(rèn)模式為updateonly,如果指定--update-mode模式為allowinsert,可以將目標(biāo)數(shù)據(jù)庫(kù)中原來(lái)不存在的數(shù)據(jù)也導(dǎo)入到數(shù)據(jù)庫(kù)表中。即將存在的數(shù)據(jù)更新,不存在數(shù)據(jù)插入。

組合測(cè)試及說(shuō)明

1、當(dāng)指定update-key,且關(guān)系型數(shù)據(jù)庫(kù)表存在主鍵時(shí):

A、allowinsert模式時(shí),為更新目標(biāo)數(shù)據(jù)庫(kù)表存的內(nèi)容,并且原來(lái)不存在的數(shù)據(jù)也導(dǎo)入到數(shù)據(jù)庫(kù)表;

B、updateonly模式時(shí),為更新目標(biāo)數(shù)據(jù)庫(kù)表存的內(nèi)容,并且原來(lái)不存在的數(shù)據(jù)也不導(dǎo)入到數(shù)據(jù)庫(kù)表;

2、當(dāng)指定update-key,且關(guān)系型數(shù)據(jù)庫(kù)表不存在主鍵時(shí):

A、allowinsert模式時(shí),為全部數(shù)據(jù)追加導(dǎo)入到數(shù)據(jù)庫(kù)表;

B、updateonly模式時(shí),為更新目標(biāo)數(shù)據(jù)庫(kù)表存的內(nèi)容,并且原來(lái)不存在的數(shù)據(jù)也不導(dǎo)入到數(shù)據(jù)庫(kù)表;

3、當(dāng)不指定update-key,且關(guān)系型數(shù)據(jù)庫(kù)表存在主鍵時(shí):

A、allowinsert模式時(shí),報(bào)主鍵沖突,數(shù)據(jù)無(wú)變化;

B、updateonly模式時(shí),報(bào)主鍵沖突,數(shù)據(jù)無(wú)變化;

4、當(dāng)不指定update-key,且關(guān)系型數(shù)據(jù)庫(kù)表不存在主鍵時(shí):

A、allowinsert模式時(shí),為全部數(shù)據(jù)追加導(dǎo)入到數(shù)據(jù)庫(kù)表;

B、updateonly模式時(shí),為全部數(shù)據(jù)追加導(dǎo)入到數(shù)據(jù)庫(kù)表;

實(shí)際案例:

(1)mysql批量導(dǎo)入hive

使用shell腳本:

筆者目前用sqoop把mysql數(shù)據(jù)導(dǎo)入到Hive中,最后實(shí)現(xiàn)命令行導(dǎo)入,sqoop版本1.4.7,實(shí)現(xiàn)如下

最后需要把這個(gè)導(dǎo)入搞成job,每天定時(shí)去跑,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化增量導(dǎo)入,sqoop支持job的管理,可以把導(dǎo)入創(chuàng)建成job重復(fù)去跑,并且它會(huì)在metastore中記錄增值,每次執(zhí)行增量導(dǎo)入之前去查詢

創(chuàng)建job命令如下

創(chuàng)建完job就可以去執(zhí)行它了

sqoop job --exec users

可以把該指令設(shè)為L(zhǎng)inux定時(shí)任務(wù),或者用Azkaban定時(shí)去執(zhí)行它

hive導(dǎo)出到MySQL時(shí),date類型數(shù)據(jù)發(fā)生變化?

問(wèn)題原因:時(shí)區(qū)設(shè)置問(wèn)題,date -R查看服務(wù)器時(shí)間,show VARIABLES LIKE "%time_zone"查看Mysql時(shí)間,system并不表示中國(guó)的標(biāo)準(zhǔn)時(shí)間,要將時(shí)間設(shè)置為東八區(qū)

(1):對(duì)市面上最流行的兩種調(diào)度器,給出以下詳細(xì)對(duì)比,以供技術(shù)選型參考??傮w來(lái)說(shuō),ooize相比azkaban是一個(gè)重量級(jí)的任務(wù)調(diào)度系統(tǒng),功能全面,但配置使用也更復(fù)雜。如果可以不在意某些功能的缺失,輕量級(jí)調(diào)度器azkaban是很不錯(cuò)的候選對(duì)象。

(2):功能:

兩者均可以調(diào)度mapreduce,pig,java,腳本工作流任務(wù);

兩者均可以定時(shí)執(zhí)行工作流任務(wù);

(3):工作流定義:

Azkaban使用Properties文件定義工作流;

Oozie使用XML文件定義工作流;

(4):工作流傳參:

Azkaban支持直接傳參,例如${input};

Oozie支持參數(shù)和EL表達(dá)式,例如${fs:dirSize(myInputDir)};

(5):定時(shí)執(zhí)行:

Azkaban的定時(shí)執(zhí)行任務(wù)是基于時(shí)間的;

Oozie的定時(shí)執(zhí)行任務(wù)基于時(shí)間和輸入數(shù)據(jù);

(6):資源管理:

Azkaban有較嚴(yán)格的權(quán)限控制,如用戶對(duì)工作流進(jìn)行讀/寫(xiě)/執(zhí)行等操作;

Oozie暫無(wú)嚴(yán)格的權(quán)限控制;

(7):工作流執(zhí)行:

Azkaban有兩種運(yùn)行模式,分別是solo server mode(executor server和web server部署在同一臺(tái)節(jié)點(diǎn))和multi server mode(executor server和web server可以部署在不同節(jié)點(diǎn));

Oozie作為工作流服務(wù)器運(yùn)行,支持多用戶和多工作流;

(8):工作流管理:

Azkaban支持瀏覽器以及ajax方式操作工作流;

Oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流;

瀏覽器頁(yè)面訪問(wèn)

使用Oozie時(shí)通常整合hue,用戶數(shù)據(jù)倉(cāng)庫(kù)調(diào)度

就是剛才選擇的腳本

腳本里需要的參數(shù),盡量設(shè)置為動(dòng)態(tài)自動(dòng)獲取,如 ${date}

第一步的參數(shù)是所有文件和當(dāng)天日期,后面的只需要日期,最后一步是導(dǎo)出所有結(jié)果,相應(yīng)填入

添加文件和設(shè)置相應(yīng)參數(shù)

運(yùn)行后會(huì)有狀態(tài)提示頁(yè)面,可以看到任務(wù)進(jìn)度

點(diǎn)擊調(diào)度任務(wù)的頁(yè)面情況

修改定時(shí)任務(wù)名和描述

添加需要定時(shí)調(diào)度的任務(wù)

sm-workflow的參數(shù)都是寫(xiě)死的,沒(méi)有設(shè)置動(dòng)態(tài),這里的下拉列表就不會(huì)有可選項(xiàng)。

設(shè)置參數(shù)

將sm-workflow的日期修改為 ${do_date},保存

進(jìn)入定時(shí)計(jì)劃sm-dw中,會(huì)看到有參數(shù) do_date

填入相應(yīng)參數(shù),前一天日期

Oozie常用系統(tǒng)常量

當(dāng)然,也可以通過(guò)這樣將參數(shù)傳入workflow任務(wù)中,代碼或者shell中需要的參數(shù)。

如,修改sm-workflow 中的 sqoop_import.sh,添加一個(gè)參數(shù) ${num}。

編輯文件(需要登陸Hue的用戶有對(duì)HDFS操作的權(quán)限),修改shell中的一個(gè)值為參數(shù),保存。

在workflow中,編輯添加參數(shù) ${num} ,或者num=${num} 保存。

進(jìn)入schedule中,可以看到添加的參數(shù),編輯輸入相應(yīng)參數(shù)即可。

Bundle統(tǒng)一管理所有定時(shí)調(diào)度,階段劃分:Bundle Schedule workflow

MYSQL如何實(shí)時(shí)更新數(shù)據(jù)庫(kù)的字段

mysql 數(shù)據(jù)庫(kù),更新字段語(yǔ)句:

一、UPDATE:

UPDATE的功能是更新表中的數(shù)據(jù)。這的語(yǔ)法和INSERT的第二種用法相似。必須提供表名以及SET表達(dá)式,在后面可以加WHERE以限制更新的記錄范圍。

UPDATE table_anem SET column_name1 = value1, column_name2 = value2, ...

WHERE ... 。

如下面的語(yǔ)句將users表中id等于123的記錄的age改為24。

UPDATE users SET age = 24 WHERE id = 123。

同樣,可以使用UPDATE更新多個(gè)字段的值 UPDATE users SET age = 24, name = 'Mike' WHERE id = 123。

上面的UPDATE語(yǔ)句通過(guò)WHERE指定一個(gè)條件,否則,UPDATE將更新表中的所有記錄的值。


網(wǎng)頁(yè)題目:關(guān)于mysql怎么實(shí)時(shí)etl的信息
本文路徑:http://weahome.cn/article/hdpiss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部