怎麼同步資料庫
1. 多資料庫之間同步數據怎麼做
如果是同一種資料庫的話,你同步的數據表結構是否相同,如果也相同的話,完全可以利用資料庫的同步復制機制來解決;(做主從) 如果表結構不相同的話,如果不在應用層處理的話,有兩種方式參考: 1,A推數據給B;A有數據的時候,實時或非實時(採用event或trigger)將數據推到B中,B再做處理; 2,B從A拉數據,用一個event(mysql中的job)定時從A中拉數據然後進行處理; 另外可以選擇在應用層來做,這個我就不多介紹了,根據業務邏輯coding就行了。 由於不清楚你的業務特點,所以無法進一步的幫你分析。
2. 怎麼在不同資料庫之間進行同步數據
怎麼在不同資料庫之間進行同步數據
資料庫A和資料庫B是建立在兩台獨立的資料庫伺服器上,回那麼采答用dblink方式是一種可行的方式,存在兩個數據同步過程:
一、資料庫A正常運行的時候需要將數據同步到備用庫即資料庫B;
二、資料庫A不正常的時候啟用資料庫B,在資料庫A恢復正常之前的數據更新都發生在資料庫B,那麼需要將資料庫B的數據同步給資料庫A。
第一種方式:前提是資料庫A和資料庫B本地網是24小時互通的同時對數據同步實時性有比較高的要求,那麼可以建立DBLINK,在兩個庫都建觸發器,不管當前在哪個庫發生數據更新的時候實時同步數據到目標資料庫;
3. 兩台資料庫伺服器 如何進行數據同步操作
這個要根據不同情況具體分析,有幾種方案參考:
資料庫A和資料庫B是建立在兩台獨立的資料庫伺服器上,那麼採用dblink方式是一種可行的方式,存在兩個數據同步過程:
一、資料庫A正常運行的時候需要將數據同步到備用庫即資料庫B;
二、資料庫A不正常的時候啟用資料庫B,在資料庫A恢復正常之前的數據更新都發生在資料庫B,那麼需要將資料庫B的數據同步給資料庫A。
第一種方式:前提是資料庫A和資料庫B本地網是24小時互通的同時對數據同步實時性有比較高的要求,那麼可以建立DBLINK,在兩個庫都建觸發器,不管當前在哪個庫發生數據更新的時候實時同步數據到目標資料庫;
第二種方式:如果數據同步的實時性要求不高,則可以通過定製存儲過程的方式(給兩個庫的數據表加時間戳或者更新標志,)定時同步數據;
第三種方式:通過給兩個資料庫的數據表加更新標志欄位,以第一種方式為主以滿足實時性的要求,以第二種方式為輔彌補可能存在的觸發器執行更新未成功的情況。
以上的方案都是從數據層面所做的處理,對於數據實時同步還是會存在一定的風險,那麼雙機熱備應該說是最好的選擇了。
4. 資料庫怎麼實現數據同步
不同伺服器資料庫之間的數據操作 --創建鏈接伺服器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '遠程伺服器名或ip地址 'exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用戶名 ', '密碼'--查詢示例 select*from ITSV.資料庫名.dbo.表名 --導入示例 select*into 表from ITSV.資料庫名.dbo.表名 --以後不再使用時刪除鏈接伺服器 exec sp_dropserver 'ITSV ', 'droplogins '--連接遠程/區域網數據(openrowset/openquery/opendatasource) --1、openrowset --查詢示例 select*fromopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名) --生成本地表 select*into 表fromopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名) --把本地表導入遠程表 insertopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名) select*from 本地表 --更新本地表 update b set b.列A=a.列A fromopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名)as a innerjoin 本地表 b on a.column1=b.column1 --openquery用法需要創建一個連接 --首先創建一個連接創建鏈接伺服器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '遠程伺服器名或ip地址 '--查詢select*FROMopenquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ') --把本地表導入遠程表 insertopenquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ') select*from 本地表 --更新本地表 update b set b.列B=a.列B FROMopenquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ') as a innerjoin 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT*FROMopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta --把本地表導入遠程表 insertopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').資料庫.dbo.表名 select*fromSQL code 用強制訂閱實現資料庫同步操作 大量和批量的數據可以用資料庫的同步機制處理: // 說明:為方便操作,所有操作均在發布伺服器(分發伺服器)上操作,並使用推模式在客戶機器使用強制訂閱方式。 有疑問聯系作者:[email protected] 測試通過 //--1:環境伺服器環境: 機器名稱: ZehuaDb 操作系統:Windows 2000 Server 資料庫版本:SQL 2000 Server 個人版 客戶端機器名稱:Zlp 操作系統:Windows 2000 Server 資料庫版本:SQL 2000 Server 個人版 --2:建用戶帳號在伺服器端建立域用戶帳號我的電腦管理->本地用戶和組->用戶->建立UserName:zlp UserPwd:zlp --3:重新啟動伺服器MSSQLServer我的電腦->控制面版->管理工具->服務->MSSQLServer 服務 (更改為:域用戶帳號,我們新建的zlp用戶 ./zlp,密碼:zlp) --4:安裝分發伺服器A:配置分發伺服器工具->復制->配置發布、訂閱伺服器和分發->下一步->下一步(所有的均採用默認配置) B:配置發布伺服器工具->復制->創建和管理發布->選擇要發布的資料庫(SZ)->下一步->快照發布->下一步-> 選擇要發布的內容->下一步->下一步->下一步->完成C:強制配置訂閱伺服器(推模式,拉模式與此雷同) 工具->復制->配置發布、訂閱伺服器和分發->訂閱伺服器->新建->SQL Server資料庫->輸入客戶端伺服器名稱(ZLP)->使用SQL Server 身份驗證(sa,空密碼)->確定->應用->確定D:初始化訂閱復制監視器->發布伺服器(ZEHUADB)->雙擊訂閱->強制新建->下一步->選擇啟用的訂閱伺服器->ZLP-> 下一步->下一步->下一步->下一步->完成--5:測試配置是否成功復制監視器->發布伺服器(ZEHUADB)->雙擊SZ:SZ->點狀態->點立即運行代理程序查看:復制監視器->發布伺服器(ZEHUADB)->SZ:SZ->選擇ZLP:SZ(類型強制)->滑鼠右鍵->啟動同步處理如果沒有錯誤標志(紅色叉),恭喜您配置成功 --6:測試數據 --在伺服器執行:選擇一個表,執行如下SQL insertinto WQ_NEWSGROUP_S select'測試成功',5 復制監視器->發布伺服器(ZEHUADB)->SZ:SZ->快照->啟動代理程序 ->ZLP:SZ(強制)->啟動同步處理 去查看同步的 WQ_NEWSGROUP_S 是否插入了一條新的記錄 測試完畢,通過。
5. 如何將 一個資料庫同步到另一個資料庫
:
資料庫實際就是很多表的集合
所以復制庫就是復製表
將表導出到
sql
文件
然後再導入
6. 如何實現兩個SQL資料庫的同步操作
sql同步使用dblink同步數據。
具體參考實例:
1、在win下創建linux的DBLINK
a.查看linux下的tnsnames.ora文件
[oracle@myrac1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /s01/app/oracle/proct/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
HJJ =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myrac1.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hjj)
)
)
b.創建dblink
SQL> create database link win_lin_link connect to hjj identified by xxxx
2 using '(DESCRIPTION =
3 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.171)(PORT = 1521))
4 (CONNECT_DATA =
5 (SERVER = DEDICATED)
6 (SERVICE_NAME = hjj)
7 )
8 )'
9 /
Database link created.
2.在win下創建trigger
SQL> create or replace trigger trig_win_emp
2 after insert on emp
3 for each row
4 begin
5 insert into emp@win_lin_link values(:new.empno,:new.empname,:new.empsalary);
6 end;
7 /
Trigger created.
3.測試
4.結果
win下插入數據
SQL> insert into emp values('E001','LYN',2300);
1 row created.
SQL>COMMIT;
Commit complete.
SQL> select *from emp;
EMPNO EMPNAME EMPSALARY
---------------------------------------- ---------------------------------------- ----------
E001 LYN 2300
SQL> select * from emp@win_lin_link;
EMPNO EMPNAME EMPSALARY
---------------------------------------- ---------------------------------------- ----------
E001 LYN 2300
linux下查看數據
SQL> select * from emp;
EMPNO EMPNAME EMPSALARY
-------------------- -------------------- ----------
E001 LYN 2300
7. 如何實現兩個資料庫的同步
不同伺服器資料庫之間的數據操作 --創建鏈接伺服器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '遠程伺服器名或ip地址 'exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用戶名 ', '密碼'--查詢示例 select*from ITSV.資料庫名.dbo.表名 --導入示例 select*into 表from ITSV.資料庫名.dbo.表名 --以後不再使用時刪除鏈接伺服器 exec sp_dropserver 'ITSV ', 'droplogins '--連接遠程/區域網數據(openrowset/openquery/opendatasource) --1、openrowset --查詢示例 select*fromopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名) --生成本地表 select*into 表fromopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名) --把本地表導入遠程表 insertopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名) select*from 本地表 --更新本地表 update b set b.列A=a.列A fromopenrowset( 'SQLOLEDB ', 'sql伺服器名 '; '用戶名 '; '密碼',資料庫名.dbo.表名)as a innerjoin 本地表 b on a.column1=b.column1 --openquery用法需要創建一個連接 --首先創建一個連接創建鏈接伺服器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '遠程伺服器名或ip地址 '--查詢select*FROMopenquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ') --把本地表導入遠程表 insertopenquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ') select*from 本地表 --更新本地表 update b set b.列B=a.列B FROMopenquery(ITSV, 'SELECT * FROM 資料庫.dbo.表名 ') as a innerjoin 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT*FROMopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta --把本地表導入遠程表 insertopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').資料庫.dbo.表名 select*fromSQL code 用強制訂閱實現資料庫同步操作 大量和批量的數據可以用資料庫的同步機制處理: // 說明:為方便操作,所有操作均在發布伺服器(分發伺服器)上操作,並使用推模式在客戶機器使用強制訂閱方式。 有疑問聯系作者:[email protected] 測試通過 //--1:環境伺服器環境: 機器名稱: ZehuaDb 操作系統:Windows 2000 Server 資料庫版本:SQL 2000 Server 個人版 客戶端機器名稱:Zlp 操作系統:Windows 2000 Server 資料庫版本:SQL 2000 Server 個人版 --2:建用戶帳號在伺服器端建立域用戶帳號我的電腦管理->本地用戶和組->用戶->建立UserName:zlp UserPwd:zlp --3:重新啟動伺服器MSSQLServer我的電腦->控制面版->管理工具->服務->MSSQLServer 服務 (更改為:域用戶帳號,我們新建的zlp用戶 ./zlp,密碼:zlp) --4:安裝分發伺服器A:配置分發伺服器工具->復制->配置發布、訂閱伺服器和分發->下一步->下一步(所有的均採用默認配置) B:配置發布伺服器工具->復制->創建和管理發布->選擇要發布的資料庫(SZ)->下一步->快照發布->下一步-> 選擇要發布的內容->下一步->下一步->下一步->完成C:強制配置訂閱伺服器(推模式,拉模式與此雷同) 工具->復制->配置發布、訂閱伺服器和分發->訂閱伺服器->新建->SQL Server資料庫->輸入客戶端伺服器名稱(ZLP)->使用SQL Server 身份驗證(sa,空密碼)->確定->應用->確定D:初始化訂閱復制監視器->發布伺服器(ZEHUADB)->雙擊訂閱->強制新建->下一步->選擇啟用的訂閱伺服器->ZLP-> 下一步->下一步->下一步->下一步->完成--5:測試配置是否成功復制監視器->發布伺服器(ZEHUADB)->雙擊SZ:SZ->點狀態->點立即運行代理程序查看:復制監視器->發布伺服器(ZEHUADB)->SZ:SZ->選擇ZLP:SZ(類型強制)->滑鼠右鍵->啟動同步處理如果沒有錯誤標志(紅色叉),恭喜您配置成功 --6:測試數據 --在伺服器執行:選擇一個表,執行如下SQL insertinto WQ_NEWSGROUP_S select'測試成功',5 復制監視器->發布伺服器(ZEHUADB)->SZ:SZ->快照->啟動代理程序 ->ZLP:SZ(強制)->啟動同步處理 去查看同步的 WQ_NEWSGROUP_S 是否插入了一條新的記錄 測試完畢,通過。
8. Sql資料庫同步怎麼做
哪個資料庫?Mysql還是Mssql? MSSQL數據同步利用資料庫復制技術實現數據同步更新(來自網路,也是非常完美的教程) 復制的概念 復制是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發布到多個存儲站點上的有效方式。使用復制技術,用戶可以將一份數據發布到多台伺服器上,從而使不同的伺服器用戶都可以在許可權的許可的范圍內共享這份數據。復制技術可以確保分布在不同地點的數據自動同步更新,從而保證數據的一致性。 SQL復制的基本元素包括 出版伺服器、訂閱伺服器、分發伺服器、出版物、文章 SQL復制的工作原理 SQLSERVER主要採用出版物、訂閱的方式來處理復制。源數據所在的伺服器是出版伺服器,負責發表數據。出版伺服器把要發表的數據的所有改變情況的拷貝復制到分發伺服器,分發伺服器包含有一個分發資料庫,可接收數據的所有改變,並保存這些改變,再把這些改變分發給訂閱伺服器 SQLSERVER復制技術類型 SQLSERVER提供了三種復制技術,分別是: 1、快照復制(呆會我們就使用這個) 2、事務復制 3、合並復制 只要把上面這些概念弄清楚了那麼對復制也就有了一定的理解。接下來我們就一步一步來實現復制的步驟。 第一先來配置出版伺服器 (1)選中指定[伺服器]節點 (2)從[工具]下拉菜單的[復制]子菜單中選擇[發布、訂閱伺服器和分發]命令 (3)系統彈出一個對話框點[下一步]然後看著提示一直操作到完成。 (4)當完成了出版伺服器的設置以後系統會為該伺服器的樹形結構中添加一個復制監視器。同時也生成一個分發資料庫(distribution) 第二創建出版物 (1)選中指定的伺服器 (2)從[工具]菜單的[復制]子菜單中選擇[創建和管理發布]命令。此時系統會彈出一個對話框 (3)選擇要創建出版物的資料庫,然後單擊[創建發布] (4)在[創建發布向導]的提示對話框中單擊[下一步]系統就會彈出一個對話框。對話框上的內容是復制的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個大家可以去看看幫助) (5)單擊[下一步]系統要求指定可以訂閱該發布的資料庫伺服器類型,SQLSERVER允許在不同的資料庫如ORACLE或ACCESS之間進行數據復制。但是在這里我們選擇運行"SQLSERVER2000"的資料庫伺服器 (6)單擊[下一步]系統就彈出一個定義文章的對話框也就是選擇要出版的表 (7)然後[下一步]直到操作完成。當完成出版物的創建後創建出版物的資料庫也就變成了一個共享資料庫。 第三設計訂閱 (1)選中指定的訂閱伺服器 (2)從[工具]下拉菜單中選擇[復制]子菜單的[請求訂閱] (3)按照單擊[下一步]操作直到系統會提示檢查SQLSERVER代理服務的運行狀態,執行復制操作的前提條件是SQLSERVER代理服務必須已經啟動。 (4)單擊[完成]。完成訂閱操作。 完成上面的步驟其實復制也就是成功了。但是如何來知道復制是否成功了呢?這里可以通過這種方法來快速看是否成功。展開出版伺服器下面的復制——發布內容——右鍵發布內容——屬性——擊活——狀態然後點立即運行代理程序接著點代理程序屬性擊活調度把調度設置為每一天發生,每一分鍾,在0:00:00和23:59:59之間。接下來就是判斷復制是否成功了打開
採納哦
9. 如何同步兩地的SQL資料庫
如果內部的資料庫有公網地址(即外網資料庫所在伺服器可以訪問到內部資料庫),那就好辦了,可以傳送事務日誌實現同步 其實關於同步,sql server 2005的鏡像功能不錯,可惜只能單向同步,所以你也用不上了,事務日誌我也只做過單向同步的,不知道能不能雙向,你可以試試 還有一種辦法,那就是用程序實現,不過難度有些高了: 1、讓操作這兩個資料庫的程序在操作時分別對兩個庫進行操作,問題在於外網程序依然要能夠訪問內部資料庫,而且程序修改量估計大到讓人崩潰 2、單獨寫個程序監視兩個庫,一有更改,馬上修改另一個,問題在於程序要放到內部(如果放到外網還是要求能夠訪問內部資料庫),而且對資料庫的監視和同步更新,都是非常消耗資源的我感覺沒啥好辦法了,期待樓下能有好主意,也學習一下……