千家信息网

MySQL中数据迁移的示例分析

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要为大家展示了"MySQL中数据迁移的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"MySQL中数据迁移的示例分析"这篇文章吧。1.关于
千家信息网最后更新 2025年01月21日MySQL中数据迁移的示例分析

这篇文章主要为大家展示了"MySQL中数据迁移的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"MySQL中数据迁移的示例分析"这篇文章吧。

1.关于数据迁移

首先引用下维基百科中对数据迁移的解释:

数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。

数据迁移是任何系统实现、升级或集成的关键考虑因素,通常以尽可能自动化的方式执行,从而将人力资源从繁琐的任务中解放出来。

数据迁移有多种原因,包括服务器或存储设备更换、维护或升级、应用程序迁移、网站集成、灾难恢复和数据中心迁移。

对于 MySQL 数据库,也会经常碰到数据迁移的需求,比如说从测试库迁到开发库,或者从一台机器迁移到另一台机器,可能只是迁移一张表,也可能需要迁移整个数据库实例。对于不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL 数据迁移方案大致可以分为物理迁移和逻辑迁移两类。

2.迁移方案及注意点

物理迁移适用于大数据量下的整体迁移。物理迁移包括拷贝数据文件和使用 XtraBackup 备份工具两种。不同服务器之间可以采用物理迁移,我们可以在新的服务器上安装好同版本的数据库软件,创建好相同目录,建议配置文件也要和原数据库相同,然后从原数据库方拷贝来数据文件及日志文件,配置好文件组权限,之后在新服务器这边使用 mysqld 命令启动数据库。

使用物理迁移方案的优点是比较快速,但需要停机迁移并且要求 MySQL 版本及配置必须和原服务器相同,也可能引起未知问题。

相比来说,逻辑迁移适用范围更广,无论是部分迁移还是全量迁移,都可以使用逻辑迁移。逻辑迁移中使用最多的就是通过 mysqldump 等备份工具导出再导入了。

mysqldump 同样适用于不同版本不同配置之间的迁移,不过全量迁移时,笔者不建议使用 -A 参数备份全部数据库,特别是对于不同版本之间迁移,可能某些系统库稍有不同,迁移后容易出现未知问题。若使用 mysqldump 进行全量迁移,可以按照下面步骤操作:

# 原库执行 得到的创建数据库语句在新库执行 (排除系统库) SELECT   CONCAT( 'CREATE DATABASE IF NOT EXISTS ', '`', SCHEMA_NAME, '`', ' DEFAULT CHARACTER SET ', DEFAULT_CHARACTER_SET_NAME, ';' ) AS CreateDatabaseQuery  FROM   information_schema.SCHEMATA  WHERE   SCHEMA_NAME NOT IN ( 'information_schema', 'performance_schema', 'mysql', 'sys' );     # 原库执行 得到的创建用户语句在新库执行 (排除系统用户)  SELECT   CONCAT( 'create user \'', USER, '\'@\'', HOST, '\'' ' IDENTIFIED BY PASSWORD \'', authentication_string, '\';' ) AS CreateUserQuery  FROM   mysql.`user`  WHERE   `User` NOT IN ( 'root', 'mysql.session', 'mysql.sys' );    # 原库执行 show grants 得到用户权限 然后逐一在新库执行 (也可以复制那几张权限表到新库) show grants for 'testuser'@'%';  # 至此 新环境已经存在要迁移的库和用户 只是没有数据 # 原环境使用mysqldump备份除系统库外的所有库  mysqldump  -uroot -pxxxx -R -E --single-transaction --databases db1 db2 > db.sql  # 然后导入新环境 mysql -uroot -pxxxx < db.sql

对于迁移部分库和部分表,也可以采用上方类似方案,只是备份时要按需备份,下面列举出几种常见的 mysqldump 备份场景:

# 备份单个库 mysqldump -uroot -pxxxxx -R -E --single-transactio --databases db1 > db1.sql  # 备份部分表 mysqldump -uroot -pxxxxx --single-transaction db1 tb1 tb2 > tb12.sql  # 排查某些表 mysqldump -uroot -pxxxxx db1 --ignore-table=db1.tb1 --ignore-table=db1.tb2 > db1.sql  # 只备份结构或数据 mysqldump -uroot -pxxxxx testdb --no-data > testdb_jiegou.sql mysqldump -uroot -pxxxxx testdb --no-create-info > testdb_data.sql

总得来说,使用 mysqldump 方案更加灵活,为了快速迁移,我们应该尽量减少备份内容,比如说排除无用的日志表。对于一些大表,我们也可以采用单独迁移的方案,比方说,db1 中的 tb1 表特别大,我们可以在备份时先排除 tb1,对于大表 tb1 ,可以使用 LOAD DATA 方式或舍弃再导入表空间的方式来迁移。

数据迁移过程中,可能会遇到各种错误,一步步去解决即可。建议在新库创建好用户并授予好权限后再迁移,这样可以避免出现视图及函数导入错误,因为视图及函数有个定义者的概念。新环境执行导入时,最好使用 root 等具有 SUPER 权限的管理员用户,也可以避免一些因权限产生的问题。

迁移完成后,对于新环境,我们还应该再次进行检查,比如表的个数是否相同,随机抽查几张表,数据是否相同、是否有乱码等。只有确定无误才大功告成。

以上是"MySQL中数据迁移的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 备份 数据库 不同 方案 系统 用户 相同 文件 服务器 权限 物理 环境 服务 内容 版本 逻辑 部分 存储 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 路由器上的软件开发 数据库设计报告结束语 塔拉瑞亚发现服务器 java和什么数据库 网络安全儿童画三年级 数据库限定数据的输入格式是 杭州驼峰网络技术 邢台市公安局网络安全支队长 陕西物联网卫星授时服务器 鹿邑卫健委网络安全会议 延庆区网络技术信息热线 数据库复杂模型计算用什么工具 韶关通讯软件开发价目表 删除服务器如何找回 小鹏汽车网络技术总监 服务器pike卡是什么意思 江苏大学网络安全排名 网络安全性分析 化学位移数据库 太原网络安全培训学校好找工作吗 网络安全在北京工作二年工资 华为行为管理器日志服务器 陕西博润网络技术有限公司 进入网络安全模式密码错误 编程语言中的数据库有什么用 上网出现网络安全管理系统 郑州校园网移动的服务器 excel是 软件开发 电脑的网络安全密码怎么找回 软件开发大概成本需要多少
0