#软件测试大本营[超话]#

  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 数据库数据迁移相关方案及注意点,总结如下思维导图:

来自网络,侵权删 https://t.cn/R2WxdDX

#鹿晗愿望季[超话]# ♡7分钟正好是420秒♡
♡数字7是鹿晗喜欢的数字♡
♡0420正好是鹿晗的生日♡
♡deer(鹿)反过来是reed(芦苇)♡
♡Reloaded-load=reed(芦苇)♡
♡芦苇两个字都是七划♡
一切都是命中注定
一切都是最美的安排
你下辈子还叫鹿晗
我下辈子依旧叫鹿饭 ​
不忘初心方得始终
一鹿相伴永不相离

印度政府不得不空运空气( The government was essentially airlifting air)。
印吹老方情何以堪。
India is a story of scale, and it cuts both ways. It has a lot of people, a lot of needs and a lot of suffering. But it also has lot of technology, industrial capacity and resources, both human and material. I almost teared up the other night when the news showed an Indian Air Force jet load up with oxygen tanks from Singapore to bring to needy parts of the country. The government was essentially airlifting air.


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 对UIUC MSA感兴趣的筒子请注意项目是夏天六月开课,允许先上后补本科学位和最终成绩单值得一提的是学生的推荐人非常给力,27号我们注册网申发出后很快全部完成。
  • 【立省100元[笑而不语]】 【卷后19】 [星星]夏季新款休闲短袖T恤男士ins宽松五分袖 【立减100元】【退货运费险】 爆款热卖,高品质,简约修身,棉
  • 喝奶的小seven真的很奶~请求三月给我一个好的结果吧,我真的会一直努力的,只要这次结果是好的[心]我特别想问那些叫嚣新冠毒性降低还不如流感、赶紧放开共存的人,
  • 本次课程主要由金律师为我们分享疫情之后,青年律师如何积累人脉,拓展业务领域,寻找方向,希望对刚出道的律师一点小小的启发和帮助。[2021][拳头][握手] #律
  • ”19.顺其自然的意思大概是“我也很无奈随他妈便吧”20.迟到的珍惜总让人发笑21.“你看一晃两三年,匆匆又夏天……”22.我们都在奔赴不同的人生了.23.“有
  • 【波斯语日常生活生词】(来自《零起点说波斯语》) 通常情况:معمولا,ma 'moolan, 谐音「嘛啊姆兰」 作业:تکالیف،takâleef, 谐
  • ”“我们认为决定三文鱼供应的三个因素:国外厂家适应新包装要求的速度,国际航班的运费,以及国内对进口冷链产品的管控力度,都要向好发展才能回到正常的状态。上海荷裕冷
  • 车尾方面,虽然将换装2.0T发动机,不过还是采用双边共四出式排气布局,其声浪效果也令人期待。车尾方面,虽然将换装2.0T发动机,不过还是采用双边共四出式排气布局
  • 从此后一直到老,财运上财源稳定,家庭幸福,晩景辉煌,……第七运丁酉也是好运……到了七十四岁,大运戊戍,流年乙丑,注意这年有个人生的大关口,就是身体的病灾这些,要
  • (四)考察阶段公示无异议的,根据应聘者综合成绩,按照招聘数1:1的比例确定拟聘用人员名单进行考察。5.联系人:雷翰柔 联系电话:0871-678025706.
  • #打疫苗是童年阴影吗#在《好妈妈胜过好老师》书中作者有提到陪孩子打针的一段经历,孩子在进到医院、看到医生的时候会本能产生恐惧,这不仅是因为接下来可能发生的事会让
  • 膜都没撕哈哈哈哈哈哈哈已经开始期待明天配件到齐之后的效果啦[馋嘴]【Dubbo-go-Mesh 开启新一代 Go 微服务形态】Proxyless Service
  • 祝大家七夕快乐呀~七夕とは、織姫(おりひめ)さまと彦星(ひこぼし)さまが天の川を渡って、1年に1度だけ出会える7月7日の夜のこと。スカーレットは聖地巡礼を妨害し
  • 朋友的信任必须不负所托 客人的喜爱更加砥砺前行 感谢同行,朋友,我主持过的新人的支持,还没有主持就疯狂推荐给朋友的各位衣食父母[心] #婚礼主持人罗胜
  • (傻笑jpg.)我:(愣了一下)你怎么这么会取名字?(凑过来让我看)我:哈哈哈哈哈哈你只有两颗哈哈哈哈哈哈我弟:……呜(开始发嗲)【过了一会我弟教我下围棋】我弟
  • #摩登兄弟[超话]#也许我们始终都是一个小人物,但这并不妨碍我们选择用什么方式去生活,这个世界永远比你想的要更精彩。每天多一点点的努力,不为别的,只为了日后能够
  • 按照西部新区的规划,在教育方面,已规划了约3.5平方公里的核心教育产业园,各教育配套设施建设在规划中投入建设。随着各教育基础设施的建设和投入使用,为西昌核心教育
  • 看得出来,张雨绮应该是对高跟鞋情有独钟,在她的这些鞋中,基本上都是高跟鞋,而且同一颜色不同款式的也是非常多,只是这么多双鞋子,得多少双脚才能穿得过来啊?看得出来
  • #张云雷 千万份爱给你##张云雷 陪你到白首# 看到小伙伴们给俺评论后一个单纯的抽奖博[牛哞哞]一起庆祝十一周年~一起见证懒云超话签到(1111天)奖品:大礼包
  • 早起,是自律的开始,而自律真的能改变人生。(自助点击链接进入听读模式,享受沉浸式阅读时光) #向理想致敬# #刘宇说国风和正能量一生都要坚持的事#他热爱传统文