當前位置:首頁 » 數據倉庫 » 兩網之間不通怎麼傳輸資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

兩網之間不通怎麼傳輸資料庫

發布時間: 2023-05-14 01:59:58

❶ 電腦怎樣通過互聯網傳輸數據

網路中數據傳輸過程

我們每天都在使用互聯網,我們電腦上的數據是怎麼樣通過互聯網傳輸到到另外的一台電腦上的呢?

我們知道現在的互聯網中使用的TCP/IP協議是基於,OSI(開放系統互聯)的七層參考模型的,(雖然不是完全符合)從上到下分別為 應用層 表示層 會話層 傳輸層 網路層 數據鏈路層和物理層。其中數據鏈路層又可是分為兩個子層分別為邏輯鏈路控制層(Logic Link Control,LLC )和介質訪問控制層((Media Access Control,MAC )也就是平常說的MAC層。LLC對兩個節點中的鏈路進行初始化,防止連接中斷,保持可靠的通信。MAC層用來檢驗包含在每個楨中的地址信息。在下面會分析到。還要明白一點路由器是在網路層的,而網卡在數據鏈路層。

我們知道,ARP(Address Resolution Protocol,地址轉換協議)被當作底層協議,用於IP地址到物理地址的轉換。在乙太網中,所有對IP的訪問最終都轉化為對網卡MAC地址的訪問。如果主機A的ARP列表中,到主機B的IP地址與MAC地址對應不正確,由A發往B數據包就會發向錯誤的MAC地址,當然無法順利到達B,結 果是A與B根本不能進行通信。

首先我們分析一下在同一個網段的情況。假設有兩台電腦分別命名為A和B,A需要相B發送數據的話,A主機首先把目標設備B的IP地址與自己的子網掩碼進行「與」操作,以判斷目標設備與自己是否位於同一網段內。如果目標設備在同一網段內,並且A沒有獲得與目標設備B的IP地址相對應的MAC地址信息,則源設備(A)以第二層廣播的形式(目標MAC地址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備(A)與目標設備(B)的IP地址。同一網段中的所有其他設備都可以收到並分析這個ARP請求報文,如果某設備發現報文中的目標IP地址與自己的IP地址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC地址信息。為了減少廣播量,網路設備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次 ARP的請求與響應過程中,通信雙方都把對方的MAC地址與IP地址的對應關系保存在各自的ARP表中,以在後續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC地址的映射關系。一個最基本的網路拓撲結構:

PC-A並不需要獲取遠程主機(PC-C)的MAC地址,而是把IP分組發向預設網關,由網關IP分組的完成轉發過程。如果源主機(PC-A)沒有預設網關MAC地址的緩存記錄,則它會通過ARP協議獲取網關的MAC地址,因此在A的ARP表中只觀察到網關的MAC地址記錄,而觀察不到遠程主機的 MAC地址。在乙太網(Ethernet)中,一個網路設備要和另一個網路設備進行直接通信,

除了知道目標設備的網路層邏輯地址(如IP地址)外,還要知道目標設備的第二層物理地址(MAC地址)。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。 數據包在網路中的發送是一個及其復雜的過程,上圖只是一種很簡單的情況,中間沒有過多的中間節點,其實現實中只會比這個更復雜,但是大致的原理是一致的。

(1)PC-A要發送數據包到PC-C的話,如果PC-A沒有PC-C的IP地址,則PC-A首先要發出一個dns的請求,路由器A或者dns解析伺服器會給PC-A回應PC-C的ip地址,這樣PC-A關於數據包第三層的IP地址信息就全了:源IP地址:PC-A,目的ip地址:PC-C。

(2)接下來PC-A要知道如何到達PC-C,然後,PC-A會發送一個arp的地址解析請求,發送這個地址解析請求,不是為了獲得目標主機PC-C的MAC地址,而是把請求發送到了路由器A中,然後路由器A中的MAC地址會發送給源主機PC-A,這樣PC-A的數據包的第二層信息也全了,源MAC地址:PC-A的MAC地址,目的MAC地址:路由器A的MAC地址,

(3)然後數據會到達交換機A,交換機A看到數據包的第二層目的MAC地址,是去往路由器A的,就把數據包發送到路由器A,路由器A收到數據包,首先查看數據包的第三層ip目的地址,如果在自己的路由表中有去往PC-C的路由,說明這是一個可路由的數據包。 (4)然後路由器進行IP重組和分組的過程。首先更換此數據包的第二層包頭信息,路由器PC-A到達PC—C要經過一個廣域網,在這里會封裝很多廣域網相關的協議。其作用也是為了找下一階段的信息。同時對第二層和第三層的數據包重校驗。把數據經過Internet發送出去。最後經過很多的節點發送到目標主機PC_C中。

現在我們想一個問題,PC-A和PC-C的MAC地址如果是相同的話,會不會影響正常的通訊呢!答案是不會影響的,因為這兩個主機所處的區域網被廣域網分隔開了,通過對發包過程的分析可以看出來,不會有任何的問題。而如果在同一個區域網中的話,那麼就會產生通訊的混亂。當數據發送到交換機是,這是的埠信息會有兩個相同的MAC地址,而這時數據會發送到兩個主機上,這樣信息就會混亂。因此這也是保證MAC地址唯一性的一個理由。


  • 我暫且按我的理解說說吧。

先看一下計算機網路OSI模型的七個層次:

┌—————┐

│ 應用層 │←第七層

├—————┤

│ 表示層 │

├—————┤

│ 會話層 │

├—————┤

│ 傳輸層 │

├—————┤

│ 網路層 │

├—————┤

│數據鏈路層│

├—————┤

│ 物理層 │←第一層

└—————┘


而我們現在用的網路通信協議TCP/IP協議者只劃分了四成:


┌—————┐

│ 應用層 │ ←包括OSI的上三層

├—————┤

│ 傳輸層 │

├—————┤

│ 網路層 │

├—————┤

│網路介面層 │←包括OSI模型的下兩層,也就是各種不同區域網。

└—————┘


兩台計算機通信所必須需要的東西:IP地址(網路層)+埠號(傳送層)。


兩台計算機通信(TCP/IP協議)的最精簡模型大致如下:


主機A---->路由器(零個或多個)---->主機B


舉個例子:主機A上的應用程序a想要和主機B上面的應用程序b通信,大致如下


程序a將要通信的數據發到傳送層,在傳送層上加上與該應用程序對應的通信埠號(主機A上不同的應用程序有不同的埠號),如果是用的TCP的話就加上TCP頭部,UDP就加上UDP頭部。

在傳送成加上頭部之後繼續嚮往下傳到網路層,然後加上IP頭部(標識主機地址以及一些其他的數據,這里就不詳細說了)。

然後傳給下層到數據鏈路層封裝成幀,最後到物理層變成二進制數據經過編碼之後向外傳輸。


在這個過程中可能會經過許多各種各樣的區域網,舉個例子:


主機A--->(區域網1--->路由器--->區域網2)--->主機B


這個模型比上面一個稍微詳細點,其中括弧裡面的可以沒有也可能有一個或多個,這個取決於你和誰通信,也就是主機B的位置。


主機A的數據已經到了具體的物理介質了,然後經過區域網1到了路由器,路由器接受主機A來的數據先經過解碼,還原成數據幀,然後變成網路層數據,這個過程也就是主機A的數據經過網路層、數據鏈路層、物理層在路由器上面的一個反過程。

然後路由器分析主機A來的數據的IP頭部(也就是在主機A的網路層加上的數據),並且修改頭部中的一些內容之後繼續把數據傳送出去。


一直到主機B收到數據為止,主機B就按照主機A處理數據的反過程處理數據,直到把數據交付給主機B的應用程序b。完成主機A到主機B的單方向通信。


這里的主機A、B只是為了書寫方便而已,可能通信的雙方不一定就是個人PC,伺服器與主機,主機與主機,伺服器與伺服器之間的通信大致都是這樣的。


再舉個例子,我們開網頁上網路:

就是我們的主機瀏覽器的這個應用程序和網路的伺服器之間的通信。應用成所用的協議就是HTTP,而伺服器的埠號就是熟知埠號80.


大致過程就是上面所說,其中的細節很復雜,任何一個細節都可以寫成一本書,對於非專業人員也沒有必要深究。

❷ 不在用一個區域網內,一台電腦如何訪問另一電腦的資料庫

1.通過internet進行連接.
把裝有sql SERVER 2000的電腦的IP,以及資料庫的埠,映射到外網.
通過外網的IP及埠進行連接.
2.如果兩台電腦之間沒有使用網路或者物理連接,那我想,是沒撤了.

❸ 兩個不同數據的伺服器上的資料庫之間通信,如何實現

朋友你好,我之前也碰到過這樣的問題,你搭建openvpn在2個伺服器之間建立VPN通道,這樣相對數據也比較安全,需要另一台伺服器的數據可以通過欄位用程序調取就可以了。

❹ 2台伺服器之間使用網閘怎麼才能連接上資料庫

你描述的不太清楚!我估計是你的意思是通過網站連接資料庫的!
我現在假設你用的是ASP語言!
第一種情況 就是連接ACCESS資料庫 使用下面的代碼就可以了
dim connstr,conn,rs,sql
connstr="driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("wubo.mdb")
set conn=server.CreateObject("adodb.connection")
conn.open connstr
set rs=server.CreateObject("adodb.recordset")
sql="select count(*) from kh "
rs.open sql,conn,1,1

第二種情況就是連接SQL資料庫
set conn=server.createobject("ADODB.connection")
conn.open"Driver={SQL Server};Server=(local);DataBase=lht;uid=sa;pwd="
set rs=server.CreateObject("ADODB.recordset")
sql = "select * from board"
rs.Open sql,conn,3,1

注意自己需要修改一下表名和資料庫名字!

❺ 兩個資料庫之間傳輸數據有幾種方法

一種商業資料庫的數據傳輸方法,其包括至少一個中間文件伺服器,數據存儲方之間通過中間文件伺服器交換數據,其數據傳輸步驟如下:接收方的數據統計信息包含數據發送申請文件中,將數據發送申請文件發送到中間文件伺服器;發送方接收到中間文件伺服器轉發的數據發送申請文件後,分析申請文件中的數據統計信息,對比雙方數據是否一致,發送方將數據包發送到FTP

❻ 如何在兩台伺服器之間安全遷移MySQL資料庫

遷移MySQL資料庫通常只需要幾個簡單的步驟,但是由於您要轉移的數據量可能比較龐大,因此一般耗時也會比較長。

下面的步驟將指導您如何從舊的伺服器上導出MySQL資料庫,對它進行安全加固;然後將其復制並導入到新的伺服器上,以保證數據的完整。

將MySQL資料庫導出至轉儲文件(mp file)

Oracle提供了一個名為mysqlmp的工具,允許您輕松地將資料庫結構和其數據導出到一個SQL的轉儲文件。您可以使用如下的命令:

1.mysqlmp -u root -p --opt [database name] > [database name].sql

不過,請注意如下幾點:

我們可以使用--single-transaction的標志,以避免資料庫在導出數據的過程中被鎖死。這樣能夠在將數據導出到轉儲文件的同時,您仍可繼續在舊的資料庫上更新數據。不過請注意,那些在導出進程已經開始之後被更新的數據,是不會被導入轉儲文件之中的。

在運行該命令之前,請務必將[database name]替換成您的實際資料庫名稱。

請輸入您自己的用戶名和相對應的密碼,並確保該用戶具有備份資料庫所需的許可權。

安全加固備份文件

在大多數情況下,數據是一家企業的最重要的資產。因此,我們不希望資料庫的各種備份被暴露在不受保護的伺服器上,因為這樣有可能會造成錯誤地泄露,甚至會出現被黑客竊取等更為糟糕的狀況。

因此,通常您可以嘗試的做法是:壓縮、加密文件,然後刪除原文件。在Linux操作系統上,請使用以下的命令對已壓縮文件進行加密:

1.zip --encrypt mp.zip db.sql

在壓縮開始之前,系統將提示您輸入密碼。

傳輸備份文件

至此,我們已經獲得了一個加密的轉儲文件。下面讓我們通過網路使用SCP命令,將其傳輸到新的伺服器上:

1.scp /path/to/source-file user@host:/path/to/destination-folder/

將MySQL轉儲導入新伺服器

通過上面一步,我們已將備份文件傳到了新的伺服器上,下面讓我們來進行解密和提取:

1.unzip -P your-password mp.zip

為了存儲空間和安全方面的原因,一旦文件導入成功,請記得刪除其對應的轉儲文件。

您可以使用以下的命令來導入文件:

1.mysql -u root -p newdatabase < /path/to/newdatabase.sql

在新伺服器上驗證導入的數據

現在我們在新伺服器上已經導入了資料庫,那麼我們就需要一種方法來驗證數據的真實存在,並確保沒有任何遺漏。

我建議您同時在舊的和新的資料庫上運行如下查詢,並將獲得的結果進行對比。

該查詢會在所有的表裡計算行數,以顯示出新、舊資料庫中的數據量。

1.SELECT

2.TABLE_NAME,

3.TABLE_ROWS

4.FROM

`

5.information_schema`.`tables`

6.WHERE

`

7.table_schema` = 'YOUR_DB_NAME';

此外,我建議您檢查各個表中數字列的MIN和MAX記錄,以確保數據本身是有效的,而不僅僅是看數據的總量(雖然這是查詢所唯一能夠讀出的值)。另一種可供測試的選擇是將資料庫從新的伺服器導出為SQL轉儲文件,並將其與舊伺服器的SQL轉儲文件做比較。

此外,在應用程序被遷移之前,我建議您先將一個應用程序的實例重定向到新的資料庫上,以確認一切運行正常。

另一種導出和導入的選項

我們之所以把該選項放在最後,是因為我們的確不建議您去使用它。

該方法實現起來非常的容易,因為它僅使用一個命令,便能一次性將轉儲文件導出、傳輸、並將其數據導入到新的資料庫之中。

而它的不足之處在於,一旦其網路鏈接斷掉,您就需要重新啟動它了。

因此,我們認為它並不值得被推薦,尤其是在大型資料庫中,可能會非常不適用。

當然,如果您非要嘗試一下的話,可以使用如下的命令:

1.mysqlmp -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword'

重要提示

請確保在新舊兩處,安裝有相同官方發行版本的MySQL伺服器。否則,你需要按照MySQL網站上的升級說明來進行統一(請參見(https://dev.mysql.com/doc/refman/5.7/en/upgrading.html)。

請確保您在舊的伺服器上擁有足夠的空間來保存轉儲文件和壓縮文件(應該有db_size×2的空間)。

請確保您在新的伺服器上擁有足夠的空間來保存加密的和解密的轉儲文件、並能導入資料庫(應該有db_size×3的空間)。

如果您曾經考慮過只是將datadir從一個資料庫轉移到另一個的話,我建議您最好不要這樣做。否則,您會搞亂資料庫的內部結構,而且會給將來可能的問題埋下隱患。

在新的伺服器配置中,請不要忘了配置諸如innodb_log_file_size這樣的重要標志。因為如果忘記了根據新伺服器的規格而更新配置的話,很可能會導致嚴重的性能問題。

在許多情況下,一般升級到新的資料庫伺服器的初衷是為了提高查詢性能。而如果此類升級沒有達到預期的改善,那麼您就應該考慮去優化SQL查詢,而不僅僅是升級硬體那麼簡單了

❼ 如何實現兩個異地資料庫之間的數據傳輸

1. SQLSERVER伺服器上面安裝oracle客戶端,配置服務命名(假設為 test)
2. 在SQLSERVER伺服器上面建立鏈接伺服器,腳本如下

SQL code?
SQL code-- Adding linked server:

exec sp_addlinkedserver @server = 'test' ,
@srvproct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --資料庫用戶
@rmtpassword = 'password' --密碼
3. 建立一個作業,通過作業調度存儲過程,存儲過程使用類似的語句將oracle的數據插入到sqlserver表中

SQL code?
insert into sqlserver表 select * from test..oracle表名
4. 如果要球ORACLE數據是實時增加的,並且ORACLE記錄上有遞增的欄位,可以在SQLSERVER上面建立一個表記錄上次插入的id,然後下次可以從上次的ID+1開始繼續插入

SQL code?
insert into sqlserver表 select * from test..oracle表名 where id>@id
5. 防止sqlserver同步的時候oracle仍在不斷的插入,每次要取一個結束ID

SQL code?
select @endid=max(id) from test..oracle表名.