有兩種辦法。
創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元奉賢做網(wǎng)站,已為上家服務(wù),為奉賢各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
1、在B機(jī)器上裝mysql。
將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫目錄整個(gè)拷貝下來。
將B機(jī)器上的mysql服務(wù)停止。
找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動(dòng)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
這種架構(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í)例,那這樣勢必會(huì)涉及到跨庫關(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拷貝表操作我們會(huì)常常用到,下面就為您詳細(xì)介紹幾種mysql拷貝表的方式,希望對您學(xué)習(xí)mysql拷貝表方面能夠有所幫助。
假如我們有以下這樣一個(gè)表:
id username password
-----------------------------------
1 admin *************
2 sameer *************
3 stewart *************
CREATE TABLE IF NOT EXISTS `admin` ( `id` int(6) unsigned NOT NULL auto_increment, `username` varchar(50) NOT NULL default '', `password` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
1. 下面這個(gè)語句會(huì)拷貝表結(jié)構(gòu)到新表newadmin中。 (不會(huì)拷貝表中的數(shù)據(jù))
CREATE TABLE newadmin LIKE admin
2. 下面這個(gè)語句會(huì)拷貝數(shù)據(jù)到新表中。 注意:這個(gè)語句其實(shí)只是把select語句的結(jié)果建一個(gè)表。所以newadmin這個(gè)表不會(huì)有主鍵,索引。
CREATE TABLE newadmin AS ( SELECT * FROM admin )
3. 如果你要真正的復(fù)制一個(gè)表。可以用下面的語句。
CREATE TABLE newadmin LIKE admin; INSERT INTO newadmin SELECT * FROM admin;
4. 我們可以操作不同的數(shù)據(jù)庫。
CREATE TABLE newadmin LIKE shop.admin; CREATE TABLE newshop.newadmin LIKE shop.admin;
5. 我們也可以拷貝一個(gè)表中其中的一些字段。
CREATE TABLE newadmin AS ( SELECT username, password FROM admin )
6. 我們也可以講新建的表的字段改名。
CREATE TABLE newadmin AS ( SELECT id, username AS uname, password AS pass FROM admin )
7. 我們也可以拷貝一部分?jǐn)?shù)據(jù)。
CREATE TABLE newadmin AS ( SELECT * FROM admin WHERE LEFT(username,1) = 's' )
8. 我們也可以在創(chuàng)建表的同時(shí)定義表中的字段信息。
先把需求說一下吧。從
MSSQL
中導(dǎo)出一個(gè)文章表,需要插入到
PHPCMS
中的內(nèi)容表
phpcms_content
去,需要做到文章可以發(fā)布到不同的欄目中去。也就是說,需要復(fù)制一條記錄,并修改其
catid,再插入到表尾的位置上。
MySQL復(fù)制一條數(shù)據(jù)并插入的語句:
INSERT
INTO
phpcms_content
(SELECT
".$r[$i]['aid']."
+
520,
".$r[$i]['cateid'].",
news_catid,
catid,
typeid,
areaid,
title,
style,
thumb,
keywords,
keywords,
posids,
url,
listorder,
status,
userid,
username,
inputtime,
updatetime,
searchid,
islink,
prefix
FROM
phpcms_content
WHERE
contentid
=
'".$r[$i-1]['aid']."')
大致為:insert
into
a
SELECT
id+1,
...(其它字段)
FROM
a
;
下面PHP具體程序:
$query
=
"SELECT
*
FROM
articleincategory
ORDER
BY
ArticleID
";
$result
=
$connector
-
query($query);$i
=
0;while($myrow
=
$connector
-
fetch_array($result)){$r[$i]['aid']
=
$myrow["ArticleID"];
$r[$i]['cateid']
=
$myrow["CategoryID"];$i++;}
for($i
=
0;
$i
count($r);
$i++){if($i
0){if(
$r[$i]['aid']
==
$r[$i-1]['aid']
){echo
'第
'.
$i.
'
條數(shù)據(jù)
'.
$r[$i]['aid']
.'
與前一條數(shù)據(jù)
'.
$r[$i-1]['aid']
.'
重復(fù)'.'/';
$sql
=
"
INSERT
INTO
phpcms_content
(SELECT
".$r[$i]['aid']."
+
520,
".$r[$i]['cateid'].",
news_catid,
catid,
typeid,
areaid,
title,
style,
thumb,
keywords,
keywords,
posids,
url,
listorder,
status,
userid,
username,
inputtime,
updatetime,
searchid,
islink,
prefix
FROM
phpcms_content
WHERE
contentid
=
'".$r[$i-1]['aid']."')
";
//$sql
=
"
INSERT
INTO
phpcms_c_news
(SELECT
".$r[$i]['aid']."
+
520,
template,
titleintact,
content,
groupids_view,
readpoint,
author,
copyfrom,
paginationtype,
maxcharperpage,
sub_title
FROM
phpcms_c_news
WHERE
contentid
=
'".$r[$i-1]['aid']."')
";
echo
$sql.'
/';
//$result
=
$connector
-
query($sql);
//INSERT
INTO
test
(SELECT
id
+
10,
name,
class,
score
FROM
test
WHERE
id
=
'1');}
else
if(
$r[$i]['aid']
!=
$r[$i-1]['aid']
){$sql
=
"
UPDATE
phpcms_content
SET
origin_cateid
=
'".$r[$i]['cateid']."'
WHERE
contentid
=
'".$r[$i]['aid']."'
";
echo
$sql.'
/';
//$result
=
$connector
-
query($sql);}}}如果不需要插入