mysql:我如何制作整个数据库的副本?

时间:2010-07-22 18:45:10

标签: sql mysql

如何在mysql中制作数据库的精确副本?

create database test1 from test ???????

如果无法做到这一点,我如何将表从一个数据库复制到另一个数据库??

3 个答案:

答案 0 :(得分:6)

一种方法是从源数据库中获取转储并将其导入另一个数据库,如下所示:

mysqldump src_db > src.sql
mysql dest_db < src.sql

答案 1 :(得分:2)

你不能说。您需要创建新数据库,创建表,然后执行插入,即插入INSERT INTO newdatabasetable1 SELECT * FROM olddatabasetable1;

或者,您可以对sql文件执行完整数据库转储,然后将此文件转储到新数据库中。

第三种选择(如果你拥有它,最简单)是PhpMyAdmin的复制数据库功能。它创建新数据库,表格并自动插入数据。

答案 2 :(得分:2)

mysqlhotcopy db_name /path/to/new_directory

请记住,在复制表时,将阻止用户更新表,因为mysqlhotcopy会锁定它们。

我不知道mysqlhotcopy是一次锁定它们还是一次锁定它们。如果它一次锁定它们,则所有用户都将被阻止,直到复制完成。

如果用户在修改它们时一次锁定一个,则存在表格彼此不同步的风险。像这样:

mysqlhotcopy锁定表a,并开始复制表a 客户端附加到数据库并尝试更新表a和c。由于桌子上的锁定,它暂时被阻止了。 mysqlhotcopy完成复制,解锁表a,锁定表b,并开始复制表b 客户端对表a和c进行相关更新。 mysqlhotcopy完成复制,解锁表b,锁定表c和复制表c

问题是表a的复制版本是在客户端修改之前,而表c的版本是在客户端修改之后,这就是备份 处于不一致的状态。

<强>更新 我只是看了mysqlhotcopy(MySQL 4.1.9)。它一次锁定所有表。