❶ ES同步數據使用切面進行實時更新
以前公司ES使用是直接定時同步,對數據實時性要求不是很高。
當前公司使用sass平台要求實時同步數據,這樣才能實時搜索到。最終使用切面方式進行數據同步
viewSupport.updateAll(assetIdList, null); 該方法是自定義的一個業務邏輯處理方法,和功能關系不大,主要作用是通過參數去查詢需要更新的數據列表,然後再同步到ES。
枚舉類,用於存放切面類的方法名稱,比如所有增、刪、改方法設計數據變動
❷ mysql同步數據到es有什麼好的方法沒
先假設有主機 A 和 B ( Linux 系統),主機 A 的 IP 分別是 1.2.3.4 (當然,也可以是動態的),主機 B 的 IP 是 5.6.7.8 。兩個主機都裝上了 PHP+Mysql ,現在操作的是主機 A 上的資料,如果另外一個主機 B 想跟 A 的資料進行同步,應該怎麼做呢? OK,我們現在就動手。 首先,如果要想兩個主機間的資料同步,一種方法就是主機 A 往主機 B 送資料,另外一種主法就是主機 B 到主機 A 上拿資料,因為 A 的 IP 是動態的(假設),所以我們就得從主機 A 往主機 B 送資料。 在主機 B 上創建一個 Mysql 賬戶。 # GRANT ALL ON test.* TO user@% IDENTIFIED BY "password"; //創建用戶 user,可以從任何機器訪問到主機 B 上的 test 資料庫。 如果這里顯示錯誤,先把 % 改為一個 IP ,然後再利用 phpMyAdmin 把 IP 改為 % ,測試無誤後就可以寫 php 程序。 <? $link=mysql_pconnect("localhost","user","password"); mysql_pconnect("localhost","user","password"); //連接本機(主機A)的資料庫 mysql_select_db("test"); //選擇資料庫test $re=mysql_query("select * from table order by id desc"); $num=mysql_numrows($re); if (!empty($num)) { ...
❸ ElasticSearch海量數據使用簡述
應用場景當中經常會遇到模糊查詢或多條件匹配查詢,數據量較小的情況下通過簡單的資料庫模糊查詢是可以解決的,但是對於數據量龐大的情況,資料庫模糊查詢就會出現性能問題。這種情況下的一種解決方案就是根據查詢內容構建反向索引,藉助搜索引擎進行查詢,提升查詢性能。
目前使用比較多的分布式搜索引擎是ElasticSearch。那麼項目中如何使用ES?如何保證ES的數據更新?下面簡單做個描述。
Elasticsearch使用可以簡單分為兩個階段。數據初始化階段、數據更新階段。
數據初始化階段。數據初始化常見的方式如下:
一、通過應用程序手動將資料庫中的數據,調用ES介面API插入ES索引庫中。
二、同過數據遷移工具將數據初始化到ES資料庫。目前常用的ES同步工具有logstash-input-jdbc、DataX。通過同步遷移工具可以全量將資料庫數據初始化到ES索引庫中。
數據更新階段。數據更新階段常見的處理方式如下:
一、通過應用服務直接調用ES更新介面。這種方式實現比較簡單但是對業務侵入性比較大。
二、對於實時性要求不高的可以採用定時任務監控數據表變化然後調用ES介面實現數據更新。
三、業務應用中通過發送消息非同步更新數據。
四、通過DataX同步工具定時將修改的數據同步到ES庫中。
上述是ElasticSearch使用的簡單描述。使用的關鍵還是資料庫與ES間的數據同步。能否用的好關鍵也是數據間的同步。
❹ 使用canal將mysql同步到es中
因為自己項目中需要用到mysql數據同步到es中,查找了相關資料最後決定用canal來做,所以便有了本文,下面一起來看如何使用canal吧
根據 https://github.com/alibaba/canal 上的原理解釋,我們知道 canal 會模擬 mysql slave 的交互協議,偽裝自己為 mysql slave,然後向 mysql master 發送 mp 協議。
mysql master 收到 mp 請求,開始推送 binary log 給 slave(也就是 canal),然後 canal 解析 binary log 對象(原始為 byte流)。
經 canal 解析過的對象,我們使用起來就非常的方便了。
再根據 https://github.com/alibaba/canal/releases 提供的版本信息,你會發現 canal 其實相當於一個中間件,專門用來解析 MySQL 的 binlog 日誌。canal 解析好了之後,會封裝成一個數據對象,通過 protobuf3.0 協議進行交互,讓 canal 客戶端進行消費。
根據上面的解釋,以及 canal 提供的版本信息,我們在使用 canal 的時候,首選要安裝一個 canal.deployer-1.1.4.tar.gz 進行解析 MySQL 的 binlog 日誌。
下載後,復制 canal.deployer-1.1.4.tar.gz 到 MySQL 主機上,比如放在 /usr/local/soft/目錄下。然後依次執行下面的命令:
然後修改 canal 的配置文件 vim conf/example/instance.properties
這三項改成你自己的,比如我的配置如下:
然後保存並退出。(VI 模式下,按 Esc 輸入 :wq 回車退出。)
接著,我們檢查一下 MySQL 的配置。確定版本和是否開啟了 binlog 日誌,以及日誌格式。
canal 支持 binlog 格式為 ROW 的模式。如果你沒開啟 binlog,並且格式是非 row 的,建議修改一下 mysql 的配置文件。
執行 mysql –help | grep my.cnf 找到 mysql 的 my.cnf 文件。
執行 vim /etc/my.cnf 命令。添加下面 3 個配置。
然後保存並退出。
接著執行 sudo service mysqld restart 重啟 MySQL。
需要注意的是你的 mysql 用戶,必須要有 REPLICATION SLAVE 許可權。該許可權授予 slave 伺服器以該賬戶連接 master 後可以執行 replicate 操作的權利。
如果沒有許可權,則使用 root 賬戶登錄進 MySQL,執行下面的語句,創建用戶,分配許可權。
MySQL 啟動後,就可以開啟 canal 服務了。
開啟後,觀察 canal 服務的日誌,確保服務正常。
查看 canal 的日誌
確定沒有問題後,開始編寫我們的測試程序。
pom.xml 中導入下面的依賴。
使用JAVA進行測試
然後執行 main 方法。你再修改修改 MySQL 中的數據,你會發現所有改變都同步過來了。上面是使用的Java代碼進行運行,如果想用canal.adapter來進行運行可以下載
放入伺服器中,依次執行下面命令
然後修改配置文件 :
然後將需要運行存儲到es的的yml文件放入到
目錄下。例如:
然後開啟canal-adapter服務
/usr/local/soft/canal-adapter/bin/startup.sh
查看 canal-adapter 的日誌,確定沒有問題後修改數據 就可以同步到es了
注意:
1、canal-adapter自帶mysql連接使用的5.x的,如果自己安裝的是高版本的mysql需要自己去/usr/local/soft/canal-adapter/lib增加對應的jar包
2、因項目中同步es使用的sql中有資料庫中沒有的欄位,導致原生程序一直報異常,後修改源碼中
加了一個判斷後才可以
3、es中使用的date欄位類型和資料庫中不一致,所以這里又修改了部分源碼兼容我們項目中的類型
可以根據各自情況修改。
❺ 如何實現同步兩個伺服器的資料庫
這個要根據不同情況具體分析,有幾種方案參考:
資料庫A和資料庫B是建立在兩台獨立的資料庫伺服器上,那麼採用dblink方式是一種可行的方式,存在兩個數據同步過程:
一、資料庫A正常運行的時候需要將數據同步到備用庫即資料庫B;
二、資料庫A不正常的時候啟用資料庫B,在資料庫A恢復正常之前的數據更新都發生在資料庫B,那麼需要將資料庫B的數據同步給資料庫A。
第一種方式:前提是資料庫A和資料庫B本地網是24小時互通的同時對數據同步實時性有比較高的要求,那麼可以建立DBLINK,在兩個庫都建觸發器,不管當前在哪個庫發生數據更新的時候實時同步數據到目標資料庫;
第二種方式:如果數據同步的實時性要求不高,則可以通過定製存儲過程的方式(給兩個庫的數據表加時間戳或者更新標志,)定時同步數據;
第三種方式:通過給兩個資料庫的數據表加更新標志欄位,以第一種方式為主以滿足實時性的要求,以第二種方式為輔彌補可能存在的觸發器執行更新未成功的情況。
以上的方案都是從數據層面所做的處理,對於數據實時同步還是會存在一定的風險,那麼雙機熱備應該說是最好的選擇了。
❻ 如何實現同步兩個伺服器的資料庫
同步兩個SQLServer資料庫
如何同步兩個sqlserver資料庫的內容?程序代碼可以有版本管理cvs進行同步管理,可是資料庫同步就非常麻煩,只能自己改了一個後再去改另一個,如果忘記了更改另一個經常造成兩個資料庫的結構或內容上不一致.各位有什麼好的方法嗎?
一、分發與復制
用強制訂閱實現資料庫同步操作. 大量和批量的數據可以用資料庫的同步機制處理:
//
說明:
為方便操作,所有操作均在發布伺服器(分發伺服器)上操作,並使用推模式
在客戶機器使用強制訂閱方式。
二、測試通過
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: insert into wq_newsgroup_s select '測試成功',5
復制監視器->發布伺服器(zehuadb)->sz:sz->快照->啟動代理程序 ->zlp:sz(強制)->啟動同步處理
去查看同步的 wq_newsgroup_s 是否插入了一條新的記錄
測試完畢,通過。
7:修改資料庫的同步時間,一般選擇夜晚執行資料庫同步處理
(具體操作略) :d
/*
注意說明:
伺服器一端不能以(local)進行數據的發布與分發,需要先刪除注冊,然後新建注冊本地計算機名稱
卸載方式:工具->復制->禁止發布->是在"zehuadb"上靜止發布,卸載所有的資料庫同步配置伺服器
注意:發布伺服器、分發伺服器中的sqlserveragent服務必須啟動
採用推模式: "d:\microsoft sql server\mssql\repldata\unc" 目錄文件可以不設置共享
拉模式:則需要共享~!
*/
少量資料庫同步可以採用觸發器實現,同步單表即可。
三、配置過程中可能出現的問題
在sql server 2000里設置和使用資料庫復制之前,應先檢查相關的幾台sql server伺服器下面幾點是否滿足:
1、mssqlserver和sqlserveragent服務是否是以域用戶身份啟動並運行的(.\administrator用戶也是可以的)
如果登錄用的是本地系統帳戶local,將不具備網路功能,會產生以下錯誤:
進程未能連接到distributor '@server name'
(如果您的伺服器已經用了sql server全文檢索服務, 請不要修改mssqlserver和sqlserveragent服務的local啟動。
會照成全文檢索服務不能用。請換另外一台機器來做sql server 2000里復制中的分發伺服器。)
修改服務啟動的登錄用戶,需要重新啟動mssqlserver和sqlserveragent服務才能生效。
2、檢查相關的幾台sql server伺服器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)
在查詢分析器里執行:
use master
select srvid,srvname,datasource from sysservers
如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣, 需要按如下方法修改:
use master
go
-- 設置兩個變數
declare @serverproperty_servername varchar(100),
@servername varchar(100)
-- 取得windows nt 伺服器和與指定的 sql server 實例關聯的實例信息
select @serverproperty_servername = convert(varchar(100), serverproperty('servername'))
-- 返回運行 microsoft sql server 的本地伺服器名稱
select @servername = convert(varchar(100), @@servername)
-- 顯示獲取的這兩個參數
select @serverproperty_servername,@servername
--如果@serverproperty_servername和@servername不同(因為你改過計算機名字),再運行下面的
--刪除錯誤的伺服器名
exec sp_dropserver @server=@servername
--添加正確的伺服器名
exec sp_addserver @server=@serverproperty_servername, @local='local'
修改這項參數,需要重新啟動mssqlserver和sqlserveragent服務才能生效。
這樣一來就不會在創建復制的過程中出現18482、18483錯誤了。
3、檢查sql server企業管理器裡面相關的幾台sql server注冊名是否和上面第二點里介紹的srvname一樣
不能用ip地址的注冊名。
(我們可以刪掉ip地址的注冊,新建以sql server管理員級別的用戶注冊的伺服器名)
這樣一來就不會在創建復制的過程中出現14010、20084、18456、18482、18483錯誤了。
4、檢查相關的幾台sql server伺服器網路是否能夠正常訪問
如果ping主機ip地址可以,但ping主機名不通的時候,需要在
winnt\system32\drivers\etc\hosts (win2000)
windows\system32\drivers\etc\hosts (win2003)
文件里寫入資料庫伺服器ip地址和主機名的對應關系。
例如:
127.0.0.1 localhost
192.168.0.35 oracledb oracledb
192.168.0.65 fengyu02 fengyu02
202.84.10.193 bj_db bj_db
或者在sql server客戶端網路實用工具里建立別名,例如:
5、系統需要的擴展存儲過程是否存在(如果不存在,需要恢復):
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'
接下來就可以用sql server企業管理器里[復制]-> 右鍵選擇 ->[配置發布、訂閱伺服器和分發]的圖形界面來配置資料庫復制了。
下面是按順序列出配置復制的步驟:
1、建立發布和分發伺服器
[歡迎使用配置發布和分發向導]->[選擇分發伺服器]->[使"@servername"成為它自己的分發伺服器,sql server將創建分發資料庫和日誌]
->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認配置] -> [完成]
上述步驟完成後, 會在當前"@servername" sql server資料庫里建立了一個distribion庫和 一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)。
伺服器上新增加了四個作業:
[ 代理程序歷史記錄清除: distribution ]
[ 分發清除: distribution ]
[ 復制代理程序檢查 ]
[ 重新初始化存在數據驗證失敗的訂閱 ]
sql server企業管理器里多了一個復制監視器, 當前的這台機器就可以發布、分發、訂閱了。
我們再次在sql server企業管理器里[復制]-> 右鍵選擇 ->[配置發布、訂閱伺服器和分發]
我們可以在 [發布伺服器和分發伺服器的屬性] 窗口-> [發布伺服器] -> [新增] -> [確定] -> [發布資料庫] -> [事務]/[合並] -> [確定] -> [訂閱伺服器] -> [新增] -> [確定]
把網路上的其它sql server伺服器添加成為發布或者訂閱伺服器.
新增一台發布伺服器的選項:
我這里新建立的jin001發布伺服器是用管理員級別的資料庫用戶test連接的,
到發布伺服器的管理鏈接要輸入密碼的可選框, 默認的是選中的,
在新建的jin001發布伺服器上建立和分發伺服器fengyu/fengyu的鏈接的時需要輸入distributor_admin用戶的密碼。到發布伺服器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來建立發布到分發伺服器的鏈接(這當然欠缺安全,在測試環境下可以使用)。
2、新建立的網路上另一台發布伺服器(例如jin001)選擇分發伺服器
[歡迎使用配置發布和分發向導]->[選擇分發伺服器]
-> 使用下列伺服器(選定的伺服器必須已配置為分發伺服器) -> [選定伺服器](例如fengyu/fengyu)
-> [下一步] -> [輸入分發伺服器(例如fengyu/fengyu)的distributor_admin用戶的密碼兩次]
-> [下一步] -> [自定義配置] -> [否,使用下列的默認配置]
-> [下一步] -> [完成] -> [確定]
建立一個資料庫復制發布的過程:
[復制] -> [發布內容] -> 右鍵選擇 -> [新建發布]
-> [下一步] -> [選擇發布資料庫] -> [選中一個待發布的資料庫]
-> [下一步] -> [選擇發布類型] -> [事務發布]/[合並發布]
-> [下一步] -> [指定訂閱伺服器的類型] -> [運行sql server 2000的伺服器]
-> [下一步] -> [指定項目] -> [在事務發布中只可以發布帶主鍵的表] -> [選中一個有主鍵的待發布的表]
->[在合並發布中會給表增加唯一性索引和 rowguidcol 屬性的唯一標識符欄位[rowguid],默認值是newid()]
(添加新列將: 導致不帶列列表的 insert 語句失敗,增加表的大小,增加生成第一個快照所要求的時間)
->[選中一個待發布的表]
-> [下一步] -> [選擇發布名稱和描述] ->
-> [下一步] -> [自定義發布的屬性] -> [否,根據指定方式創建發布]
-> [下一步] -> [完成] -> [關閉]
發布屬性里有很多有用的選項:設定訂閱到期(例如24小時)
設定發布表的項目屬性:
常規窗口可以指定發布目的表的名稱,可以跟原來的表名稱不一樣。
下圖是命令和快照窗口的欄目
( sql server 資料庫復制技術實際上是用insert,update,delete操作在訂閱伺服器上重做發布伺服器上的事務操作
看文檔資料需要把發布資料庫設成完全恢復模式,事務才不會丟失
但我自己在測試中發現發布資料庫是簡單恢復模式下,每10秒生成一些大事務,10分鍾後再收縮資料庫日誌,
這期間發布和訂閱伺服器上的作業都暫停,暫停恢復後並沒有丟失任何事務更改 )
發布表可以做數據篩選,例如只選擇表裡面的部分列:
例如只選擇表裡某些符合條件的記錄, 我們可以手工編寫篩選的sql語句:
發布表的訂閱選項,並可以建立強制訂閱:
成功建立了發布以後,發布伺服器上新增加了一個作業: [ 失效訂閱清除 ]
分發伺服器上新增加了兩個作業:
[ jin001-dack-dack-5 ] 類型[ repl快照 ]
[ jin001-dack-3 ] 類型[ repl日誌讀取器 ]
上面藍色字的名稱會根據發布伺服器名,發布名及第幾次發布而使用不同的編號
repl快照作業是sql server復制的前提條件,它會先把發布的表結構,數據,索引,約束等生成到發布伺服器的os目錄下文件
(當有訂閱的時候才會生成, 當訂閱請求初始化或者按照某個時間表調度生成)
repl日誌讀取器在事務復制的時候是一直處於運行狀態。(在合並復制的時候可以根據調度的時間表來運行)
建立一個資料庫復制訂閱的過程:
[復制] -> [訂閱] -> 右鍵選擇 -> [新建請求訂閱]
-> [下一步] -> [查找發布] -> [查看已注冊伺服器所做的發布]
-> [下一步] -> [選擇發布] -> [選中已經建立發布伺服器上的資料庫發布名]
-> [下一步] -> [指定同步代理程序登錄] -> [當代理程序連接到代理伺服器時:使用sql server身份驗證]
(輸入發布伺服器上distributor_admin用戶名和密碼)
-> [下一步] -> [選擇目的資料庫] -> [選擇在其中創建訂閱的資料庫名]/[也可以新建一個庫名]
-> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱]
-> [下一步] -> [初始化訂閱] -> [是,初始化架構和數據]
-> [下一步] -> [快照傳送] -> [使用該發布的默認快照文件夾中的快照文件]
(訂閱伺服器要能訪問發布伺服器的repldata文件夾,如果有問題,可以手工設置網路共享及共享許可權)
-> [下一步] -> [快照傳送] -> [使用該發布的默認快照文件夾中的快照文件]
-> [下一步] -> [設置分發代理程序調度] -> [使用下列調度] -> [更改] -> [例如每五分鍾調度一次]
-> [下一步] -> [啟動要求的服務] -> [該訂閱要求在發布伺服器上運行sqlserveragent服務]
-> [下一步] -> [完成] -> [確定]
成功建立了訂閱後,訂閱伺服器上新增加了一個類別是[repl-分發]作業(合並復制的時候類別是[repl-合並])
它會按照我們給的時間調度表運行資料庫同步復制的作業。
3、sql server復制配置好後, 可能出現異常情況的實驗日誌:
1.發布伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制沒有多大影響
中斷期間,分發和訂閱都接收到沒有復制的事務信息
2.分發伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制有一些影響
中斷期間,發布伺服器的事務排隊堆積起來
(如果設置了較長時間才刪除過期訂閱的選項, 繁忙發布資料庫的事務日誌可能會較快速膨脹),
訂閱伺服器會因為訪問不到發布伺服器,反復重試
我們可以設置重試次數和重試的時間間隔(最大的重試次數是9999, 如果每分鍾重試一次,可以支持約6.9天不出錯)
分發伺服器sql server服務啟動,網路接通以後,發布伺服器上的堆積作業將按時間順序作用到訂閱機器上:
會需要一個比較長的時間(實際上是生成所有事務的insert,update,delete語句,在訂閱伺服器上去執行)
我們在普通的pc機上實驗的58個事務100228個命令執行花了7分28秒.
3.訂閱伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制影響比較大,可能需要重新初試化
我們實驗環境(訂閱伺服器)從18:46分意外停機以, 第二天8:40分重啟動後, 已經設好的復制在8:40分以後又開始正常運行了, 發布伺服器上的堆積作業將按時間順序作用到訂閱機器上, 但復制管理器里出現快照的錯誤提示, 快照可能需要重新初試化,復制可能需要重新啟動.(我們實驗環境的機器並沒有進行快照初試化,復制仍然是成功運行的)
4、刪除已經建好的發布和定閱可以直接用delete刪除按鈕
我們最好總是按先刪定閱,再刪發布,最後禁用發布的順序來操作。
如果要徹底刪去sql server上面的復制設置, 可以這樣操作:
[復制] -> 右鍵選擇 [禁用發布] -> [歡迎使用禁用發布和分發向導]
-> [下一步] -> [禁用發布] -> [要在"@servername"上禁用發布]
-> [下一步] -> [完成禁用發布和分發向導] -> [完成]
我們也可以用t-sql命令來完成復制中發布及訂閱的創建和刪除, 選中已經設好的發布和訂閱, 按屬標右鍵可以[生成sql腳本]。(這里就不詳細講了, 後面推薦的網站內有比較詳細的內容)
當你試圖刪除或者變更一個table時,出現以下錯誤
server: msg 3724, level 16, state 2, line 1
cannot drop the table 'object_name' because it is being used for replication.
比較典型的情況是該table曾經用於復制,但是後來又刪除了復制。
處理辦法:
select * from sysobjects where replinfo >'0'
sp_configure 'allow 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 'allow updates', 0
go
reconfigure with override
go
❼ 如何實現資料庫實時同步
可以使用專門的同步軟體,如:資料庫比較與同步工具DBSync,它是一款windows系統下的桌面軟體,有免費版。缺點是,它的同步不是實時的,最快只能秒級同步,做不到毫秒級。優點是,使用比較簡單,大致步驟:
1、先設置資料庫連接字元串,連接雙方資料庫。
2、指定需要同步的數據表,以及欄位對應關系。
3、指定同步方式及頻率。
設置好後,軟體即可按指定頻率,不斷檢測雙方資料庫,找出雙方之間的差異,並同步差異數據,從而使它們始終保持一致。支持各種資料庫,支持多表同步。
希望對你有幫助。
❽ 利用CCR+Reindex跨集群同步阿里雲ES數據
ES Version: 7.10.0
1.由於種種原因,測試需要同步生產ES數據至測試ES集群,且需要過濾部分數據後供測試使用(只讀即可),索引數據總量10w+,過濾後數據量1w+。
2.實例是購買的阿里雲ES服務,且於新網路架構(2020年10月及之後)下購買的,故無法支持跨集群reindex功能,但是可以在同一實例執行reindex。官方鏈接見文末參考文檔。
3.於是考慮CCR(將整個索引同步到測試ES),再Reindex過濾數據到新索引(需要定期去reindex,同步頻率溝通為半小時一次),新建ES賬號控制索引許可權,再開放給測試使用。
4.同步流程大致為下:
1.需要確保兩個ES集群在同一個VPC下
2.配置實例網路互通,配置其中一個ES集群即可,另外一個會自動設置。
1.登錄ES Kibana(購買ES時默認部署)
2.添加遠程ES數據源(即被同步的ES集群)在測試ES集群操作。
稍等片刻之後,索引的同步狀態即將變成 Active。查看文檔數量,兩邊一致,同步完成。
1、首先要在測試環境新建索引 chat,欄位類型保持與源端一致。
2、編寫同步腳本 syncEsData.sh,過濾數據的 "query" 根據需求編寫。
3、部署crontab,每半小時執行一次。
新增角色是為了控制測試人員查看全量數據的索引 follow_chat,如果之前是使用的elastic賬號,則需要回收替換賬號。
https://help.aliyun.com/document_detail/175973.html
https://help.aliyun.com/document_detail/176854.html
❾ elasticsearh同步資料庫有幾種方式
在新庫裡面做一張關系表test然後在該表中存放兩個ID欄位一個是舊資料庫中要取其中數據某個表的ID,另一個是新資料庫中某個表的ID就可以建立關聯了。至於在數據更新時,你寫sql語句時要把資料庫表名寫完整,即庫名.表名.欄位就行了。不過提醒 你一點就是要把資料庫建到一個實例名下