新聞中心
在今天的數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,數(shù)據(jù)的管理和處理變得越來(lái)越重要,因?yàn)閿?shù)據(jù)是現(xiàn)代企業(yè)成功的關(guān)鍵。因此,越來(lái)越多的企業(yè)傾向于使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和管理其業(yè)務(wù)數(shù)據(jù)。然而,隨著業(yè)務(wù)的發(fā)展,這些數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)數(shù)量也變得越來(lái)越龐大,以至于傳統(tǒng)的數(shù)據(jù)庫(kù)管理方法已經(jīng)無(wú)法滿(mǎn)足大規(guī)模數(shù)據(jù)的存儲(chǔ)和管理需求。這時(shí),NoSQL數(shù)據(jù)庫(kù)的出現(xiàn)成為了一個(gè)非常有效的解決方案。MongoDB是一種流行的NoSQL數(shù)據(jù)庫(kù),其具有高可擴(kuò)展性、高性能和良好的數(shù)據(jù)處理能力。因此,我們可以考慮將企業(yè)中的傳統(tǒng)數(shù)據(jù)庫(kù)同步到MongoDB,以減輕傳統(tǒng)數(shù)據(jù)庫(kù)的壓力,并更好地管理業(yè)務(wù)數(shù)據(jù)。

創(chuàng)新互聯(lián)公司成立十多年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶(hù)資源,形成了良好的口碑。為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名申請(qǐng)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀(guān)、功能強(qiáng)大、用戶(hù)體驗(yàn)好、性?xún)r(jià)比高、打開(kāi)快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,創(chuàng)新互聯(lián)公司通過(guò)對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶(hù)提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶(hù),共同發(fā)展進(jìn)步。
本文將介紹如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步到MongoDB。人們可以使用不同的技術(shù)和工具來(lái)實(shí)現(xiàn)這個(gè)過(guò)程,本文將著重介紹其中更流行的技術(shù)和工具,包括MongoDB的兩種驅(qū)動(dòng)程序、Kafka、Flume和Logstash等。
一、使用MongoDB驅(qū)動(dòng)程序
一個(gè)直接的方法是使用MongoDB的驅(qū)動(dòng)程序去從傳統(tǒng)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并將其同步到MongoDB中。MongoDB支持多種語(yǔ)言,包括Java、C++、Python等,因此我們可以使用適合自己編程的語(yǔ)言去實(shí)現(xiàn)驅(qū)動(dòng)程序。
1. Java 驅(qū)動(dòng)程序
如果您在使用Java編程語(yǔ)言,則您可以使用Java驅(qū)動(dòng)程序。需要下載MongoDB驅(qū)動(dòng)程序,并將其配置到Java類(lèi)路徑中。一旦配置完成,就可以使用以下代碼從傳統(tǒng)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并將其同步到MongoDB中:
“`
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.bson.Document;
public class SyncData {
public static void mn( String args[] ) {
//Connect MongoDB
MongoClient mongoClient = new MongoClient( “l(fā)ocalhost” , 27017 );
//Connect traditional database
Connection connection = DriverManager.getConnection(“url”, “username”, “password”);
//Query data from traditional database
Statement stmt = connection.createStatement();
String sql = “SELECT * FROM table_name”;
ResultSet rs = stmt.executeQuery(sql);
//Insert the queried data to MongoDB
MongoDatabase db = mongoClient.getDatabase(“database_name”);
while (rs.next()) {
Document document = new Document();
document.put(“column_1”, rs.getString(“column_1”));
document.put(“column_2”, rs.getString(“column_2”));
db.getCollection(“collection_name”).insertOne(document);
}
//Close resources
rs.close();
stmt.close();
connection.close();
}
}
“`
2. Python 驅(qū)動(dòng)程序
如果您在使用Python編程語(yǔ)言,則您可以使用Python驅(qū)動(dòng)程序。需要下載Python驅(qū)動(dòng)程序,并將其安裝到Python環(huán)境中。一旦安裝完成,就可以使用以下代碼從傳統(tǒng)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并將其同步到MongoDB中:
“`
from pymongo import MongoClient
import pymysql
import pymongo
# Connect MongoDB
client = MongoClient(‘localhost’, 27017)
# Connect traditional database
conn = pymysql.connect(host=’hostname’, user=’username’, password=’password’, db=’database_name’)
cursor = conn.cursor()
# Query data from traditional database
cursor.execute(‘SELECT * FROM table_name’)
results = cursor.fetchall()
# Insert the queried data to MongoDB
db = client[‘database_name’]
collection = db[‘collection_name’]
for row in results:
data_dict = {}
data_dict[‘column_1’] = row[0]
data_dict[‘column_2’] = row[1]
collection.insert_one(data_dict)
# Close resources
cursor.close()
conn.close()
“`
二、使用數(shù)據(jù)管道
使用驅(qū)動(dòng)程序是一種直接的方式,但對(duì)于大規(guī)模數(shù)據(jù)同步和處理,常常需要使用數(shù)據(jù)管道。數(shù)據(jù)管道可以將源數(shù)據(jù)流水上傳輸?shù)侥繕?biāo)數(shù)據(jù)中。本文將介紹幾個(gè)常見(jiàn)的數(shù)據(jù)管道,以幫助讀者了解如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步到MongoDB。
1. 使用Kafka
Kafka是一個(gè)分布式的流數(shù)據(jù)平臺(tái),最初由LinkedIn開(kāi)發(fā)。它支持?jǐn)?shù)據(jù)管道,可以將大規(guī)模的數(shù)據(jù)從源系統(tǒng)發(fā)送到目標(biāo)系統(tǒng)。Kafka采用發(fā)布-訂閱模式,可以緩解數(shù)據(jù)流的壓力并提高數(shù)據(jù)處理的吞吐量。
為了將數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫(kù)同步到MongoDB中,我們需要以下步驟:
– 從傳統(tǒng)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)流。
– 將數(shù)據(jù)寫(xiě)入Kafka topic中。
– 使用Kafka Connect將數(shù)據(jù)流中的數(shù)據(jù)傳輸?shù)組ongoDB中。
2. 使用Flume
Flume是Apache的一個(gè)分布式、可靠的、可用于處理海量數(shù)據(jù)的數(shù)據(jù)管理系統(tǒng)。它可以處理、聚合和傳輸大量數(shù)據(jù)。使用Flume將數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫(kù)同步到MongoDB中,我們需要以下步驟:
– 從傳統(tǒng)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)流。
– 將數(shù)據(jù)寫(xiě)入Flume channel中。
– 將Flume channel中的數(shù)據(jù)傳輸?shù)組ongoDB中。
3. 使用Logstash
Logstash是一個(gè)開(kāi)源工具,用于收集、聚合和傳輸數(shù)據(jù)從各種位置。它可以從傳統(tǒng)數(shù)據(jù)庫(kù)中收集數(shù)據(jù)并將其傳輸?shù)組ongoDB中。使用Logstash將數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫(kù)同步到MongoDB中,我們需要以下步驟:
– 使用JDBC插件連接傳統(tǒng)數(shù)據(jù)庫(kù)。
– 配置Elasticsearch輸出插件以將數(shù)據(jù)傳輸?shù)組ongoDB中。
本文介紹了如何將傳統(tǒng)數(shù)據(jù)庫(kù)同步到MongoDB中。我們可以使用MongoDB的驅(qū)動(dòng)程序或者數(shù)據(jù)管道,包括Kafka,F(xiàn)lume和Logstash等,來(lái)實(shí)現(xiàn)這個(gè)過(guò)程。對(duì)于大規(guī)模數(shù)據(jù)同步和處理,常常需要使用數(shù)據(jù)管道。它們可以將源數(shù)據(jù)流水上傳輸?shù)侥繕?biāo)數(shù)據(jù)中,緩解數(shù)據(jù)流的壓力并提高數(shù)據(jù)處理的吞吐量。本文將幫助讀者更好地理解如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步到MongoDB,并為互聯(lián)網(wǎng)+、大數(shù)據(jù)等領(lǐng)域的開(kāi)發(fā)者提供有益的參考。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220怎么實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)的同步
問(wèn)題一定要描述具體一些,數(shù)據(jù)庫(kù)種類(lèi)那么多,數(shù)據(jù)同步,隨便一列都一堆:
1、MySQL同步數(shù)據(jù)到Oracle
2、MySQL同步數(shù)據(jù)到PostgreSQL
3、MySQL同步數(shù)據(jù)到SQL Server
4、MySQL同步數(shù)據(jù)到MongoDB
5、MySQL同步數(shù)據(jù)到DB2
6、Oracle同步數(shù)據(jù)到MySQL
7、Oracle同步數(shù)據(jù)到PostgreSQL
8、Oracle同步數(shù)據(jù)到SQL Server
9、Oracle同步數(shù)據(jù)到MongoDB
10、Oracle同步數(shù)據(jù)到孝掘DB2
11、SQL Server同步數(shù)據(jù)巧昌核到MySQL
12、SQL Server同步數(shù)據(jù)到Oracle
13、SQL Server同步數(shù)據(jù)到PostgreSQL
14、SQL Server同步數(shù)據(jù)到DB2
15、……
如果僅僅是數(shù)據(jù)匯聚方迅稿面的數(shù)據(jù)同步,可以用TreeSoft ,其他還有阿里的DataX等。
同步兩個(gè)SQLServer數(shù)據(jù)庫(kù)
如何同步兩個(gè)sqlserver數(shù)據(jù)庫(kù)的內(nèi)容?程序代碼可以有版本管理cvs進(jìn)行同步管理,可是數(shù)據(jù)庫(kù)同步就非常麻煩,只能自己改了一個(gè)后再去改另一個(gè),如果忘記了更改另一個(gè)經(jīng)常造成兩個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu)或內(nèi)容上不一致.各位有什么好的方法嗎?
一、分發(fā)與復(fù)制
用強(qiáng)制訂閱實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步操作. 大量和批量的數(shù)據(jù)可以用數(shù)據(jù)庫(kù)的同步機(jī)制處理:
//
說(shuō)明:
為方便操作,所有操作均在發(fā)布服務(wù)器(分發(fā)服務(wù)器)上操作,并使用推模式
在客戶(hù)機(jī)器使用強(qiáng)制訂閱方式。
二、測(cè)試通過(guò)
1:環(huán)境
服務(wù)器環(huán)境:
機(jī)器名稱(chēng): zehuadb
操作系統(tǒng):windows 2023 server
數(shù)據(jù)庫(kù)版本:sql 2023 server 個(gè)人版
客戶(hù)端
機(jī)器名稱(chēng):zlp
操作系統(tǒng):windows 2023 server
數(shù)據(jù)庫(kù)版本:sql 2023 server 個(gè)人版
2:建用戶(hù)帳號(hào)
在服務(wù)器端建立域用戶(hù)帳號(hào)
我的電腦管理->本地用戶(hù)和組->用戶(hù)->建立
username:zlp
userpwd:zlp
3:重新啟動(dòng)服務(wù)器mssqlserver
我的電腦->控制面版->管理工具->服務(wù)->mssqlserver 服務(wù)
(更改為:域用戶(hù)帳號(hào),我們新建的zlp用戶(hù) .\zlp,密碼:zlp)
4:安裝分發(fā)服務(wù)器
a:配置分發(fā)服務(wù)器
工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->下一步->下一步(所有的均采用默認(rèn)配置)
b:配置發(fā)布服務(wù)器
工具->復(fù)制->創(chuàng)建和管理發(fā)布->選擇要發(fā)布的數(shù)據(jù)庫(kù)(sz)->下一步->
快照
發(fā)布->下一步->選擇要發(fā)布的內(nèi)容->下一步->下一步->下一步->完成
c:強(qiáng)制配置訂閱服務(wù)器(推模式,拉模式與此雷同)
工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->訂閱服務(wù)器->新建->
sql server
數(shù)據(jù)庫(kù)->輸入客戶(hù)端服務(wù)器名稱(chēng)(zlp)->使用sql server 身份驗(yàn)證(sa,空密碼)->確定->應(yīng)用->確定
d:初始化訂閱
復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->雙擊訂閱->強(qiáng)制新建->下一步->選擇啟用的訂閱服務(wù)器->zlp->下一步->下一步->下一步->下一步->完成
5:測(cè)試配置是否成功
復(fù)制監(jiān)視器->發(fā)布衿?zehuadb)->雙擊sz:sz->點(diǎn)狀態(tài)->點(diǎn)立即運(yùn)行代理程序
查看:
復(fù)制監(jiān)視器->發(fā)布服務(wù)器(zehuadb)->sz:sz->選擇zlp:sz(類(lèi)型強(qiáng)制)->鼠標(biāo)右鍵->啟動(dòng)同步處理
如果沒(méi)有錯(cuò)誤歲毀數(shù)標(biāo)志(紅色叉),恭喜您配置成功
6:測(cè)試數(shù)據(jù)
在服務(wù)器執(zhí)行:
選擇一個(gè)表,執(zhí)行如下sql:insert into wq_newsgroup_s select ‘測(cè)試成功’乎首,5
復(fù)制監(jiān)視器->發(fā)布服務(wù)余斗器(zehuadb)->sz:sz->快照->啟動(dòng)代理程序 ->zlp:sz(強(qiáng)制)->啟動(dòng)同步處理
去查看同步的 wq_newsgroup_s 是否插入了一條新的記錄
測(cè)試完畢,通過(guò)。
7:修改數(shù)據(jù)庫(kù)的同步時(shí)間,一般選擇夜晚執(zhí)行數(shù)據(jù)庫(kù)同步處理
(具體操作略) :d
/*
注意說(shuō)明:
服務(wù)器一端不能以(local)進(jìn)行數(shù)據(jù)的發(fā)布與分發(fā),需要先刪除注冊(cè),然后新建注冊(cè)本地計(jì)算機(jī)名稱(chēng)
卸載方式:工具->復(fù)制->禁止發(fā)布->是在”zehuadb”上靜止發(fā)布,卸載所有的數(shù)據(jù)庫(kù)同步配置服務(wù)器
注意:發(fā)布服務(wù)器、分發(fā)服務(wù)器中的sqlserveragent服務(wù)必須啟動(dòng)
采用推模式: “d:\microsoft sql server\mssql\repldata\unc” 目錄文件可以不設(shè)置共享
拉模式:則需要共享~!
*/
少量數(shù)據(jù)庫(kù)同步可以采用
觸發(fā)器
實(shí)現(xiàn),同步單表即可。
三、配置過(guò)程中可能出現(xiàn)的問(wèn)題
在sql server 2023里設(shè)置和使用數(shù)據(jù)庫(kù)復(fù)制之前,應(yīng)先檢查相關(guān)的幾臺(tái)sql server服務(wù)器下面幾點(diǎn)是否滿(mǎn)足:
1、mssqlserver和sqlserveragent服務(wù)是否是以域用戶(hù)身份啟動(dòng)并運(yùn)行的(.\administrator用戶(hù)也是可以的)
如果登錄用的是本地系統(tǒng)帳戶(hù)local,將不具備網(wǎng)絡(luò)功能,會(huì)產(chǎn)生以下錯(cuò)誤:
進(jìn)程未能連接到distributor ‘@server name’
(如果您的服務(wù)器已經(jīng)用了sql server全文檢索服務(wù), 請(qǐng)不要修改mssqlserver和sqlserveragent服務(wù)的local啟動(dòng)。
會(huì)照成全文檢索服務(wù)不能用。請(qǐng)換另外一臺(tái)機(jī)器來(lái)做sql server 2023里復(fù)制中的分發(fā)服務(wù)器。)
修改服務(wù)啟動(dòng)的登錄用戶(hù),需要重新啟動(dòng)mssqlserver和sqlserveragent服務(wù)才能生效。
2、檢查相關(guān)的幾臺(tái)sql server服務(wù)器是否改過(guò)名稱(chēng)(需要srvid=0的本地機(jī)器上srvname和datasource一樣)
在查詢(xún)分析器里執(zhí)行:
use master
select srvid,srvname,datasource from sysservers
如果沒(méi)有srvid=0或者srvid=0(也就是本機(jī)器)但srvname和datasource不一樣, 需要按如下方法修改:
use master
go
— 設(shè)置兩個(gè)變量
declare @serverproperty_servername varchar(100),
@servername varchar(100)
— 取得windows nt 服務(wù)器和與指定的 sql server 實(shí)例關(guān)聯(lián)的實(shí)例信息
select @serverproperty_servername = convert(varchar(100), serverproperty(‘servername’))
— 返回運(yùn)行 microsoft sql server 的本地服務(wù)器名稱(chēng)
select @servername = convert(varchar(100), @@servername)
— 顯示獲取的這兩個(gè)參數(shù)
select @serverproperty_servername,@servername
–如果@serverproperty_servername和@servername不同(因?yàn)槟愀倪^(guò)計(jì)算機(jī)名字),再運(yùn)行下面的
–刪除錯(cuò)誤的服務(wù)器名
exec sp_dropserver @server=@servername
–添加正確的服務(wù)器名
exec sp_addserver @server=@serverproperty_servername, @local=’local’
修改這項(xiàng)參數(shù),需要重新啟動(dòng)mssqlserver和sqlserveragent服務(wù)才能生效。
這樣一來(lái)就不會(huì)在創(chuàng)建復(fù)制的過(guò)程中出現(xiàn)18482、18483錯(cuò)誤了。
3、檢查sql server企業(yè)管理器里面相關(guān)的幾臺(tái)sql server注冊(cè)名是否和上面第二點(diǎn)里介紹的srvname一樣
不能用ip地址的注冊(cè)名。
(我們可以刪掉ip地址的注冊(cè),新建以sql server管理員級(jí)別的用戶(hù)注冊(cè)的服務(wù)器名)
這樣一來(lái)就不會(huì)在創(chuàng)建復(fù)制的過(guò)程中出現(xiàn)14010、20234、18456、18482、18483錯(cuò)誤了。
4、檢查相關(guān)的幾臺(tái)sql server服務(wù)器網(wǎng)絡(luò)是否能夠正常訪(fǎng)問(wèn)
如果ping主機(jī)ip地址可以,但ping主機(jī)名不通的時(shí)候,需要在
winnt\system32\drivers\etc\hosts (win2023)
windows\system32\drivers\etc\hosts (win2023)
文件里寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器ip地址和主機(jī)名的對(duì)應(yīng)關(guān)系。
例如:
127.0.0.localhost
192.168.0.35 oracledb oracledb
192.168.0.65 fengyu02 fengyu02
202.84.10.193 bj_dbbj_db
或者在sql server客戶(hù)端網(wǎng)絡(luò)實(shí)用工具里建立別名,例如:
5、系統(tǒng)需要的擴(kuò)展
存儲(chǔ)過(guò)程
是否存在(如果不存在,需要恢復(fù)):
sp_addextendedproc ‘xp_regenumvalues’,@dllname =’xpstar.dll’
go
sp_addextendedproc ‘xp_regdeletevalue’,@dllname =’xpstar.dll’
go
sp_addextendedproc ‘xp_regdeletekey’,@dllname =’xpstar.dll’
go
sp_addextendedproc xp_cmdshell ,@dllname =’xplog70.dll’
接下來(lái)就可以用sql server企業(yè)管理器里-> 右鍵選擇 ->的圖形界面來(lái)配置數(shù)據(jù)庫(kù)復(fù)制了。
下面是按順序列出配置復(fù)制的步驟:
1、建立發(fā)布和分發(fā)服務(wù)器
->->
->
文件夾
>-> -> ->
上述步驟完成后, 會(huì)在當(dāng)前”@servername” sql server數(shù)據(jù)庫(kù)里建立了一個(gè)distribion庫(kù)和 一個(gè)distributor_admin管理員級(jí)別的用戶(hù)(我們可以任意修改密碼)。
服務(wù)器上新增加了四個(gè)作業(yè):
sql server企業(yè)管理器里多了一個(gè)復(fù)制監(jiān)視器, 當(dāng)前的這臺(tái)機(jī)器就可以發(fā)布、分發(fā)、訂閱了。
我們?cè)俅卧趕ql server企業(yè)管理器里-> 右鍵選擇 ->
我們可以在 窗口-> -> -> -> -> / -> -> -> ->
把網(wǎng)絡(luò)上的其它sql server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.
新增一臺(tái)發(fā)布服務(wù)器的選項(xiàng):
我這里新建立的jin001發(fā)布服務(wù)器是用管理員級(jí)別的數(shù)據(jù)庫(kù)用戶(hù)test連接的,
到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框, 默認(rèn)的是選中的,
在新建的jin001發(fā)布服務(wù)器上建立和分發(fā)服務(wù)器fengyu/fengyu的鏈接的時(shí)需要輸入distributor_admin用戶(hù)的密碼。到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來(lái)建立發(fā)布到分發(fā)服務(wù)器的鏈接(這當(dāng)然欠缺安全,在測(cè)試環(huán)境下可以使用)。
2、新建立的網(wǎng)絡(luò)上另一臺(tái)發(fā)布服務(wù)器(例如jin001)選擇分發(fā)服務(wù)器
->
-> 使用下列服務(wù)器(選定的服務(wù)器必須已配置為分發(fā)服務(wù)器) -> (例如fengyu/fengyu)
-> ->
-> -> ->
-> -> ->
建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制發(fā)布的過(guò)程:
-> -> 右鍵選擇 ->
-> -> ->
-> -> -> /
-> -> ->
-> -> -> ->
->,默認(rèn)值是newid()>
(添加新列將: 導(dǎo)致不帶列列表的 insert 語(yǔ)句失敗,增加表的大小,增加生成之一個(gè)快照所要求的時(shí)間)
->
-> -> ->
-> -> ->
-> -> ->
發(fā)布屬性里有很多有用的選項(xiàng):設(shè)定訂閱到期(例如24小時(shí))
設(shè)定發(fā)布表的項(xiàng)目屬性:
常規(guī)窗口可以指定發(fā)布目的表的名稱(chēng),可以跟原來(lái)的表名稱(chēng)不一樣。
下圖是命令和快照窗口的欄目
( sql server 數(shù)據(jù)庫(kù)復(fù)制技術(shù)實(shí)際上是用insert,update,delete操作在訂閱服務(wù)器上重做發(fā)布服務(wù)器上的事務(wù)操作
看文檔資料需要把發(fā)布數(shù)據(jù)庫(kù)設(shè)成完全恢復(fù)模式,事務(wù)才不會(huì)丟失
但我自己在測(cè)試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫(kù)是簡(jiǎn)單恢復(fù)模式下,每10秒生成一些大事務(wù),10分鐘后再收縮數(shù)據(jù)庫(kù)日志,
這期間發(fā)布和訂閱服務(wù)器上的作業(yè)都暫停,暫?;謴?fù)后并沒(méi)有丟失任何事務(wù)更改 )
發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列:
例如只選擇表里某些符合條件的記錄, 我們可以手工編寫(xiě)篩選的sql語(yǔ)句:
發(fā)布表的訂閱選項(xiàng),并可以建立強(qiáng)制訂閱:
成功建立了發(fā)布以后,發(fā)布服務(wù)器上新增加了一個(gè)作業(yè):
分發(fā)服務(wù)器上新增加了兩個(gè)作業(yè):
類(lèi)型
類(lèi)型
上面藍(lán)色字的名稱(chēng)會(huì)根據(jù)發(fā)布服務(wù)器名,發(fā)布名及第幾次發(fā)布而使用不同的編號(hào)
repl快照作業(yè)是sql server復(fù)制的前提條件,它會(huì)先把發(fā)布的表結(jié)構(gòu),數(shù)據(jù),索引,約束等生成到發(fā)布服務(wù)器的os目錄下文件
(當(dāng)有訂閱的時(shí)候才會(huì)生成, 當(dāng)訂閱請(qǐng)求初始化或者按照某個(gè)時(shí)間表調(diào)度生成)
repl日志讀取器在事務(wù)復(fù)制的時(shí)候是一直處于運(yùn)行狀態(tài)。(在合并復(fù)制的時(shí)候可以根據(jù)調(diào)度的時(shí)間表來(lái)運(yùn)行)
建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制訂閱的過(guò)程:
-> -> 右鍵選擇 ->
-> -> ->
-> -> ->
-> -> ->
(輸入發(fā)布服務(wù)器上distributor_admin用戶(hù)名和密碼)
-> -> -> /
-> -> ->
-> -> ->
-> -> ->
(訂閱服務(wù)器要能訪(fǎng)問(wèn)發(fā)布服務(wù)器的repldata文件夾,如果有問(wèn)題,可以手工設(shè)置網(wǎng)絡(luò)共享及共享權(quán)限)
-> -> ->
-> -> -> -> ->
-> -> ->
-> -> ->
成功建立了訂閱后,訂閱服務(wù)器上新增加了一個(gè)類(lèi)別是作業(yè)(合并復(fù)制的時(shí)候類(lèi)別是)
它會(huì)按照我們給的時(shí)間調(diào)度表運(yùn)行數(shù)據(jù)庫(kù)同步復(fù)制的作業(yè)。
3、sql server復(fù)制配置好后, 可能出現(xiàn)異常情況的實(shí)驗(yàn)日志:
1.發(fā)布服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制沒(méi)有多大影響
中斷期間,分發(fā)和訂閱都接收到?jīng)]有復(fù)制的事務(wù)信息
2.分發(fā)服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制有一些影響
中斷期間,發(fā)布服務(wù)器的事務(wù)排隊(duì)堆積起來(lái)
(如果設(shè)置了較長(zhǎng)時(shí)間才刪除過(guò)期訂閱的選項(xiàng), 繁忙發(fā)布數(shù)據(jù)庫(kù)的事務(wù)日志可能會(huì)較快速膨脹),
訂閱服務(wù)器會(huì)因?yàn)樵L(fǎng)問(wèn)不到發(fā)布服務(wù)器,反復(fù)重試
我們可以設(shè)置重試次數(shù)和重試的時(shí)間間隔(更大的重試次數(shù)是9999, 如果每分鐘重試一次,可以支持約6.9天不出錯(cuò))
分發(fā)服務(wù)器sql server服務(wù)啟動(dòng),網(wǎng)絡(luò)接通以后,發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上:
會(huì)需要一個(gè)比較長(zhǎng)的時(shí)間(實(shí)際上是生成所有事務(wù)的insert,update,delete語(yǔ)句,在訂閱服務(wù)器上去執(zhí)行)
我們?cè)谄胀ǖ膒c機(jī)上實(shí)驗(yàn)的58個(gè)事務(wù)100228個(gè)命令執(zhí)行花了7分28秒.
3.訂閱服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制影響比較大,可能需要重新初試化
我們實(shí)驗(yàn)環(huán)境(訂閱服務(wù)器)從18:46分意外停機(jī)以, 第二天8:40分重啟動(dòng)后, 已經(jīng)設(shè)好的復(fù)制在8:40分以后又開(kāi)始正常運(yùn)行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上, 但復(fù)制管理器里出現(xiàn)快照的錯(cuò)誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動(dòng).(我們實(shí)驗(yàn)環(huán)境的機(jī)器并沒(méi)有進(jìn)行快照初試化,復(fù)制仍然是成功運(yùn)行的)
4、刪除已經(jīng)建好的發(fā)布和定閱可以直接用delete刪除按鈕
我們更好總是按先刪定閱,再刪發(fā)布,最后禁用發(fā)布的順序來(lái)操作。
如果要徹底刪去sql server上面的復(fù)制設(shè)置, 可以這樣操作:
-> 右鍵選擇 ->
-> -> ->
-> -> ->
我們也可以用t-sql命令來(lái)完成復(fù)制中發(fā)布及訂閱的創(chuàng)建和刪除, 選中已經(jīng)設(shè)好的發(fā)布和訂閱, 按屬標(biāo)右鍵可以。(這里就不詳細(xì)講了, 后面推薦的網(wǎng)站內(nèi)有比較詳細(xì)的內(nèi)容)
當(dāng)你試圖刪除或者變更一個(gè)table時(shí),出現(xiàn)以下錯(cuò)誤
server: msg 3724, level 16, state 2, line 1
cannot drop the table ‘object_name’ because it is being used for replication.
比較典型的情況是該table曾經(jīng)用于復(fù)制,但是后來(lái)又刪除了復(fù)制。
處理辦法:
select * from sysobjects where replinfo >’0′
sp_configure ‘a(chǎn)llow updates’, 1
go
reconfigure with override
go
begin transaction
update sysobjects set replinfo = ‘0’ where replinfo >’0′
commit transaction
go
rollback transaction
go
sp_configure ‘a(chǎn)llow updates’, 0
go
reconfigure with override
go
實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)
同構(gòu)同步
: 屬于數(shù)據(jù)庫(kù)復(fù)制同步工具 (
如甲骨文OGG/北京靈蜂Beedup
)
單向同粗閉雀步 如 SQLServer A 到SQLServer B(SQLServer自帶僅適用于自身)
雙向同步 如 SQLServer A 到 SQLServer B / SQLServer B 再到SQLServer A (SQLServer自帶未有)
實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)
異構(gòu)同步
:屬于ETL轉(zhuǎn)換工具巖早范疇(
如 Informatica / Beeload/BeeDI
)
單向同步 如Oracle 到 SQL Server ……
如何將wireshark抓包的網(wǎng)絡(luò)數(shù)據(jù)流數(shù)據(jù)存入到mongodb數(shù)據(jù)庫(kù)中
定時(shí)生成文本文件,直接存入mongo
MongoDB是一個(gè)面向文檔的數(shù)據(jù)庫(kù),目前由10gen開(kāi)發(fā)并維護(hù),它的功能豐富,齊全,所以完全可以替代MySQL。
與MySQL等關(guān)系型數(shù)據(jù)庫(kù)相比,MongoDB的優(yōu)點(diǎn)如下:
①弱一致性,更能保證用戶(hù)的訪(fǎng)問(wèn)速度。
?、谖臋n結(jié)構(gòu)的存儲(chǔ)方式,能夠更便捷的獲取數(shù)據(jù)。
③內(nèi)置GridFS,支持大容量的存儲(chǔ)。
?、軆?nèi)置Sharding。
?、莸谌街С重S富。慎凳(這是與其他寬羨旅的NoSQL相比,MongoDB也具有派孝的優(yōu)勢(shì))
?、扌阅軆?yōu)越:
單機(jī)mongodb數(shù)據(jù)庫(kù)怎么導(dǎo)入分片集群中
準(zhǔn)備工作:在導(dǎo)入數(shù)據(jù)前,先配置好要分片的數(shù)據(jù)庫(kù)及表。
不然導(dǎo)入完成后,發(fā)現(xiàn)數(shù)據(jù)庫(kù),表沒(méi)有同步到另外一個(gè)集群。
我這里做了從原單機(jī)數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出后,再分片集群庫(kù)中導(dǎo)入操作握并。
當(dāng)設(shè)置了要分段隱跡片的庫(kù),及表后,系統(tǒng)會(huì)自動(dòng)幫你添加庫(kù)及表。
設(shè)置完成后,就可以導(dǎo)入數(shù)據(jù)了。
use admin
db.runCommand({enablesharding:”ip”})
db.runCommand({shardcollection:”ip.ipaddress”,key:{ip1:1}})
./mongorestore -h 192.168.20.11 –portd ip /opt/攜肢backup/ip/ip
./mongorestore -h 192.168.20.11 –portd dmp /opt/backup/dmp/dmp
1. 導(dǎo)出需要遷移的數(shù)據(jù);
/usr/local/mongo/bin/mongodump –host 172.16.8.134:d 201 -o /data/data/mongo/tmp/ –directoryperdb
并且將該數(shù)據(jù)同步到131的/慧禪遲data/data/mongodb/tmp目錄中
2. 建立之一個(gè)副本集
2.1 建立之一個(gè)襲銀副本集前李shard1,不帶分片的
server1:
/usr/local/mongo/bin/mongod –replSet shard1 –portdbpath=/data/data/mongodb/shard11 –logpath=/data/log/shard11.log –logappend –fork
server2:
/usr/local/mongo/bin/mongod –replSet shard1 –portdbpath=/data/data/mongodb/shard12 –logpath=/data/log/shard12.log –logappend –fork
server3:
/usr/local/mongo/bin/mongod –replSet shard1 –portdbpath=/data/data/mongodb/shard13 –logpath=/data/log/shard13.log –logappend –fork
2.2 初始化之一個(gè)副本集shard1
./mongo –port 29017
config={_id : ‘shard1’,members : }
rs.initiate(config)
數(shù)據(jù)庫(kù)同步到momgodb的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫(kù)同步到momgodb,如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步到MongoDB?,怎么實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)的同步,如何將wireshark抓包的網(wǎng)絡(luò)數(shù)據(jù)流數(shù)據(jù)存入到mongodb數(shù)據(jù)庫(kù)中,單機(jī)mongodb數(shù)據(jù)庫(kù)怎么導(dǎo)入分片集群中的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專(zhuān)業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫(huà)冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。
網(wǎng)站名稱(chēng):如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步到MongoDB?(數(shù)據(jù)庫(kù)同步到momgodb)
轉(zhuǎn)載來(lái)源:http://www.5511xx.com/article/cdossgh.html


咨詢(xún)
建站咨詢(xún)
