如何在mysql中制作数据库的精确副本?
create database test1 from test ???????
如果无法做到这一点,我如何将表从一个数据库复制到另一个数据库??
答案 0 :(得分:6)
一种方法是从源数据库中获取转储并将其导入另一个数据库,如下所示:
mysqldump src_db > src.sql
mysql dest_db < src.sql
答案 1 :(得分:2)
你不能说。您需要创建新数据库,创建表,然后执行插入,即插入INSERT INTO newdatabase
。table1
SELECT * FROM olddatabase
。table1
;
或者,您可以对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)。它一次锁定所有表。