哪個資料庫?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之間。接下來就是判斷復制是否成功了打開
採納哦
B. 資料庫和程序內存中的數據同步如何同步
用戶登錄一般是要到資料庫直接查詢的,這樣才能保證登錄安全
如果為了比較快想從內存讀取的話,沒修改資料庫之後都要重新載入到內存中
C. 怎樣實現資料庫實時同步這種思路是否可行
建立遠程資料庫鏈接,然後在你需要同步的表上建觸發器:每當表有修改時,自動修改遠程資料庫的相應表。
----------------------------------
抱歉,你的題目我沒理解正確,其實你使用雙機熱備就行了,在網上找到一個教程,是這個網址:
http://blog.csdn.net/isoftk/archive/2007/12/03/1914175.aspx
你看一下吧。
----------------------------------
不是,我先前的理解不正確,後來的理解才正確,現在是你開始走彎路了,你就按照我給的網址學習雙機熱備吧,肯定能達到你的目的。
另:送你關於遠程資料庫映射的東西:
SqlServer資料庫:
--這句是映射一個遠程資料庫
EXEC sp_addlinkedserver '遠程資料庫的IP或主機名',N'SQL Server'
--這句是登錄遠程資料庫
EXEC sp_addlinkedsrvlogin '遠程資料庫的IP或主機名', 'false', NULL, '登錄名', '密碼'
--登錄後,可以用以下格式操作遠程資料庫中的對象
select * from [遠程資料庫的IP或主機名].[資料庫名].[dbo].[表名]
我仔細考慮了一下,用這種方式無法滿足你的要求,所以請你用雙機熱備完成。
-------------------------------
原來是要在互聯網環境下啊,你一直沒有提,汗。。。
我水平有限,這個沒什麼好的思路,幫不上你,抱歉了。
我所能想到的,只有兩種不成熟的思路:
1、用VPN架出局網環境,這個你可能條件所限,不能實現。
2、第二種思路是以我淺薄的知識想像出來的笨方法,拐彎抹角的而且不安全,大體思路就是,在B伺服器上架構一個WEB伺服器,用ASP或JSP什麼的做一個頁面,可以接收字串參數並作為sql語句執行(當然你要做好驗證工作),然後修改A伺服器的程序,使其每當對資料庫有修改操作時,就同時向B機的WEB主頁發送一個頁面申請(比如 http://111.222.333.444/runsql.asp?sql=update AA set BB='cc'),這樣B主機的WEB服務就會同步執行這個SQL語句了。(注意這種方法需要你的B機是以固定IP模式連網的,這需要向電信局申請)
說實話這第二種方法連我自己都覺得可笑,但水平實在有限,所以在這兒只是大膽說出我的想法,還請樓主或是其它高手看了不要見笑。
D. 怎麼在不同資料庫之間進行同步數據
怎麼在不同資料庫之間進行同步數據
資料庫A和資料庫B是建立在兩台獨立的資料庫伺服器上,那麼採用dblink方式是一種可行的方式,存在兩個數據同步過程:
一、資料庫A正常運行的時候需要將數據同步到備用庫即資料庫B;
二、資料庫A不正常的時候啟用資料庫B,在資料庫A恢復正常之前的數據更新都發生在資料庫B,那麼需要將資料庫B的數據同步給資料庫A。
第一種方式:前提是資料庫A和資料庫B本地網是24小時互通的同時對數據同步實時性有比較高的要求,那麼可以建立DBLINK,在兩個庫都建觸發器,不管當前在哪個庫發生數據更新的時候實時同步數據到目標資料庫;
E. 如何實現兩個資料庫之間的表數據同步
首先你要說明一下這2個資料庫是什麼關系
資料庫集群,那麼 AB 兩庫是 鏡像 還是 互備,當然,根據資料庫 品牌不同,同步的方式也不一樣,不過都可以通過安裝過程和建立 資料庫實例中的配置 來實現
資料庫之間通過其他可控程序連接,那麼,該情況下,需要數據可能出現延遲等,不推薦
資料庫之間沒有連接,但是都由同一個節點進行數據下發,那麼就在這個節點上實現一個跨庫事物控制就行了
F. 如何對MySQL資料庫中的數據進行實時同步
前提條件
您需要在您RDS for MySQL所在的雲賬號下開通阿里雲數據傳輸服務。並 點擊此處
下載dts-ads-writer插件到您的一台伺服器上並解壓(需要該伺服器可以訪問互聯網,建議使用阿里雲ECS以最大限度保障可用性)。伺服器上需要有Java
6或以上的運行環境(JRE/JDK)。
操作步驟
1. 在分析型資料庫上創建目標表,數據更新類型為實時寫入,欄位名稱和MySQL中的建議均相同;
2. 在阿里雲數據傳輸的控制台上創建數據訂閱通道,並記錄這個通道的ID;
(見: https://help.aliyun.com/document_detail/dts/Getting-Started/data-subscription.html),
3. 配置dts-ads-writer/app.conf文件,配置方式如下:
所有配置均保存在app.conf中,運行前請保證配置正確;修改配置後,請重啟writer
基本配置:
{
"dtsAccessId": "", // 擁有數據訂閱通道的雲賬號的accessId, 必須配置
"dtsAccessKey": "", // 擁有數據訂閱通道的雲賬號的accessKey, 必須配置
"dtsTunnelId": "", // 數據訂閱通道的id, 必須配置; 注意是id,不是通道名稱
"adsUserName": "", // 訪問您的分析型資料庫的用戶名(accessId), 必須配置
"adsPassword": "", // 訪問您的分析型資料庫的密碼(accessKey), 必須配置
"adsJdbcUrl": "", // 訪問分析型資料庫的jdbc連接串, 必須配置(格式jdbc:mysql://ip:port/dbname)
"tables": [
{
"source": {
"primaryKeys": [""] // 主鍵定義, 必須配置; 注意RDS和分析型資料庫中的主鍵定義必須一致
"db": "", // 源頭RDS的db名稱, 必須配置
"table": "", // 源頭RDS的table名稱, 必須配置
"skipColumns": ["col1"] // 可選,若在此配置了RDS表某列名,則該列不會同步
},
"target": {
"table": "" // 分析型資料庫表的table名稱, 必須配置
},
"columnMapping": {
"": "" // rds表和ads表的列對應關系:key為rds的列名, value為分析型資料庫的列名,選填,不填則按照列名一一對應
}
}
]
}
tables節點的配置示例,
表示rds_db庫下的rds_table表對應ads_table表,並且rds_table表的col1列對應ads_table表的col1_ads列,
rds_table表的col2列對應ads_table表的col2_ads列
"tables": [
{
"source": {
"primaryKeys": [
"col1",
"col2"
],
"db": "rds_db",
"table": "rds_table"
},
"target": {
"table": "ads_table"
},
"columnMapping": {
"col1": "col1_ads",
"col2": "col2_ads"
}
}
]
注意事項:
1)RDS for MySQL表和分析型資料庫中表的主鍵定義必須完全一致;如果不一致會出現數據不一致問題。如果需要調整RDS/分析型資料庫表的主鍵,建議先停止writer進程;
2)一個插件進程中分析型資料庫db只能是一個,由adsJdbcUrl指定;
3)一個插件進程只能對應一個數據訂閱通道;如果更新通道中的訂閱對象時,需要重啟進程
4)RDS for MySQL中DDL操作不做同步處理;
5)更新app.conf需要重啟插件進程才能生效;
6)如果工具出現bug或某種其它原因需要重新同步歷史數據,只能回溯最近24小時的數據(在阿里雲數據傳輸的控制台中修改消費位點);
7)插件的最大同步性能與運行插件的伺服器的互聯網帶寬和磁碟IOPS成正比。
4. 運行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);
5. 配置監控程序監控進程存活和日誌中的常見錯誤碼。
logs目錄下的日誌中的異常信息均以ErrorCode=XXXX ErrorMessage=XXXX形式給出,可以進行監控
G. mysql資料庫表數據同步有幾種方法
這一需求在不同機器上的,
1,通過replication
(master-slaves)實現了這兩張表的復制功能,
2,mysql的版本是5.1.54,基於記錄的復制(Row-Based
Replication)。
3,但是在備庫調用存儲過程時出了問題,這個存儲過程中使用了UUID_short()函數,在存儲過程這個函數不能產生新值。
H. 如何將 一個資料庫同步到另一個資料庫
1.直接方法,將需要的查詢的數據賦值到excel中。相應調整,然後再賦值到目標表中(對於數據量不大的情況下較快)
2.最好兩資料庫擁有相同的登錄名和密碼不然比較麻煩
insert into 目標資料庫.dbo.目標表名(欄位1...欄位n)
select 段1...欄位n from 源資料庫.dbo.源表名 或 select 段1...欄位n into 目標資料庫.dbo.目標表名 from 源資料庫.dbo.源表名
3.這樣的插入注意表欄位的長度和約束條件,若原表中欄位長,就得將目標表中的欄位相應加長
I. 如何把資料庫的數據同步到另一個資料庫
你可以先創建一個臨時表,把查村到的數據保存到臨時表中,然後將臨時表總的數據自動生成的sql語句,(需要小小的修改,保留insert插入語句),在另一個資料庫中執行插入,不就行啦?select 列名insert into 臨時表名 from 原始表名
J. 資料庫怎麼實現數據同步
不同伺服器資料庫之間的數據操作 --創建鏈接伺服器 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 是否插入了一條新的記錄 測試完畢,通過。