本文目錄一覽:
- 1、mysql如何實現兩個數據庫數據結構實時同步?
- 2、navicat for mysql怎麼實現兩個mysql數據庫同步
- 3、如何實現兩台服務器mysql數據庫同步
- 4、mysql怎麼實時同步兩個數據庫
- 5、本地MySQL數據庫怎麼與遠程MySQL數據庫同步
- 6、怎麼實現兩個數據庫的同步
mysql如何實現兩個數據庫數據結構實時同步?
實現兩個Mysql數據庫之間同步同步原理:
MySQL 為了實現replication 必須打開bin-log 項,也是打開二進制的MySQL 日誌記錄選項。MySQL 的bin log 二
進制日誌,可以記錄所有影響到數據庫表中存儲記錄內容的sql 操作,如insert / update / delete 操作,而不記錄
select 這樣的操作。因此,我們可以通過二進制日誌把某一時間段內丟失的數據可以恢復到數據庫中(如果二進制日
志中記錄的日誌項,包涵數據庫表中所有數據,那麼, 就可以恢複本地數據庫的全部數據了)。 而這個二進制日誌,
如果用作遠程數據庫恢復,那就是replication 了。這就是使用replication 而不用sync 的原因。這也是為什麼要設
置bin-log = 這個選項的原因。
在同步過程中,最重要的同步參照物,就是同步使用那一個二進制日誌文件,從那一條記錄開始同步。下面就介紹
下怎樣實現兩個Mysql數據庫之間的主從同步。
一、 概述
MySQL從3.23.15版本以後提供數據庫複製(replication)功能,利用該功能可以實現兩個數據庫同步、主從模式、
互相備份模式的功能。本文檔主要闡述了如何在linux系統中利用mysql的replication進行雙機熱備的配置。
二、 環境
操作系統:Linux 2.6.23.1-42.fc8 # SMP(不安裝XEN)
Mysql版本:5.0.45-4.fc8
設備環境:PC(或者虛擬機)兩台
三、 配置
數據庫同步複製功能的設置都在MySQL的配置文件中體現,MySQL的配置文件(一般是my.cnf):在本環境下
為/etc/my.cnf。
3.1 設置環境:
IP的設置:
A主機 IP:10.10.0.119
Mask:255.255.0.0
B主機 IP:10.10.8.112
Mask:255.255.0.0
在IP設置完成以後,需要確定兩主機的防火牆確實已經關閉。可以使用命令service iptables status查看防火牆狀態
。如果防火牆狀態為仍在運行。使用service iptables stop來停用防火牆。如果想啟動關閉防火牆,可以使用setup命
令來禁用或定製。
最終以兩台主機可以相互ping通為佳。
3.2 配置A主(master) B從(slave)模式
3.2.1 配置A 為master
1、增加一個用戶同步使用的帳號:
GRANT FILE ON *.* TO 『backup』@’10.10.8.112′ IDENTIFIED BY 『1234』;
GRANTREPLICATION SLAVE ON *.* TO 『backup』@’10.10.8.112′ IDENTIFIED BY 『1234』;
賦予10.10.8.112也就是Slave機器有File權限,只賦予Slave機器有File權限還不行,還要給它REPLICATION SLAVE的權
限才可以。
2、增加一個數據庫作為同步數據庫:
create databbse test;
3、創建一個表結構:
create table mytest (username varchar(20),password varchar(20));
4、修改配置文件:
修改A的/etc/my.cnf文件,在my.cnf配置項中加入下面配置:
server-id = 1 #Server標識
log-bin
binlog-do-db=test #指定需要日誌的數據庫
5、重起數據庫服務:
service mysqld restart
查看server-id:
show variable like 『server_id』;
實例:
mysql show variables like ‘server_id’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| server_id | 1 |
+—————+——-+
1 row in set (0.00 sec)
6、用show master status/G命令看日誌情況。
正常為:
mysql show master status/G
*************************** 1. row ***************************
File: mysqld-bin.000002
positiion: 198
Binlog_Do_DB: test,test
Binlog_Ignore_DB:
1 row in set (0.08 sec)
3.2.2 配置B 為slave
1、增加一個數據庫作為同步數據庫:
create databbse test;
2、創建一個表結構:
create table mytest (username varchar(20),password varchar(20));
3、修改配置文件:
修改B的/etc/my.cnf文件,在my.cnf配置項中加入下面配置:
server-id=2
master-host=10.10. 0.119
master-user=backup #同步用戶帳號
master-password=1234
master-port=3306
master-connect-retry=60 #預設重試間隔60秒
replicate-do-db=test #告訴slave只做backup數據庫的更新
5、重起數據庫服務:
service mysqld restart
查看server-id:
show variables like 『server_id』;
實例:
mysql show variables like ‘server_id’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| server_id | 2 |
+—————+——-+
1 row in set (0.00 sec)
6、用show slave status/G命令看日誌情況。
正常為:
mysql show slave status/G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.10.0.119
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000001
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 236
Relay_Master_Log_File: mysqld-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test,test
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 236
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.01 sec)
3.2.3 驗證配置
分別使用insert, delete , update在A主機進行增刪改查數據庫;查看B主機的數據庫是否與A主機一致;若一致,則配
置成功。
3.3雙機互備模式
如果在A主機加入slave設置,在B主機加入master設置,則可以做B-A的同步。
1、在A主機的配置文件中 mysqld配置項加入以下設置:
master-host=10.10.8.112
master-user=backup
master-password=1234
replicate-do-db=test
master-connect-retry=10
2、在B的配置文件中 mysqld配置項加入以下設置:
log-bin
binlog-do-db=test
注意:當有錯誤產生時,*.err日誌文件同步的線程退出,當糾正錯誤後,要讓同步機制進行工作,運行slave
start。
重起A、B機器,則可以實現雙向的熱備份。
總之,成功完成以上配置後,在主服務器A的test庫里添加數據或刪除數據,在從服務器B的test庫里馬上也能
看到相應的變更。兩台服務器的同步操作可以說是瞬間完成的。
navicat for mysql怎麼實現兩個mysql數據庫同步
以下答案來源於Navicat中文網站,海淘專業正版軟件選擇麥軟
1、打開Navicat for MySQL ,找到工具,結構同步
2、選擇目標數據庫和源數據庫,此時下面就會生成一系列結構同步SQL,可惜不能直接複製,於是我們進行第三步
3、右鍵 全部校驗
4、第三步完成後,右鍵 已校驗命令即可看到可複製的結構同步SQL
如何實現兩台服務器mysql數據庫同步
1.主上修改my.cnf文件:
server-id=1
log-bin=mysql-bin
2.從上修改配置文件 my.cnf
server-id=2
relay-log=relay-bin
read-only =1
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
#replicate-wild-do-table = tt.admin
replicate-wild-do-table = my_db.stu // 所要同步的數據庫的單個表
3. 創建 同步的用戶(主上)
grant replication client,replication slave on *.* to rep@’10.41.50.105′ identified by ‘root’;
4.同步到主庫(在從上操作)
change master to master_host=’10.41.50.80′,master_user=’rep’,master_password=’root’;
5.在從上驗證:
show slave status\G;
主從同步某些表
mysql怎麼實時同步兩個數據庫
mysql怎麼實時同步兩個數據庫
實現兩個Mysql數據庫之間同步同步原理:
MySQL 為了實現replication 必須打開bin-log 項,也是打開二進制的MySQL 日誌記錄選項。MySQL 的bin log 二
進制日誌,可以記錄所有影響到數據庫表中存儲記錄內容的sql 操作,如insert / update / delete 操作,而不記錄
select 這樣的操作。因此,我們可以通過二進制日誌把某一時間段內丟失的數據可以恢復到數據庫中(如果二進制日
志中記錄的日誌項,包涵數據庫表中所有數據,那麼, 就可以恢複本地數據庫的全部數據了)。 而這個二進制日誌,
如果用作遠程數據庫恢復,那就是replication 了。這就是使用replication 而不用sync 的原因。這也是為什麼要設
置bin-log = 這個選項的原因。
本地MySQL數據庫怎麼與遠程MySQL數據庫同步
首先備份好你本地的數據庫,方法如下。
1、用APMServ5.2.6(網站上面有下載)帶的phpmyadmin
進行備份恢復。
A、運行APMServ5.2.6,
點擊右邊的「管理MySql
數據庫」。服務器填寫127.0.0.1:3306,
登入名稱:root,密碼為空進行登錄。在左邊是數據庫列表。點擊你的數據庫。點導出、拉到
最下面把「另存為文件」打勾。點執行。這樣你就可以備份你的數據庫了。
2、運行mySQL-Front
備份恢復你的數據庫。
A、新建一個登錄。
信息欄中隨便寫一下名字。標識你的登錄信息。
B、點擊連接欄,分別填好:
服務器:服務器的IP
端
口:一般為3306
C、點擊註冊欄,分別填好:
用
戶:你申請的數據庫的用戶名(如果是本地一般為root),
密
碼:數據庫的密碼(本地為空)
數據庫:你申請的數據庫名。
填寫好這些信息後點擊「確定」這樣就能鏈接到你的遠程數據庫了。左邊這個遠程數據。
服務器的一些數據庫,點擊你的數據庫後等待鏈接。直至返回所有數據,你便能打開你的數據庫。
中的數據表了。在這裡你可以修改你的數據表結構,刪除填加數據等(小心操作)。
D、右鍵點擊你的數據庫進行備份(輸出)數據,有幾種備份的類型,一般選sql。
怎麼實現兩個數據庫的同步
同步兩個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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/282612.html