mysql数据库迁移的方法是什么

70次阅读
没有评论

共计 3336 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章主要介绍了 mysql 数据库迁移的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇 mysql 数据库迁移的方法是什么文章都会有所收获,下面我们一起来看看吧。

简介

 数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外, 
验证迁移数据的完整性   和   退役原来旧的数据存储  ,也被认为是整个数据迁移过程的一部分。数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或升级,应用程序迁移,网站集成,灾难恢复和数据中心迁移。根据不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL 数据迁移方案大致可以分为物理迁移和逻辑迁移两类。通常以尽可能自动化的方式执行,从而将人力资源从繁琐的任务中解放出来 

迁移方案

 物理迁移: 
物理迁移适用于大数据量下的整体迁移。使用物理迁移方案的优点是比较快速,但需要停机迁移并且要求  MySQL  版本及配置必须和原服务器相同,也可能引起未知问题。物理迁移包括拷贝数据文件和使用  XtraBackup  备份工具两种。不同服务器之间可以采用物理迁移,我们可以在新的服务器上安装好同版本的数据库软件,创建好相同目录,建议配置文件也要和原数据库相同,然后从原数据库方拷贝来数据文件及日志文件,配置好文件组权限,之后在新服务器这边使用  mysqld  命令启动数据库。逻辑迁移: 
逻辑迁移适用范围更广,无论是   部分迁移   还是   全量迁移  ,都可以使用逻辑迁移。逻辑迁移中使用最多的就是通过  mysqldump  等备份工具。

迁移注意点

1.  相同版本的数据库之间迁移注意点
指的是在主版本号相同的 MySQL 数据库之间进行数据库移动。方式 1:  因为迁移前后 MySQL 数据库的   主版本号相同  ,所以可以通过复制数据库目录来实现数据库迁移,但是物理迁移方式只适用于 MyISAM 引擎的表。对于 InnoDB 表,不能用直接复制文件的方式备份数据库。方式 2:  最常见和最安全的方式是使用  mysqldump 命令   导出数据,然后在目标数据库服务器中使用 MySQL 命令导入。# host1 的机器中备份所有数据库, 并将数据库迁移到名为 host2 的机器上
mysqldump –h host1 –uroot –p –-all-databases|mysql –h host2 –uroot –p
# “|”符号表示管道,其作用是将 mysqldump 备份的文件给 mysql 命令;“--all-databases”表示要迁移所有的数据库。通过这种方式可以直接实现迁移
2.  不同版本的数据库之间迁移注意点
例如,原来很多服务器使用 5.7 版本的 MySQL 数据库,在 8.0 版本推出来以后,改进了 5.7 版本的很多缺陷,因此需要把数据库升级到 8.0 版本
旧版本与新版本的 MySQL 可能使用不同的默认字符集,例如有的旧版本中使用 latin1 作为默认字符集,而最新版本的 MySQL 默认字符集为 utf8mb4。如果数据库中有中文数据,那么迁移过程中需要对默认字符集进行修改,不然可能无法正常显示数据。高版本的 MySQL 数据库通常都会   兼容低版本  ,因此可以从低版本的 MySQL 数据库迁移到高版本的 MySQL 数据库。3.  不同数据库之间迁移注意点
不同数据库之间迁移是指从其他类型的数据库迁移到 MySQL 数据库,或者从 MySQL 数据库迁移到其他类型的数据库。这种迁移没有普适的解决方法。迁移之前,需要了解不同数据库的架构,  比较它们之间的差异  。不同数据库中定义相同类型的数据的关键字可能会不同  。例如,MySQL 中日期字段分为 DATE 和 TIME 两种,而 ORACLE 日期字段只有 DATE;SQLServer 数据库中有 ntext、Image 等数据类型,MySQL 数据库没有这些数据类型;MySQL 支持的 ENUM 和 SET 类型,这些 SQL Server 数据库不支持。另外,数据库厂商并没有完全按照 SQL 标准来设计数据库系统,导致不同的数据库系统的  SQL 语句   有差别。例如,微软的 SQL Server 软件使用的是 T -SQL 语句,T-SQL 中包含了非标准的 SQL 语句,不能和 MySQL 的 SQL 语句兼容。不同类型数据库之间的差异造成了互相   迁移的困难  ,这些差异其实是商业公司故意造成的技术壁垒。但是不同类型的数据库之间的迁移并   不是完全不可能  。例如,可以使用  MyODBC  实现 MySQL 和 SQL Server 之间的迁移。MySQL 官方提供的工具  MySQL Migration Toolkit  也可以在不同数据之间进行数据迁移。MySQL 迁移到 Oracle 时,需要使用 mysqldump 命令导出 sql 文件,然后,  手动更改  sql 文件中的 CREATE 语句 

误删行

1.  恢复数据比较安全的做法,是恢复出一个备份,或者找一个从库作为临时库,在这个临时库上执行这些操作,然后再将确认过的临时库的数据,恢复回主库。如果直接修改主库,可能导致对数据的二次破坏  。2.  把  sql_safe_updates  参数设置为  on 。这样一来,如果我们忘记在 delete 或者 update 语句中写 where 条件,或者 where 条件里面没有包含索引字段的话,这条语句的执行就会报错。如果确定要把一个小表的数据全部删掉,在设置了 sql_safe_updates=on 情况下,可以在 delete 语句中加上 where 条件,比如 where id =0。3.  代码上线前,必须经过  SQL 审计 

truncate/drop:误删库 / 表

 这种情况下,要想恢复数据,就需要使用   全量备份  ,加   增量日志   的方式了。这个方案要求线上有定期的全量备份,并且实时备份 binlog。在这两个条件都具备的情况下,假如有人中午 12 点误删了一个库,恢复数据的流程如下:1.  取最近一次全量备份,假设这个库是一天一备,上次备份是当天   凌晨 2 点  ;2.  用备份恢复出一个临时库  ;3.  从日志备份里面,取出凌晨 2 点之后的日志;4.  把这些日志,除了误删除数据的语句外,全部应用到临时库 

延迟复制备库

 如果有   非常核心   的业务,不允许太长的恢复时间,可以考虑搭建延迟复制的备库。一般的主备复制结构存在的问题是,如果主库上有个表被误删了,这个命令很快也会被发给所有从库,进而导致所有从库的数据表也都一起被误删了。延迟复制的备库是一种特殊的备库,通过  CHANGE MASTER TO MASTER_DELAY = N  命令,可以指定这个备库持续保持跟主库有  N 秒的延迟  。比如你把 N 设置为 3600,这就代表了如果主库上有数据被误删了,并且在 1 小时内发现了这个误操作命令,这个命令就还没有在这个延迟复制的备库执行。这时候到这个备库上执行 stop slave,再通过之前介绍的方法,跳过误操作命令,就可以恢复出需要的数据。

预防误删库 / 表的方法

1.  账号分离  。这样做的目的是,避免写错命令。比如:只给业务开发同学 DML 权限,而不给 truncate/drop 权限。而如果业务开发人员有 DDL 需求的话,可以通过开发管理系统得到支持。即使是 DBA 团队成员,日常也都规定只使用   只读账号  ,必要的时候才使用有更新权限的账号。2.  制定操作规范  。比如:在删除数据表之前,必须先   对表做改名   操作。然后,观察一段时间,确保对业务无影响以后再删除这张表。改表名的时候,要求给表名加固定的后缀(比如加  _to_be_deleted ),然后删除表的动作必须通过管理系统执行。并且,管理系统删除表的时候,只能删除固定后缀的表。

rm:误删 MySQL 实例

 对于一个有高可用机制的 MySQL 集群来说,不用担心  rm 删除数据   了。只是删掉了其中某一个节点的数据的话,HA 系统就会开始工作,选出一个新的主库,从而保证整个集群的正常工作。我们要做的就是在这个节点上把数据恢复回来,再接入整个集群。

关于“mysql 数据库迁移的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mysql 数据库迁移的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计3336字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)