mysql把一个数据库中的数据复制到另一个数据库中的表 2个表结构相同

mysql把一个数据库中的数据复制到另一个数据库中的表 2个表结构相同,第1张

1、使用软件Navicat就可迁移复制数据,打开Navicat,右键点击左边空白的地方,点击New Connection下的MySQL,创建一个服务器的连接,下面将演示把本地的数据迁移到服务器:

2、在d出的创建新连接的窗口里,输入服务器的IP,数据库账号,密码等,然后就可以连接数据库了:

3、创建好后们打开本地的数据库,点击“Data Transfer”(数据传输),接着d出新的界面:

4、新窗口中在左边选择本地数据库的库,和需要转移的表,可以选择一个,或多个表:

5、然后在右边的目标里,选择服务器的连接,然后选择服务器上的数据库:

6、选择完成后,就开始进行数据转移了,数据量不是很大的,很快就会转移完成的。以上就是mysql中数据复制到另一个数据库的方法:

在Mysql程序中有我自己的一个数据库共5张表,里边数据不算太多。我现在想把他们全部弄到另一台电脑中去,该怎么弄,如果不用其它的软件工具,只用Mysql自已的程序不知可否?

注:不用考虑 *** 作系统。

---------------------------------------------------------------

在dos命令提示符下使用mysqldump命令进行备份.

如下:

C:\Documents and Settings\Administrator>mysqldump yinshi >c:\\backup.txt -uroot

-p12142022

说明:yinshi是我的数据库名,里面有5张表c:\\backup.txt 是我备份出来文件名和路径

-u,-p参数后面跟的分别是用户名和密码.

将你备份出来的文件我这里是backup.txt拷贝到另一台机上,再在dos命令提示符下用mysql命令,进行恢复,如下:

C:\Documents and Settings\Administrator>mysql <c:\\backup.txt -uroot -p12142022

or

mysql>source backup.txt(这里backup.txt在放在data目录下)

---------------------------------------------------------------

如果另一台机器上也安装了mysql,可以直接导入

C:\mysql\bin>mysqldump -h172.20.6.250 -udeveloper -p123456 --opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename

172.20.6.250源服务器ip

developer源服务器连接用户名

---------------------------------------------------------------

有两种办法。

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’

   迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长。

 

     

 

    下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整。

 

    将MySQL数据库导出至转储文件(dump file)

 

    Oracle提供了一个名为mysqldump的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件。您可以使用如下的命令:

 

    1.mysqldump -u root -p --opt [database name] >[database name].sql 

 

    不过,请注意如下几点:

 

    我们可以使用--single-transaction的标志,以避免数据库在导出数据的过程中被锁死。这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据。不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的。

 

    在运行该命令之前,请务必将[database name]替换成您的实际数据库名称。

 

    请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限。

 

    安全加固备份文件

 

    在大多数情况下,数据是一家企业的最重要的资产。因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况。

 

    因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件。在Linux *** 作系统上,请使用以下的命令对已压缩文件进行加密:

 

    1.zip --encrypt dump.zip db.sql 

 

    在压缩开始之前,系统将提示您输入密码。

 

    传输备份文件

 

    至此,我们已经获得了一个加密的转储文件。下面让我们通过网络使用SCP命令,将其传输到新的服务器上:

 

    1.scp /path/to/source-file user@host:/path/to/destination-folder/ 

 

    将MySQL转储导入新服务器

 

    通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:

 

    1.unzip -P your-password dump.zip 

 

    为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件。

 

    您可以使用以下的命令来导入文件:

 

    1.mysql -u root -p newdatabase </path/to/newdatabase.sql 

 

    在新服务器上验证导入的数据

 

    现在我们在新服务器上已经导入了数据库,那么我们就需要一种方法来验证数据的真实存在,并确保没有任何遗漏。

 

    我建议您同时在旧的和新的数据库上运行如下查询,并将获得的结果进行对比。

 

    该查询会在所有的表里计算行数,以显示出新、旧数据库中的数据量。

 

    1.SELECT   

    

    2.TABLE_NAME,   

    

    3.TABLE_ROWS  

 

    4.FROM   

    `

    5.information_schema`.`tables`  

 

    6.WHERE   

    `

    7.table_schema` = 'YOUR_DB_NAME'; 

 

    此外,我建议您检查各个表中数字列的MIN和MAX记录,以确保数据本身是有效的,而不仅仅是看数据的总量(虽然这是查询所唯一能够读出的值)。另一种可供测试的选择是将数据库从新的服务器导出为SQL转储文件,并将其与旧服务器的SQL转储文件做比较。

 

    此外,在应用程序被迁移之前,我建议您先将一个应用程序的实例重定向到新的数据库上,以确认一切运行正常。

 

    另一种导出和导入的选项

 

    我们之所以把该选项放在最后,是因为我们的确不建议您去使用它。

 

    该方法实现起来非常的容易,因为它仅使用一个命令,便能一次性将转储文件导出、传输、并将其数据导入到新的数据库之中。

 

    而它的不足之处在于,一旦其网络链接断掉,您就需要重新启动它了。

 

    因此,我们认为它并不值得被推荐,尤其是在大型数据库中,可能会非常不适用。

 

    当然,如果您非要尝试一下的话,可以使用如下的命令:

 

    1.mysqldump -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword' 

 

    重要提示

 

    请确保在新旧两处,安装有相同官方发行版本的MySQL服务器。否则,你需要按照MySQL网站上的升级说明来进行统一(请参见(https://dev.mysql.com/doc/refman/5.7/en/upgrading.html)。

 

    请确保您在旧的服务器上拥有足够的空间来保存转储文件和压缩文件(应该有db_size×2的空间)。

 

    请确保您在新的服务器上拥有足够的空间来保存加密的和解密的转储文件、并能导入数据库(应该有db_size×3的空间)。

 

    如果您曾经考虑过只是将datadir从一个数据库转移到另一个的话,我建议您最好不要这样做。否则,您会搞乱数据库的内部结构,而且会给将来可能的问题埋下隐患。

 

    在新的服务器配置中,请不要忘了配置诸如innodb_log_file_size这样的重要标志。因为如果忘记了根据新服务器的规格而更新配置的话,很可能会导致严重的性能问题。

 

    在许多情况下,一般升级到新的数据库服务器的初衷是为了提高查询性能。而如果此类升级没有达到预期的改善,那么您就应该考虑去优化SQL查询,而不仅仅是升级硬件那么简单了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6112724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存