如果操作系統(tǒng)兼容性強(qiáng)的話(huà),mysql數(shù)據(jù)直接復(fù)制數(shù)據(jù)可以用。
在梅州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營(yíng)銷(xiāo)網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),梅州網(wǎng)站建設(shè)費(fèi)用合理。
直接復(fù)制數(shù)據(jù)的步驟如下:
復(fù)制一定前必須關(guān)閉MYSQL程序(不關(guān)閉程序,復(fù)制出的表易出問(wèn)題,復(fù)制不全面);
選中要復(fù)制的數(shù)據(jù)右鍵復(fù)制或者ctrl+c后粘貼即可。
如果操作系統(tǒng)不兼容的話(huà),mysql數(shù)據(jù)直接復(fù)制數(shù)據(jù)不可以用。
最好的方法是使用導(dǎo)入數(shù)據(jù)的方法,導(dǎo)入數(shù)據(jù)的步驟如下:
選中數(shù)據(jù)庫(kù)mydata;
右擊出現(xiàn)“運(yùn)行sql文件”;
把需要導(dǎo)入的數(shù)據(jù)庫(kù)文件,后綴名是sql選好,直接導(dǎo)入即可。
但是這種方法對(duì)大數(shù)據(jù)量的表進(jìn)行操作非常慢。因?yàn)椴粌H導(dǎo)出了數(shù)據(jù)同時(shí)導(dǎo)出了表結(jié)構(gòu)。
在針對(duì)大數(shù)據(jù)量的表時(shí),可以使用infile導(dǎo)入數(shù)據(jù),導(dǎo)入時(shí)間會(huì)很快,命令如下:
mysqlload data infile '文件路徑' into table 表名;
兩種方法:
1、在“SQL Server 配置管理器”中將你的SQL SERVER服務(wù)停止,然后將你安裝數(shù)據(jù)庫(kù)文件中的data文件夾下的 你的數(shù)據(jù)庫(kù)名.mdf和你的數(shù)據(jù)庫(kù)名.ldf文件夾拷給別人,最后拿到該文件的人,直接在mssql2005的“SQL Server Management Studio”工具中,用附加數(shù)據(jù)庫(kù)的方式添加即可。
2、在你電腦上的“SQL Server Management Studio”工具中找到你要用來(lái)傳的數(shù)據(jù)庫(kù)名,在上面點(diǎn)右鍵--任務(wù)--備份數(shù)據(jù)庫(kù)。為其指定一個(gè)目錄后,點(diǎn)保存。之后會(huì)生成一個(gè)文件,你直接將該文件拷貝給你要給的人。拿到這個(gè)備份文件的人,首先要在他電腦的“SQL Server Management Studio”工具中新建一個(gè)空數(shù)據(jù)庫(kù),且該數(shù)據(jù)庫(kù)名要和你電腦上的那個(gè)名稱(chēng)一致,最后在這個(gè)數(shù)據(jù)庫(kù)名上點(diǎn)右鍵--任務(wù)--還原--數(shù)據(jù)庫(kù),選中剛才的那個(gè)備份文件,點(diǎn)確定也可以還原。
1、在B機(jī)器上裝mysql。
將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫(kù)目錄整個(gè)拷貝下來(lái)。
將B機(jī)器上的mysql服務(wù)停止。
找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動(dòng)mysql服務(wù)就可以了。
2、使用SQL語(yǔ)句備份和恢復(fù)
你可以使用SELECT INTO OUTFILE語(yǔ)句備份數(shù)據(jù),并用LOAD DATA INFILE語(yǔ)句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來(lái)的表的結(jié)構(gòu)。
語(yǔ)法:
SELECT * INTO {OUTFILE | DUMPFILE} ’file_name’ FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ’file_name.txt’ [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE ’file_name’
有兩種辦法。
1、在B機(jī)器上裝mysql。
將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫(kù)目錄整個(gè)拷貝下來(lái)。
將B機(jī)器上的mysql服務(wù)停止。
找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動(dòng)mysql服務(wù)就可以了。
2、使用SQL語(yǔ)句備份和恢復(fù)
你可以使用SELECT INTO OUTFILE語(yǔ)句備份數(shù)據(jù),并用LOAD DATA INFILE語(yǔ)句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來(lái)的表的結(jié)構(gòu)。
語(yǔ)法:
SELECT * INTO {OUTFILE | DUMPFILE} ’file_name’ FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ’file_name.txt’ [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE ’file_name’
在dos命令提示符下使用mysqldump命令進(jìn)行備份.
如下:
C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot
-p12142022
如果從庫(kù)上表 t 數(shù)據(jù)與主庫(kù)不一致,導(dǎo)致復(fù)制錯(cuò)誤,整個(gè)庫(kù)的數(shù)據(jù)量很大,重做從庫(kù)很慢,如何單獨(dú)恢復(fù)這張表的數(shù)據(jù)?通常認(rèn)為是不能修復(fù)單表數(shù)據(jù)的,因?yàn)樯婕暗礁鞅頎顟B(tài)不一致的問(wèn)題。下面就列舉備份單表恢復(fù)到從庫(kù)會(huì)面臨的問(wèn)題以及解決辦法:
場(chǎng)景 1
如果復(fù)制報(bào)錯(cuò)后,沒(méi)有使用跳過(guò)錯(cuò)誤、復(fù)制過(guò)濾等方法修復(fù)主從復(fù)制。主庫(kù)數(shù)據(jù)一直在更新,從庫(kù)數(shù)據(jù)停滯在報(bào)錯(cuò)狀態(tài)(假設(shè) GTID 為 aaaa:1-100)。
修復(fù)步驟:
在主庫(kù)上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000);
恢復(fù)到從庫(kù);
啟動(dòng)復(fù)制。
這里的問(wèn)題是復(fù)制起始位點(diǎn)是 aaaa:101,從庫(kù)上表 t 的數(shù)據(jù)狀態(tài)是領(lǐng)先其他表的。aaaa:101-10000 這些事務(wù)中只要有修改表 t 數(shù)據(jù)的事務(wù),就會(huì)導(dǎo)致復(fù)制報(bào)錯(cuò) ,比如主鍵沖突、記錄不存在(而 aaaa:101 這個(gè)之前復(fù)制報(bào)錯(cuò)的事務(wù)必定是修改表 t 的事務(wù))
解決辦法:?jiǎn)?dòng)復(fù)制時(shí)跳過(guò) aaaa:101-10000 這些事務(wù)中修改表 t 的事務(wù)。
正確的修復(fù)步驟:
1. 在主庫(kù)上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000),恢復(fù)到從庫(kù);
2. 設(shè)置復(fù)制過(guò)濾,過(guò)濾表 t:
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');
3. 啟動(dòng)復(fù)制,回放到 aaaa:10000 時(shí)停止復(fù)制(此時(shí)從庫(kù)上所有表的數(shù)據(jù)都在同一狀態(tài),是一致的);
START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
4. 刪除復(fù)制過(guò)濾,正常啟動(dòng)復(fù)制。
注意事項(xiàng):這里要用 mysqldump --single-transaction --master-data=2,記錄備份快照對(duì)應(yīng)的 GTID
場(chǎng)景 2
如果復(fù)制報(bào)錯(cuò)后,使用跳過(guò)錯(cuò)誤、復(fù)制過(guò)濾等辦法修復(fù)了主從復(fù)制。主、從庫(kù)數(shù)據(jù)一直在更新。
修復(fù)步驟:
在主庫(kù)上備份表 t (假設(shè)備份快照 GTID為 aaaa:1-10000);
停止從庫(kù)復(fù)制,GTID為 aaaa:1-20000;
恢復(fù)表 t 到從庫(kù);
啟動(dòng)復(fù)制。
這里的問(wèn)題是復(fù)制起始位點(diǎn)是 aaaa:20001,aaaa:10000-20000 這些事務(wù)將不會(huì)在從庫(kù)上回放,如果這里面有修改表 t 數(shù)據(jù)的事務(wù),從庫(kù)上將丟失這部分?jǐn)?shù)據(jù)。
解決辦法:從備份開(kāi)始到啟動(dòng)復(fù)制,鎖定表 t,保證 aaaa:10000-20000 中沒(méi)有修改表 t 的事務(wù)。
正確修復(fù)步驟:
對(duì)表 t 加讀鎖;
在主庫(kù)上備份表 t;
停止從庫(kù)復(fù)制,恢復(fù)表 t;
啟動(dòng)復(fù)制;
解鎖表 t。
如果是大表,這里可以用可傳輸表空間方式備份、恢復(fù)表,減少鎖表時(shí)間。