复制整个MySQL数据库

复制整个MySQL数据库,mysql,database,linux,Mysql,Database,Linux,是否可以在linux服务器上复制整个MySQL数据库 我知道我可以使用导出和导入,但原始数据库的大小>25MB,因此这并不理想 是否可以使用mysqldump或直接复制数据库文件?我有时会执行mysqldump并将输出导入另一个mysql命令,以将其导入另一个数据库 mysqldump --add-drop-table -u wordpress -p wordpress | mysql -u wordpress -p wordpress_backup 到远程服务器 mysqldump mydb

是否可以在linux服务器上复制整个MySQL数据库

我知道我可以使用导出和导入,但原始数据库的大小>25MB,因此这并不理想


是否可以使用mysqldump或直接复制数据库文件?

我有时会执行mysqldump并将输出导入另一个mysql命令,以将其导入另一个数据库

mysqldump --add-drop-table -u wordpress -p wordpress | mysql -u wordpress -p wordpress_backup
到远程服务器

mysqldump mydbname | ssh host2 "mysql mydbcopy"
到本地服务器

mysqldump mydbname | mysql mydbcopy

首先创建重复数据库:

CREATE DATABASE duplicateddb;
确保用户和权限都已到位,并且:

 mysqldump -u admin -p originaldb | mysql -u backup -pPassword duplicateddb; 

这是我写的一个windows bat文件,它结合了Vincent和Paul的建议。它会提示用户输入源和目标名称

只需修改顶部的变量即可设置到可执行文件/数据库端口的正确路径

样本输出:
这对InnoDB不起作用。 仅当您尝试复制MyISAM数据库时,才使用此解决方案

如果可以在备份期间锁定表,或者在数据库导入期间暂停MySQL,那么mysqlhotcopy的工作速度可能会更快

例如。 备份: 恢复: mysqlhotcopy还可以通过SSH(scp)传输文件,并可能直接传输到复制数据库目录

例如。
在具有数据的系统中创建一个mysqldump文件,并使用管道将此mysqldump文件作为新系统的输入。可以使用ssh命令连接新系统

mysqldump -u user -p'password' db-name | ssh user@some_far_place.com mysql -u user -p'password' db-name

在-p[密码]之间没有空格

复制数据库

# mysqldump -u root -p password db1 > dump.sql
# mysqladmin -u root -p password create db2
# mysql -u root -p password db2 < dump.sql
#mysqldump-u root-p password db1>dump.sql
#mysqladmin-u root-p密码创建db2
#mysql-u root-p密码db2
在命令提示符下,从mysql外壳外部执行此操作:

# mysqldump -u root -p password db1 > dump.sql
# mysqladmin -u root -p password create db2
# mysql -u root -p password db2 < dump.sql
#mysqldump-u root-p password db1>dump.sql
#mysqladmin-u root-p密码创建db2
#mysql-u root-p密码db2
这对我来说是最好的办法。如果压缩“dump.sql”,您可以将其作为压缩备份存储。酷!对于具有Innodb表的1GB数据库,创建“dump.sql”大约需要一分钟,将数据转储到新的DB db2大约需要三分钟


直接复制hole db目录(mysql/data/db1)对我来说不起作用,我想是因为InnoDB表

在MySQL中,您可以将所有表文件复制到MySQL树中的另一个目录中

mysql cli-创建数据库db2


linux cli-cp db1 db2

对我来说,下面几行代码就做到了

mysqldump --quote-names -q -u username1 --password='password1' originalDB | mysql -u username2 --password='password2' duplicateDB

我不认为在第二个命令行的第二部分中“-p”和“password”之间应该有空格不应该有空格!答案是这样的。mysql手册页上说:--password[=password],-p[password]连接到服务器时要使用的密码。如果使用短选项形式(-p),则选项和密码之间不能有空格。如果省略命令行上--password或-p选项后面的密码值,mysql会提示输入一个。在命令行上指定密码应该被认为是不安全的。见第6.1.2.1节,“P的最终用户指南……请注意,默认情况下,mysqldump备份触发器,但不备份存储过程,请添加
--routines
作为本例的选项。如果您这样做,并且不希望此用户的MySQL密码在bash历史记录中可用,执行后,从
~/.bash\u历史文件中编辑它。或者您也可以将第一个命令的结果输出到一个临时文件,然后执行以下命令(这将提示您密码)
mysql-p-u admin duplicatedb
。这个答案当然有效,但问题是“我知道我可以使用导出和导入,但原始数据库大于25MB,因此这并不理想“这个答案表明基本上是导出和导入。当我使用它时,我得到一个错误,即dest数据库不存在。因此,您还需要一个创建数据库行。您可以添加一个如何工作的描述,例如管道的使用吗?错误1064(42000):您的SQL语法有错误;,您好,在本地服务器中使用命令时显示错误,请帮助仅适用于MyISAM,对吗?过去那些糟糕的日子已经过去了,对历史书来说是一个好日子,但不再有用了。
# mysqlhotcopy -u root -p password db_name /var/lib/mysql/duplicate_db_name
mysqldump -u user -p'password' db-name | ssh user@some_far_place.com mysql -u user -p'password' db-name
# mysqldump -u root -p password db1 > dump.sql
# mysqladmin -u root -p password create db2
# mysql -u root -p password db2 < dump.sql
# mysqldump -u root -p password db1 > dump.sql
# mysqladmin -u root -p password create db2
# mysql -u root -p password db2 < dump.sql
mysqldump --quote-names -q -u username1 --password='password1' originalDB | mysql -u username2 --password='password2' duplicateDB