有两种办法。
创新互联公司于2013年创立,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站设计、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元奉贤做网站,已为上家服务,为奉贤各地企业和个人服务,联系电话:18982081108
1、在B机器上装mysql。
将A机器上的mysql/data下的你的数据库目录整个拷贝下来。
将B机器上的mysql服务停止。
找到B机器上的mysql/data目录,将你拷贝的目录粘贴进去,然后启动mysql服务就可以了。
2、使用SQL语句备份和恢复
你可以使用SELECT INTO OUTFILE语句备份数据,并用LOAD DATA INFILE语句恢复数据。这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏,你必须要先恢复原来的表的结构。
语法:
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命令进行备份.
如下:
C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot
-p12142022
这种架构一般用在以下三类场景
1. 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的操作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。
2. 用来聚合前端多个 Server 的分片数据。
同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。
3. 汇总并合并多个 Server 的数据
第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?
mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助。
假如我们有以下这样一个表:
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. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)
CREATE TABLE newadmin LIKE admin
2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键,索引。
CREATE TABLE newadmin AS ( SELECT * FROM admin )
3. 如果你要真正的复制一个表。可以用下面的语句。
CREATE TABLE newadmin LIKE admin; INSERT INTO newadmin SELECT * FROM admin;
4. 我们可以操作不同的数据库。
CREATE TABLE newadmin LIKE shop.admin; CREATE TABLE newshop.newadmin LIKE shop.admin;
5. 我们也可以拷贝一个表中其中的一些字段。
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. 我们也可以拷贝一部分数据。
CREATE TABLE newadmin AS ( SELECT * FROM admin WHERE LEFT(username,1) = 's' )
8. 我们也可以在创建表的同时定义表中的字段信息。
先把需求说一下吧。从
MSSQL
中导出一个文章表,需要插入到
PHPCMS
中的内容表
phpcms_content
去,需要做到文章可以发布到不同的栏目中去。也就是说,需要复制一条记录,并修改其
catid,再插入到表尾的位置上。
MySQL复制一条数据并插入的语句:
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.
'
条数据
'.
$r[$i]['aid']
.'
与前一条数据
'.
$r[$i-1]['aid']
.'
重复'.'/';
$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);}}}如果不需要插入