如何迁移MySQL数据库

我用的是MySQL数据库
可是电脑中病毒了
只能格机器
请问各位怎么把数据库转移出来,然后装系统在恢复回去???
就是MySQL备份和还原的问题
恳请各位帮帮我
十万火急

    caching_sha2_password认证插件提供更多的密码加密方式,并且在加密方面具有更好的表现,目前MySQL 8.0选用caching_sha2_password作为默认的认证插件,MySQL 5.7的认证插件是MySQL_native_password。如果客户端版本过低,会造成无法识别MySQL 8.0的加密认证方式,最终导致连接问题。

    MySQL存储引擎现在负责提供自己的分区处理程序,而MySQL服务器不再提供通用分区支持,InnoDB和NDB是唯一提供MySQL 8.0支持的本地分区处理程序的存储引擎。 如果分区表用的是别的存储引擎,存储引擎必须进行修改。要么将其转换为InnoDB或NDB,要么删除其分区。通过MySQLdump从5.7获取的备份文件,在导入到8.0环境前,需要确保创建分区表语句中指定的存储引擎必须支持分区,否则会报错。

    MySQL 8.0的默认字符集utf8mb4,可能会导致之前数据的字符集跟新建对象的字符集不一致,为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和校验规则。

    MySQL 8.0启动使用的lower_case_table_names值必须跟初始化时使用的一致。使用不同的设置重新启动服务器会引入与标识符的排序和比较方式不一致的问题。

    < lower_case_table_names >

    https://dev.mysql.com/doc/refman/8.0/en/server-systemvariables.html#sysvar_lower_case_table_names

    要避免MySQL 8.0上的启动失败,MySQL配置文件中的sql_mode系统变量不能包含NO_AUTO_CREATE_USER。

    从MySQL 5.7.24和MySQL 8.0.13开始,MySQLdump从存储程序定义中删除了NO_AUTO_CREATE_USER。必须手动修改使用早期版本的MySQLdump创建的转储文件,以删除NO_AUTO_CREATE_USER。

    在MySQL 8.0.11中,删除了这些不推荐使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。从5.7到8.0的复制场景中,如果语句使用到废弃的SQL Mode会导致复制异常。

    在执行到MySQL 8.0.3或更高版本的in-place升级时,BACKUP_ADMIN权限自动授予具有RELOAD权限的用户。 

    本文对MySQL 5.7到MySQL 8.0的升级过程中出现部分易出现问题进行整理:升级对MySQL版本的要求、升级都做了哪些内容、数据库升级做了哪些步骤以及注意事项,希望对大家版本升级有帮助。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-10
MySQL数据库迁移
MySQL数据库迁移(数据文件直接迁移)
在今年10月下旬的时候,公司的服务器需要迁移,其中涉及到了MySQL数据库迁移。查看了一下MySQL数据文件的大小,接近60G的大小(实际数据并没用那么多)。由于服务器上业务需要,要尽量减少服务器迁移时的损失。所以迁移时间选在了晚上零点开始,而且要尽量减少迁移所用的时间。
在迁移之前有三种方案:
数据库直接导出,拷贝文件到新服务器,在新服务器上导入。
使用【MySQL GUI Tools】中的 MySQLMigrationTool。
数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。
我在我的电脑上用虚拟机测试后,选中了占用时间最少的第三种方案。下面是三种方案的对比:

第一种方案的优点:会重建数据文件,减少数据文件的占用空间。
第一种方案的缺点:时间占用长。(导入导出都需要很长的时间,并且导出后的文件还要经过网络传输,也要占用一定的时间。)
第二种方案的优点:设置完成后传输无人值守
第二种方案的缺点:
设置繁琐。
传输中网络出现异常,不能及时的被发现,并且会一直停留在数据传输的状态不能被停止,如不仔细观察不会被发现异常。
传输相对其他fang时间长。
异常后很难从异常的位置继续传输。
第三种方案的优点:时间占用短,文件可断点传输。操作步骤少。(绝大部分时间都是在文件的网络传输)
第三种方案的缺点:可能引起未知问题,暂时未发现。
下面介绍一下第三种方案d迁移步骤:
保证Mysql版本一致,安装配置基本一致(注意:这里的数据文件和库表结构文件都指定在同一目录data下)
停止两边的Mysql服务(A服务器--迁移-->B服务器)
删除B服务器Mysql的data目录下所有文件
拷贝A服务器Mysql的data目录下除了ib_logfile和.err之外的文件到B服务器data下
启动B服务器的Mysql服务,检测是否发生异常
迁移完成后,服务启动正常,未发现其他异常问题。

备注:经测试,源mysql的安装目录及数据文件目录 可以与 目标Mysql的安装目录及数据文件目录 不一致。
此时,只需要拷贝您所需移动的dbname(如上:pa、testdb)及'mysql'和'ibdata1',即可。
第2个回答  2007-12-20
这个还是MYSQL的官方介绍比较权威,而且不容易出问题,下面我把MYSQL中文帮助文档相对应的部分发给你吧.

MySQL中文参考手册
翻译:晏子(yanzi) 主页:http://linuxdb.yeah.net

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

第一章, 前一章, 下一章, 最后一章,目录.

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

19 用MySQL解决一些常见问题

19.1 数据库复制
一方面复制可以用来增加健壮性和速度。对健壮性,你有2个系统,而如果你出了问题,切换到备份即可。额外的速度通过把非更新查询的一部分送到复制服务器来达到。当然,这只在非更新查询为主时有用,但是这正是一般的情形。

一方面复制计划在不久的未来实现。这将被实现,使得从服务器将以较低优先级的更新和延迟插入被同步到最新数据(这将给读者以比写者更高的优先级)。

MySQL(至今)没有数据库复制,但是有一些如何实现的信息。

复制一个数据库最一般的方法是使用更新日志。见9.2 更新日志。这要求充当一个主数据库(进行数据改变的)并且另一个或多个充当从数据库。要更新一个从数据库,只要运行mysql < update_log。提供对于从数据库适当的主机、用户和口令选项,并且将主数据库的更新日志作为输入。

如果你从未从一张表中删除任何东西,你可以使用一个TIMESTAMP列找出自上一次复制以来(通过比较作你上次做复制的时间)表中哪个行被插入和被改变,且仅拷贝这些行到镜像中。

有可能使用更新日志(对删除)和时间戳记(在两端)做成一个双向更新系统统,但是在这种情况下,当同一数据在两端被改变时,你必须能处理冲突。你可能想保持旧版本以帮助决定什么被更新了。

因为在这种情况中复制用SQL语句进行,你不应该在更新数据库的语句中使用下列函数;他们不能返回与原数据库相同的值:

DATABASE()
GET_LOCK()和RELEASE_LOCK()
RAND()
USER(), SYSTEM_USER()或SESSION_USER()
VERSION()
所有的时间函数可安全地使用,比如如果需要,时间戳记被送到镜像。LAST_INSERT_ID()也可安全地使用。

19.2 数据库备份
因为MySQL表作为文件存储,做一个备份是容易的。为了得到一个一致的备份,在相关的表上做一个LOCK TABLES。见7.24 LOCK TABLES/UNLOCK TABLES句法。你只需一个读锁定;当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表。如果你想要做一个SQL级的备份,你可以SELECT INTO OUTFILE。

备份一个数据库的另一个方法是使用mysqldump程序:

为你的数据库做一个完整的备份:
shell> mysqldump --tab=/path/to/some/dir --opt --full

你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服务器不在更新任何东西。

停止mysqld如果它正在运行,然后以--log-update选项启动它。你将得到一个名为“hostname.n”形式的日志文件, 这里n是随着你每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行mysqldump处后面进行的复制数据库改变的所需信息。
如果你必须恢复一些东西,尝试首先用myisamchk -r恢复你的表。这应该处理所有情况的99.9%。如果myisamchk失败,尝试下列过程:

恢复原来的mysqldump备份。
执行下列命令以再次运行更新日志中的更改:
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql

ls被用来以正确的顺序得到所有的日志文件。

你也可以与SELECT * INTO OUTFILE 'file_name' FROM tbl_name做有选择的备份并且用LOAD DATA INFILE 'file_name' REPLACE ...恢复。为了避免重复记录,在表中你需要一个PRIMARY KEY或UNIQUE键。当在唯一键值上一个新记录与一个老记录重复时,REPLACE关键词使得老记录用一个新记录替代。

参考资料:官方帮助

第3个回答  推荐于2017-09-05
数据库的数据加载进去,正在使用是不能够移出来的..
你把数据整理好之后要把数据库进行分离出来,然后才可以拷贝到其他移动磁盘上
不然,它会提示出磁盘受保护或者文件正在使用...先要把数据库分离在备份。
分离操作:
1.找到你需要备份的数据库
2.单击右键的所有任务
3.分离数据库本回答被提问者采纳

mysql两千万数据怎么迁移?
导入数据库方法一:在本地数据库中导入*.sql文件。方法二:直接在新服务器上执行导入命令。忘记密码解决方案使用mysqld --skip-grant-tables启动MySQL,登录后重置root用户的密码。简化操作配置环境变量,使用脚本自动执行备份与导入操作。通过上述步骤,可以高效地实现MySQL数据迁移,确保数据安全与业务连续性。

MySQL数据库迁移解决方案mysql迁移方案
MySQL数据库迁移可以通过以下几种方法完成:1. 复制:一个最常见的方法是将一个数据库的备份文件复制到另一个服务器上,然后使用SQL查询将它们导入到新的数据库中。2. 导出:可以使用MySQL的“mysqldump”实用程序将指定的数据库导出到纯文本文件中。这些文件可以存储在硬盘或FTP服务器上,然后再导入到其...

数据迁移的四种方法
3、使用第三方数据库迁移工具。mysql有很多第三方的数据库迁移工具,如mysqlhotcopy。此类工具一般支持热迁移(不中断业务,实时写数据),支持物理copy。该方法迁移速度快,对业务中断时间短,但建议迁移多进行模拟测试,避免意外事件。甚至有一些第三方的迁移工具支持异构数据库的迁移。4、使用整盘迁移工具。...

如何使用 MySQL 数据库进行数据迁移?
物理迁移:在数据库非常大时,可直接复制Mysql的物理文件到目标服务器。需注意源服务器与目标服务器Mysql版本一致。具体步骤如下:停止Mysql服务;拷贝源数据文件和日志文件到目标服务器目录;启动Mysql服务;导入数据。其他方式:可以使用Mysql迁移工具,如MySQL Workbench、mysldbcopy等。此外,通过Mysql binlo...

如何复制MySQL数据库或表到另外一台服务器
1、打开SqlYog community Edition,分别在不同的选项卡中打开源数据库服务器与目标数据库服务器,这一点很重。在源数据库服务器选项卡中你将看到所有数据库列表。2、在需要复制迁移的数据库上右击,在弹出菜单中选择“Copy Database to Different Host\/Database”3、在弹出对话框中,我们能看到源数据库...

win10环境下,从C盘迁移mysql数据库中的数据到D盘
在Win10系统中,迁移MySQL数据库中的数据到D盘是常见的系统操作。首先,你需要在MySQL中连接数据库,通过命令行或其他管理工具访问MySQL服务器。接着,查看当前服务器中所有的数据库,找到需要迁移的数据所在数据库,然后查看该数据库中的所有数据表,记录表的结构和数据。为了确保数据迁移的安全性,需要先...

Ubuntu下完美实现迁移MySQL数据库位置_MySQL
为了确保数据安全,需要在Ubuntu系统下迁移MySQL数据库的位置,此过程采用的方法是最可靠的方式,并在此分享步骤。第一步:创建即将存放新数据库的目录。使用以下代码执行操作:mkdir \/media\/hdb1\/db 接着,将原始服务器上的数据库文件复制至新目录。执行以下代码完成复制:cp -dpR \/var\/lib\/mysql\/* \/...

如何实现mysql大表数据迁移一些实用技巧分享mysql迁移大表数据
首先,MySQL大表数据迁移可以使用MySQL提供的ALter操作实现。MySQL ALter操作可以通过改变表结构来迁移数据。该操作的语法如下:`ALTER TABLE tableName MODIFY columnName newColumnType;`其中,tableName指的是表名,columnName指的是表的字段名,newColumnType指改变后的字段类型。在MySQL数据库中进行大表...

如何导出和导入mysql数据(数据迁移)
本文转自如何导出和导入mysql数据(数据迁移)这是其中一种方法,非常简单1. 导出数据库数据 mysqldump -uroot -p dp_db > dumpout.sql其中 root是账户名 dp_db是需要导出的数据库名称dumpout.sql存储导出的数据2. 将导出的数据dumpout.sql放到你的目标机器上(如果是远程目标机器的话,直接将dunmpout...

如何快速导入MySQL数据mysql导入
mysql_query($sql, $connection);最后,还可以使用一些数据迁移工具,例如Data Pump工具,来快速导入MySQL数据。Data Pump是一个强大的MySQL数据迁移工具,能够实现多媒体文件、数据表、视图和其它MySQL相关内容的迁移,可以帮助用户快速地将存放在其它计算机上的数据导入MySQL数据库中。以上就是关于如何快速...

相似回答