關於資料庫同步mysql腳本的信息

本文目錄一覽:

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中文網站,海淘專業正版軟體選擇麥軟

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-tw/n/282612.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:05
下一篇 2024-12-22 08:05

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python腳本控制其他軟體

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟體也是Python…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字元命令行的語言…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28

發表回復

登錄後才能評論