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

  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

东芝CV160电梯安全回路详解。
东芝CV160电梯安全回路详解:安全回路:PC1ADC110V-控制柜急停开关CCS-CNH2插件8号线-底坑急停1KS1-底坑第二急停1KS2-CNH1插件9号线-TB12插件2号线-CNK1插件12号线-A2-CNK1插件17号线-TB1插件28号线-CNK5插件11号线-轿顶急停2KS-CNK5插件12号线-TB1插件29号线-A4-安全钳开关SOLS-TB1插件15号线-CNK1插件18号线-A7-CNK1插件13号线-TB12插件3号线-CNH1插件10号线-上极限开关2LS-下极限开关1LS-轿厢缓冲器BUFS1-对重缓冲器BUFS2-CNH1插件11号线-A9-轿厢涨紧轮开关GRS-对重涨紧轮开关WGRS-CNH1插件13号线-A10-CNM1插件1号线-轿厢限速器开关SLS-CNM1插件2号线-CNM1插件3号线-对重限速器开关SLS1-CNM1插件4号线-CNM12插件3号线-盘车轮开关RHS-CNM12插件4号线-A11门锁回路:A11-CNH1插件14号线-厅门锁开关LS-CNH1插件15号线-TB12插件6号线-CNK1插件14号线-HDC-CNK1插件19号线-TB1插件44号线-轿门锁开关GLS-TB1插件45号线-CNK1插件20号线-DC(原创:28953130)

东芝CV190电梯安全回路详解。
东芝CV190电梯安全回路详解:安全回路:PC1ADC110V-控制柜急停开关CCS-CNH2插件8号线-底坑急停1KS1-底坑第二急停1KS2-CNH1插件9号线-TB12插件2号线-CNH1插件12号线-A2-CNK1插件17号线-TB1插件31号线-CNK5插件11号线-轿顶急停2KS-CNK5插件12号线-TB1插件13号线-A4-安全窗开关MLS-A5-安全钳开关SOLS-TB1插件15号线-CNK1插件18号线-A7-CNK1插件13号线-TB12插件3号线-CNH1插件10号线-上极限开关2LS-下极限开关1LS-轿厢缓冲器BUFS1-对重缓冲器BUFS2-CNH1插件11号线-A9-轿厢涨紧轮开关GRS-对重涨紧轮开关WGRS-CNH1插件13号线-A10-CNM1插件1号线-轿厢限速器开关SLS-CNM1插件2号线-CNM1插件3号线-对重限速器开关SLS1-CNM1插件4号线-CNM12插件3号线-盘车轮开关RHS-CNM12插件4号线-A11门锁回路:A11-厅门锁开关LS-CNH1插件15号线-TB12插件6号线-CNK1插件14号线-HDC-CNK1插件19号线-TB1插件44号线-轿门锁开关GLS-TB1插件45号线-DC(原创:28953130)


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • ”郭广昌没想到,自己这个朴素的心愿不但很快得以实现,30年后,他旗下的复星集团还成为了青岛啤酒的第二大股东。【#人物# | 一战赚了 8000 亿,恐怖的郭广昌
  • 我接手家电行业的时候,正好处于后政策时代,前期的一系列刺激政策都已经执行到尾声了,行业正好进入一个消费被透支后的第一年,所以行业的贝塔性的机会是没有了,所以我更
  • 就感觉很不对劲,发现一些社交平台关于vivo X80系列、X Fold系列、X Note系列的相关消息好少啊,除了微博闲聊站和关注数码博主以外,其他平台的消息也
  • 就像我认为自己2012年之前的打法也是比较有冲击力比较进攻为主,那其实经过2013年到2014年一个年龄上一个整体思想的成熟,更多的就是去打线路打配合,因为其实
  • (来源:北京友谊医院)#研究称面部螨虫与人类将合体#新的研究表明,螨虫非常依赖人类。#研究称面部螨虫与人类将合体# 【眼部感染螨虫的症状和治疗】蠕形螨是一种体型
  • 段星星粉丝自己对号入座赘婿,并上升队友辱/骂,公然诅/咒队友死了,难道是因为队友今天杂志一分钟160万,段星星粉丝知道自己正主段星星是偷8,偷了别人的人生,开始
  • 陆⁢沉⁢的⁢婚⁢卡⁢太⁢震⁢撼⁢了⁢,⁢保⁢底⁢换⁢了⁢这⁢张⁢感⁢觉⁢是⁢五⁢男⁢主⁢中⁢的⁢质⁢量⁢T⁢O⁢P⁢,⁢百⁢万⁢文⁢案⁢组⁢诚⁢不⁢欺⁢我⁢,⁢
  • (这点基础交易知识都不懂就别干了大哥)在板面前当孙子,板不在就逞大王是吧?#sky光遇黑市[超话]# …看见这个b人赶紧跑…[困]这野代蹲进交易群之后态度就很不
  • 对于我来说呢,我不太喜欢一成不变的生活,每一次挑战,我都想做得更好,为止,也是保持神秘新鲜感的一个驱动力,勇敢地去探索未知的领域,所谓的成功,我觉得,嗯,永远都
  • 于是,我又探询了顾客家人的身高体重腰围等,顾客表示,她也不清楚,说挺便宜的,就发来试试吧。(信誉楼百货元氏店市场男装项目 靳晓静)6/14更新-回来了 再度对1
  • 已受理市住房和城乡建设局您好,关于您关注的问题,处理部门:市住房和城乡建设局 [2022-07-01 08:31:26]回复如下:尊敬的网友您好,您反映的问题经
  • 这时,他发现黑狐快要渡劫,就和柳白蝶讲,他想喝黑狐汤,柳白蝶果然将黑狐抓住,幸运的是,柳白蝶心地善良,放了黑狐,这才没让白狐的阴谋得逞,不然若是白狐做了山神,整
  • 杨老师是办公室里我最喜欢的一位老师啦,我们也算有很多共同话题,工作之余会一起聊天、吃饭、谈谈心。她离职之后我特别想念她,她说我很像曾经的她,什么情绪都反应到脸上
  • ⑥自带线日常不用时收纳在顶端的凹槽中,整个移动电源唯一的一个接口也隐藏在这里,单USB-C,仅支持输入不支持输出。⑥自带线日常不用时收纳在顶端的凹槽中,整个移动
  • 今天同事小姐姐给我更新后续,温度计已经贴在柜子上了[可爱] 修空调的事 说辞从下午会来,到明天回来,到最近几天会来, 我也反映宿舍空调是坏的 每天早上醒过来的
  • 椰子肉是可以吃的,脆嫩脆嫩的 #三亚美食#以前昆明楼市看不到二手房挂牌价的时候还不明显,现在昆明二手房挂牌价出来以后,昆明房价下跌的迹象就比较明显了。我标注的3
  • 知道我的人也知道我就是一个话很多仪式感强(我自己觉得)脑洞有点奇(宝)怪(藏)的小产出整天在线刷千 应援产出做贡献 做做数据 分享生活 分享摄影 可能会分享
  • 你的变化可真大,玩别人的玩具也知道争取别人的同意了不错”权小爷貌似听懂这是夸赞的话对着大爷呵呵一笑害羞的跑走了!下午陪宝贝玩,我发现套圈玩具的柱子没了,只余一些
  • ——我就是这种现象[挤眼] “其实是自我保护的表现”....... 不少人都存在“认床”的现象,平时在家都睡得很好,一旦到了酒店等新环境,尤其是第一天,却怎
  • 好久没发微博了哈哈哈 周末终于去省城吃喝玩乐 虽然有很多意外和小遗憾 但作为很容易得到快乐的人 必须在辛苦的6月后打起精神即使有泪水 但见了好朋友 吃了好吃的