有兩種辦法。 1、在B機(jī)器上裝mysql。 將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫目錄整個(gè)拷貝下來。 將B機(jī)器上的mysql服務(wù)停止。 找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動mysql服務(wù)就可以了。 2、使用SQL語句備份和恢復(fù) 你可以使用SELECT INTO OUTFILE語句備份數(shù)據(jù),并用LOAD DATA INFILE語句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來的表的結(jié)構(gòu)。 語法: 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
創(chuàng)新互聯(lián)一直在為企業(yè)提供服務(wù),多年的磨煉,使我們在創(chuàng)意設(shè)計(jì),成都全網(wǎng)營銷到技術(shù)研發(fā)擁有了開發(fā)經(jīng)驗(yàn)。我們擅長傾聽企業(yè)需求,挖掘用戶對產(chǎn)品需求服務(wù)價(jià)值,為企業(yè)制作有用的創(chuàng)意設(shè)計(jì)體驗(yàn)。核心團(tuán)隊(duì)擁有超過10年以上行業(yè)經(jīng)驗(yàn),涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)成都西云數(shù)據(jù)中心、app開發(fā)定制、手機(jī)移動建站、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)整合營銷。
如果從庫上表 t 數(shù)據(jù)與主庫不一致,導(dǎo)致復(fù)制錯(cuò)誤,整個(gè)庫的數(shù)據(jù)量很大,重做從庫很慢,如何單獨(dú)恢復(fù)這張表的數(shù)據(jù)?通常認(rèn)為是不能修復(fù)單表數(shù)據(jù)的,因?yàn)樯婕暗礁鞅頎顟B(tài)不一致的問題。下面就列舉備份單表恢復(fù)到從庫會面臨的問題以及解決辦法:
場景 1
如果復(fù)制報(bào)錯(cuò)后,沒有使用跳過錯(cuò)誤、復(fù)制過濾等方法修復(fù)主從復(fù)制。主庫數(shù)據(jù)一直在更新,從庫數(shù)據(jù)停滯在報(bào)錯(cuò)狀態(tài)(假設(shè) GTID 為 aaaa:1-100)。
修復(fù)步驟:
在主庫上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000);
恢復(fù)到從庫;
啟動復(fù)制。
這里的問題是復(fù)制起始位點(diǎn)是 aaaa:101,從庫上表 t 的數(shù)據(jù)狀態(tài)是領(lǐng)先其他表的。aaaa:101-10000 這些事務(wù)中只要有修改表 t 數(shù)據(jù)的事務(wù),就會導(dǎo)致復(fù)制報(bào)錯(cuò) ,比如主鍵沖突、記錄不存在(而 aaaa:101 這個(gè)之前復(fù)制報(bào)錯(cuò)的事務(wù)必定是修改表 t 的事務(wù))
解決辦法:啟動復(fù)制時(shí)跳過 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 時(shí)停止復(fù)制(此時(shí)從庫上所有表的數(shù)據(jù)都在同一狀態(tài),是一致的);
START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
4. 刪除復(fù)制過濾,正常啟動復(fù)制。
注意事項(xiàng):這里要用 mysqldump --single-transaction --master-data=2,記錄備份快照對應(yīng)的 GTID
場景 2
如果復(fù)制報(bào)錯(cuò)后,使用跳過錯(cuò)誤、復(fù)制過濾等辦法修復(fù)了主從復(fù)制。主、從庫數(shù)據(jù)一直在更新。
修復(fù)步驟:
在主庫上備份表 t (假設(shè)備份快照 GTID為 aaaa:1-10000);
停止從庫復(fù)制,GTID為 aaaa:1-20000;
恢復(fù)表 t 到從庫;
啟動復(fù)制。
這里的問題是復(fù)制起始位點(diǎn)是 aaaa:20001,aaaa:10000-20000 這些事務(wù)將不會在從庫上回放,如果這里面有修改表 t 數(shù)據(jù)的事務(wù),從庫上將丟失這部分?jǐn)?shù)據(jù)。
解決辦法:從備份開始到啟動復(fù)制,鎖定表 t,保證 aaaa:10000-20000 中沒有修改表 t 的事務(wù)。
正確修復(fù)步驟:
對表 t 加讀鎖;
在主庫上備份表 t;
停止從庫復(fù)制,恢復(fù)表 t;
啟動復(fù)制;
解鎖表 t。
如果是大表,這里可以用可傳輸表空間方式備份、恢復(fù)表,減少鎖表時(shí)間。
這種架構(gòu)一般用在以下三類場景
1. 備份多臺 Server 的數(shù)據(jù)到一臺如果按照數(shù)據(jù)切分方向來講,那就是垂直切分。比如圖 2,業(yè)務(wù) A、B、C、D 是之前拆分好的業(yè)務(wù),現(xiàn)在需要把這些拆分好的業(yè)務(wù)匯總起來備份,那這種需求也很適用于多源復(fù)制架構(gòu)。實(shí)現(xiàn)方法我大概描述下:業(yè)務(wù) A、B、C、D 分別位于 4 臺 Server,每臺 Server 分別有一個(gè)數(shù)據(jù)庫來隔離前端的業(yè)務(wù)數(shù)據(jù),那這樣,在從庫就能把四臺業(yè)務(wù)的數(shù)據(jù)全部匯總起來,而不需要做額外的操作。那沒有多源復(fù)制之前,要實(shí)現(xiàn)這類需求,只能在匯總機(jī)器上搭建多個(gè) MySQL 實(shí)例,那這樣勢必會涉及到跨庫關(guān)聯(lián)的問題,不但性能急劇下降,管理多個(gè)實(shí)例也沒有單臺來的容易。
2. 用來聚合前端多個(gè) Server 的分片數(shù)據(jù)。
同樣,按照數(shù)據(jù)切分方向來講,屬于水平切分。比如圖 3,按照年份拆分好的數(shù)據(jù),要做一個(gè)匯總數(shù)據(jù)展現(xiàn),那這種架構(gòu)也非常合適。實(shí)現(xiàn)方法稍微復(fù)雜些:比如所有 Server 共享同一數(shù)據(jù)庫和表,一般為了開發(fā)極端透明,前端配置有分庫分表的中間件,比如愛可生的 DBLE。
3. 匯總并合并多個(gè) Server 的數(shù)據(jù)
第三類和第一種場景類似。不一樣的是不僅僅是數(shù)據(jù)需要匯總到目標(biāo)端,還得合并這些數(shù)據(jù),這就比第一種來的相對復(fù)雜些。比如圖 4,那這樣的需求,是不是也適合多源復(fù)制呢?答案是 YES。那具體怎么做呢?
在Mysql程序中有我自己的一個(gè)數(shù)據(jù)庫共5張表,里邊數(shù)據(jù)不算太多。我現(xiàn)在想把他們?nèi)颗搅硪慌_電腦中去,該怎么弄,如果不用其它的軟件工具,只用Mysql自已的程序不知可否??
注:不用考慮操作系統(tǒng)。?
---------------------------------------------------------------?
在dos命令提示符下使用mysqldump命令進(jìn)行備份.?
如下:?
C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot?
-p12142022?
說明:yinshi是我的數(shù)據(jù)庫名,里面有5張表; c:\\backup.txt 是我備份出來文件名和路徑;?
-u,-p參數(shù)后面跟的分別是用戶名和密碼.?
將你備份出來的文件我這里是backup.txt拷貝到另一臺機(jī)上,再在dos命令提示符下用mysql命令,進(jìn)行恢復(fù),如下:?
C:\Documents and Settings\Administratormysql c:\\backup.txt -uroot -p12142022?
or?
mysqlsource backup.txt;(這里backup.txt在放在data目錄下)?
---------------------------------------------------------------?
如果另一臺機(jī)器上也安裝了mysql,可以直接導(dǎo)入?
C:\mysql\binmysqldump -h172.20.6.250 -udeveloper -p123456 --opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename?
172.20.6.250源服務(wù)器ip?
developer源服務(wù)器連接用戶名?
---------------------------------------------------------------?
有兩種辦法。?
1、在B機(jī)器上裝mysql。?
將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫目錄整個(gè)拷貝下來。?
將B機(jī)器上的mysql服務(wù)停止。?
找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動mysql服務(wù)就可以了。?
2、使用SQL語句備份和恢復(fù)?
你可以使用SELECT INTO OUTFILE語句備份數(shù)據(jù),并用LOAD DATA INFILE語句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來的表的結(jié)構(gòu)。?
語法:?
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、在“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ù)庫名,在上面點(diǎn)右鍵--任務(wù)--備份數(shù)據(jù)庫。為其指定一個(gè)目錄后,點(diǎn)保存。之后會生成一個(gè)文件,你直接將該文件拷貝給你要給的人。拿到這個(gè)備份文件的人,首先要在他電腦的“SQL Server Management Studio”工具中新建一個(gè)空數(shù)據(jù)庫,且該數(shù)據(jù)庫名要和你電腦上的那個(gè)名稱一致,最后在這個(gè)數(shù)據(jù)庫名上點(diǎn)右鍵--任務(wù)--還原--數(shù)據(jù)庫,選中剛才的那個(gè)備份文件,點(diǎn)確定也可以還原。
1、使用軟件Navicat就可遷移復(fù)制數(shù)據(jù)庫,打開Navicat,右鍵點(diǎn)擊左邊空白的地方,點(diǎn)擊New Connection下的MySQL,創(chuàng)建一個(gè)服務(wù)器的連接,下面將演示把本地的數(shù)據(jù)遷移到服務(wù)器:
2、在彈出的創(chuàng)建新連接的窗口里,輸入服務(wù)器的IP,數(shù)據(jù)庫賬號,密碼等,然后就可以連接數(shù)據(jù)庫了:
3、創(chuàng)建好后們打開本地的數(shù)據(jù)庫,點(diǎn)擊“Data Transfer”(數(shù)據(jù)傳輸),接著彈出新的界面:
4、新窗口中在左邊選擇本地?cái)?shù)據(jù)庫的庫,和需要轉(zhuǎn)移的表,可以選擇一個(gè),或多個(gè)表:
5、然后在右邊的目標(biāo)里,選擇服務(wù)器的連接,然后選擇服務(wù)器上的數(shù)據(jù)庫:
6、選擇完成后,就開始進(jìn)行數(shù)據(jù)轉(zhuǎn)移了,數(shù)據(jù)量不是很大的,很快就會轉(zhuǎn)移完成的。以上就是mysql中數(shù)據(jù)復(fù)制到另一個(gè)數(shù)據(jù)庫的方法: