189 8069 5689

mysql数据怎么复制 mysql数据库数据文件直接复制

如何对MySQL数据表进行复制,表结构复制

1、复制表结构(语法

成都创新互联是一家专注于成都网站制作、成都网站设计与策划设计,历城网站建设哪家好?成都创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:历城等地区。历城做网站价格咨询:028-86922220

creata

table

旧表

select

*

from

新表)

create

table

t1(

id

int

unsigned

auto_increment

primary

key,

name

varchar(32)

not

null

default

'',

pass

int

not

null

default

);

desc

查看表结构

创建表

t2

同时复制表

t1

表结构

create

table

t2

select

*

from

t1;

desc

t2

查看表结构

注意:两张的表字段结构一样,但是

主键

primary

key

自增

auto_increment

没有了,所以这种方法不推荐大家使用,那如何才能创建出两张完全一样的表呢,办法肯定有的,如下面语句。

create

table

t2

like

t1;

这就可以创建一张

t2

t1

完全一样的表了。

2、指定字段复制表结构

语法:

create

table

新表

select

字段1,字段2

from

旧表

3、复制表中数据

假设要把表

t1

中的数据全部复制到表

t2中

insert

into

t2

select

* from

t1;

如果只想复制某个字段

insert

into

t2(字段1,字段2)

select

字段1,字段2 from

t1;

如何复制mysql数据库到另一台电脑上?

这种架构一般用在以下三类场景

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 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。

处理方式:

1. 在原库中批量修改对象所有者为导入账号或修改 SQL SECURITY 为 Invoker;2. 使用 mysqldump 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。

二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个 DEFINER 和一个 SQL SECURITY 的属性,如下所示:

--视图定义CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v_test

--函数定义CREATE DEFINER=`root`@`%` FUNCTION `f_test()` RETURNS varchar(100) SQL SECURITY DEFINER

--存储过程定义CREATE DEFINER=`root`@`%` PROCEDURE `p_test`() SQL SECURITY DEFINER

--触发器定义CREATE DEFINER=`root`@`%` trigger t_test

--事件定义CREATE DEFINER=`root`@`%` EVENT `e_test`

DEFINER:对象定义者,在创建对象时可以手动指定用户,不指定的话默认为当前连接用户;

SQL SECURITY:指明以谁的权限来执行该对象,有两个选项,一个为 DEFINER,一个为 INVOKER,默认情况下系统指定为 DEFINER;DEFINER:表示按定义者的权限来执行; INVOKER:表示按调用者的权限来执行。

如果导入账号具有 SUPER 权限,即使对象的所有者账号不存在,也可以导入成功,但是在查询对象时,如果对象的 SQL SECURITY 为 DEFINER,则会报账号不存在的报错。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist

改写好处:1. 可以避免还原时遇到 DEFINER 报错相关问题;2. 根据输出信息知道备份是否正常进行,防止备份中遇到元数据锁无法获取然后一直卡住的情况。

怎么才能完整复制MySQL数据库

有两种办法。

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

MySQL如何复制到移动硬盘上

可以利用光盘引导启动进入PE系统后完整拷贝硬盘内的所有数据。

所有东西完整导出到移动硬盘可以通过硬盘克隆来完成。详细操作步骤如下:

1、安装并打开软件,主页面找到“克隆”栏,选择“磁盘克隆”。

2、选择源磁盘(要导出的磁盘)

3、选择目标磁盘(要导入的磁盘)

4、选择好两个磁盘,点击“开始备份”。

5、在备份详情页面显示备份进度和详细过程。

6、进度条100%后,点击“完成”就导出所有的内容到移动硬盘了。

补充说明:移动硬盘缺点:损毁基本无法恢复:除此之外同固态硬盘一样,在硬受到物理损坏时数据是无法恢复的,不过这种情况只是小概率事件,基本不会遇到。

怎么快速复制千万级的Mysql数据库表

我google了一下大概有一下几个方法,

1.复制表结构及数据到新表

CREATE TABLE 新表 SELECT * FROM 旧表

2.只复制表结构到新表

CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2

即:让WHERE条件不成立.

3.复制旧表的数据到新表(假设两个表结构一样)

INSERT INTO 新表 SELECT * FROM 旧表

4.复制旧表的数据到新表(假设两个表结构不一样)

INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表


网站栏目:mysql数据怎么复制 mysql数据库数据文件直接复制
当前路径:http://cdxtjz.cn/article/hjgjoo.html

其他资讯