本文转载自微信公众号《MySQL技术》,作者MySQL技术。转载本文请联系MySQL技术公众号。前言:在日常工作中,经常会遇到数据迁移的需求,比如迁移某个表、某个库或者某个实例。根据不同的需求,可能会采用不同的迁移方案,在数据迁移过程中可能会遇到各种大小不一的问题。在这篇文章中,我们就来了解一下关于MySQL数据迁移的那些事儿,希望对大家有所帮助。1、关于数据迁移,首先参考维基百科对数据迁移的解释:数据迁移是指数据的选择、准备、提取和转换,将数据从一个计算机存储系统永久转移到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和停用旧数据存储也被视为整个数据迁移过程的一部分。数据迁移是任何系统实施、升级或集成的关键考虑因素,通常以尽可能自动化的方式执行,从而将人力资源从繁琐的任务中解放出来。数据迁移的发生有多种原因,包括服务器或存储更换、维护或升级、应用程序迁移、网站集成、灾难恢复和数据中心搬迁。对于MySQL数据库,经常会遇到数据迁移的需求,比如从测试库迁移到开发库,或者从一台机器迁移到另一台。可能只是一张表,也可能需要迁移整个数据库实例。不同的需求可能会采用不同的迁移方案,但总的来说,MySQL的数据迁移方案大致可以分为两种:物理迁移和逻辑迁移。2.迁移方案及注意事项物理迁移适用于大数据量下的整体迁移。物理迁移包括复制数据文件和使用XtraBackup备份工具。不同服务器之间可以使用物理迁移。我们可以在新服务器上安装相同版本的数据库软件,并创建相同的目录。建议配置文件与原数据库相同,然后从原数据库复制数据文件和日志。文件,配置文件组权限,然后使用mysqld命令在新服务器端启动数据库。使用物理迁移方案的好处是比较快,但是需要停机迁移,并且需要MySQL版本和配置与原服务器一致,也可能会出现未知问题。相比之下,逻辑迁移的适用范围更广。无论是部分迁移还是全量迁移,都可以使用逻辑迁移。逻辑迁移中用的最多的就是通过mysqldump等备份工具导出导入。mysqldump也适用于不同版本和不同配置之间的迁移,但是在全量迁移的时候,我不推荐使用-A参数来备份所有的数据库,尤其是不同版本之间的迁移,有些系统库可能会略有不同,并且迁移后很容易迁移。出现未知问题。如果使用mysqldump进行全量迁移,可以按照以下步骤进行:#在新数据库(不包括系统数据库)中执行原数据库执行得到的建库语句SELECTCONCAT('CREATEDATABASEIFNOTEXISTS','`',SCHEMA_NAME,'`','DEFAULTCHARACTERSET',DEFAULT_CHARACTER_SET_NAME,';')ASCreateDatabaseQueryFROMinformation_schema.SCHEMATAWHERESCHEMA_NAMENOTIN('information_schema','performance_schema','mysql','sys');#执行原来执行得到的用户创建语句新数据库中的数据库(不包括系统用户)SELECTCONCAT('createuser\'',USER,'\'@\'',HOST,'\'''IDENTIFIEDBYPASSWORD\'',authentication_string,'\';')ASCreateUserQueryFROMmysql.`user`WHERE`User`NOTIN('root','mysql.session','mysql.sys');#在原库中执行showgrants获取用户权限,然后在新库中一一执行(也可以将那些权限表复制到新库中)showgrantsfor'testuser'@'%';#这里已经是新环境了有要迁移的库和用户,但没有数据新环境mysql-uroot-pxxxx
