1.采用數(shù)據(jù)導(dǎo)出啊,然后再使用向?qū)?dǎo)入
創(chuàng)新互聯(lián)公司服務(wù)緊隨時代發(fā)展步伐,進行技術(shù)革新和技術(shù)進步,經(jīng)過十載的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進行成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、建設(shè)、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
2.使用語句或者計劃先備份個數(shù)據(jù)庫,然后還原時重命名就可以了的。
可以利用光盤引導(dǎo)啟動進入PE系統(tǒng)后完整拷貝硬盤內(nèi)的所有數(shù)據(jù)。
所有東西完整導(dǎo)出到移動硬盤可以通過硬盤克隆來完成。詳細操作步驟如下:
1、安裝并打開軟件,主頁面找到“克隆”欄,選擇“磁盤克隆”。
2、選擇源磁盤(要導(dǎo)出的磁盤)
3、選擇目標磁盤(要導(dǎo)入的磁盤)
4、選擇好兩個磁盤,點擊“開始備份”。
5、在備份詳情頁面顯示備份進度和詳細過程。
6、進度條100%后,點擊“完成”就導(dǎo)出所有的內(nèi)容到移動硬盤了。
補充說明:移動硬盤缺點:損毀基本無法恢復(fù):除此之外同固態(tài)硬盤一樣,在硬受到物理損壞時數(shù)據(jù)是無法恢復(fù)的,不過這種情況只是小概率事件,基本不會遇到。
如果從庫上表 t 數(shù)據(jù)與主庫不一致,導(dǎo)致復(fù)制錯誤,整個庫的數(shù)據(jù)量很大,重做從庫很慢,如何單獨恢復(fù)這張表的數(shù)據(jù)?通常認為是不能修復(fù)單表數(shù)據(jù)的,因為涉及到各表狀態(tài)不一致的問題。下面就列舉備份單表恢復(fù)到從庫會面臨的問題以及解決辦法:
場景 1
如果復(fù)制報錯后,沒有使用跳過錯誤、復(fù)制過濾等方法修復(fù)主從復(fù)制。主庫數(shù)據(jù)一直在更新,從庫數(shù)據(jù)停滯在報錯狀態(tài)(假設(shè) GTID 為 aaaa:1-100)。
修復(fù)步驟:
在主庫上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000);
恢復(fù)到從庫;
啟動復(fù)制。
這里的問題是復(fù)制起始位點是 aaaa:101,從庫上表 t 的數(shù)據(jù)狀態(tài)是領(lǐng)先其他表的。aaaa:101-10000 這些事務(wù)中只要有修改表 t 數(shù)據(jù)的事務(wù),就會導(dǎo)致復(fù)制報錯 ,比如主鍵沖突、記錄不存在(而 aaaa:101 這個之前復(fù)制報錯的事務(wù)必定是修改表 t 的事務(wù))
解決辦法:啟動復(fù)制時跳過 aaaa:101-10000 這些事務(wù)中修改表 t 的事務(wù)。
正確的修復(fù)步驟:
1. 在主庫上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000),恢復(fù)到從庫;
2. 設(shè)置復(fù)制過濾,過濾表 t:
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');
3. 啟動復(fù)制,回放到 aaaa:10000 時停止復(fù)制(此時從庫上所有表的數(shù)據(jù)都在同一狀態(tài),是一致的);
START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
4. 刪除復(fù)制過濾,正常啟動復(fù)制。
注意事項:這里要用 mysqldump --single-transaction --master-data=2,記錄備份快照對應(yīng)的 GTID
場景 2
如果復(fù)制報錯后,使用跳過錯誤、復(fù)制過濾等辦法修復(fù)了主從復(fù)制。主、從庫數(shù)據(jù)一直在更新。
修復(fù)步驟:
在主庫上備份表 t (假設(shè)備份快照 GTID為 aaaa:1-10000);
停止從庫復(fù)制,GTID為 aaaa:1-20000;
恢復(fù)表 t 到從庫;
啟動復(fù)制。
這里的問題是復(fù)制起始位點是 aaaa:20001,aaaa:10000-20000 這些事務(wù)將不會在從庫上回放,如果這里面有修改表 t 數(shù)據(jù)的事務(wù),從庫上將丟失這部分數(shù)據(jù)。
解決辦法:從備份開始到啟動復(fù)制,鎖定表 t,保證 aaaa:10000-20000 中沒有修改表 t 的事務(wù)。
正確修復(fù)步驟:
對表 t 加讀鎖;
在主庫上備份表 t;
停止從庫復(fù)制,恢復(fù)表 t;
啟動復(fù)制;
解鎖表 t。
如果是大表,這里可以用可傳輸表空間方式備份、恢復(fù)表,減少鎖表時間。
兩種方法:
1、在“SQL Server 配置管理器”中將你的SQL SERVER服務(wù)停止,然后將你安裝數(shù)據(jù)庫文件中的data文件夾下的 你的數(shù)據(jù)庫名.mdf和你的數(shù)據(jù)庫名.ldf文件夾拷給別人,最后拿到該文件的人,直接在mssql2005的“SQL Server Management Studio”工具中,用附加數(shù)據(jù)庫的方式添加即可。
2、在你電腦上的“SQL Server Management Studio”工具中找到你要用來傳的數(shù)據(jù)庫名,在上面點右鍵--任務(wù)--備份數(shù)據(jù)庫。為其指定一個目錄后,點保存。之后會生成一個文件,你直接將該文件拷貝給你要給的人。拿到這個備份文件的人,首先要在他電腦的“SQL Server Management Studio”工具中新建一個空數(shù)據(jù)庫,且該數(shù)據(jù)庫名要和你電腦上的那個名稱一致,最后在這個數(shù)據(jù)庫名上點右鍵--任務(wù)--還原--數(shù)據(jù)庫,選中剛才的那個備份文件,點確定也可以還原。
在利用數(shù)據(jù)庫開發(fā)時,常常會將一些表之間的數(shù)據(jù)互相導(dǎo)入。當然可以編寫程序?qū)崿F(xiàn),但是,程序常常需要開發(fā)環(huán)境,不方便。最方便是利用sql語言直接導(dǎo)入。既方便而修改也簡單。以下就是導(dǎo)入的方法。
1、 表結(jié)構(gòu)相同的表,且在同一數(shù)據(jù)庫(如,table1,table2)
Sql :
復(fù)制代碼代碼如下:
insert into table1 select * from table2 (完全復(fù)制)
insert into table1 select distinct * from table2(不復(fù)制重復(fù)紀錄)
insert into table1 select top 5 * from table2 (前五條紀錄)
2、不在同一數(shù)據(jù)庫中(如,db1 table1,db2 table2)
sql:
[code]
insert into db1.table1 select * from db2.table2 (完全復(fù)制)
insert into db1.table1 select distinct * from db2table2(不復(fù)制重復(fù)紀錄)
insert into tdb1.able1 select top 5 * from db2table2 (前五條紀錄)
3、表結(jié)構(gòu)不同的表或復(fù)制部分紀錄(如,dn_user,dn_user2)
a. 建一個新表[DN_UserTemp](在老表dn_user上增加一列)
復(fù)制代碼代碼如下:
CREATE TABLE [DN_UserTemp] ( [Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL)
[Id] [idtype] NOT NULL ,
[Name] [fntype] NOT NULL ,
[Descript] [dstype] NULL ,
[LogonNm] [idtype] NOT NULL ,
[Password] [idtype] NULL ,
[Gender] [char] (1) NULL ,
[Quited] [booltype] NOT NULL,
[OffDuty] [booltype] NOT NULL ,
[Stopped] [booltype] NOT NULL,
[OSBind] [booltype] NOT NULL,
[Domain] [idtype] NULL ,
[EMail] [fntype] NULL ,
[UnitId] [idtype] NULL ,
[BranchId] [idtype] NULL ,
[DutyId] [idtype] NULL ,
[LevelId] [idtype] NULL ,
[ClassId] [idtype] NULL ,
[TypeId] [idtype] NULL ,
[IP] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[ExpireDT] [datetime] NULL ,
[Sort] [int] NOT NULL ,
[AllowDel] [booltype] NOT NULL,
[UnitChief] [booltype] NOT NULL,
[BranchChief] [booltype] NOT NULL ,
[UnitDeputy] [booltype] NOT NULL ,
[BranchDeputy] [booltype] NOT NULL ,
[Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]
b. 將dn_uer2的數(shù)據(jù)拷入dn_usertemp
sql:insert into dn_usertemp select * from dn_user2
c.將dn_usertemp 拷入dn_user
sql:
復(fù)制代碼代碼如下:
declare @i int
declare @j int
declare @Name fntype
set @i=1
select @j=count(*) from dn_usertemp
while @i@j 1
begin
select @Name=Name from dn_usertemp where Num=@i
print @Name
insert into dn_user (Name) values (@Name) where Num=@i
select @i=@i 1
end
MySql數(shù)據(jù)庫復(fù)制表數(shù)據(jù)
將 production 數(shù)據(jù)庫中的 mytbl 表快速復(fù)制為 mytbl_new,2個命令如下:
復(fù)制代碼代碼如下:
CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;
第一個命令是創(chuàng)建新的數(shù)據(jù)表 mytbl_new ,并復(fù)制 mytbl 的數(shù)據(jù)表結(jié)構(gòu)。
第二個命令是講數(shù)據(jù)表 mytbl 中的數(shù)據(jù)復(fù)制到新表 mytbl_new 。
注:production.mytbl是指定要復(fù)制表的數(shù)據(jù)庫名稱為 production 。它是可選的。
假如沒有production. ,MySQL數(shù)據(jù)庫將會假設(shè)mytbl在當前操作的數(shù)據(jù)庫。
另外:在mysql數(shù)據(jù)庫中復(fù)制數(shù)據(jù)為:
復(fù)制代碼代碼如下:
select * into desTable from sourceTable在mssql中支持,在mysql中不支持
insert into desTable select * from sourceTable