mysql将数据导入mgr_MySQL 8.0.20 MGR数据迁移过程以及注意事项

1.背景

近期由于业务调整,需要将Windows Server 2008 MySQL5.5数据库迁移到Windows Server 2012 MySQL8.0集群MGR中,由于实际部署时,有一台机器硬盘损坏,只能构建双节点MGR,在迁移以及应用迁移过程中遇到许多参数与迁移效率问题,特此记录。

2.迁移表单个文件过大

由于有部分数据来源于文本文件,单个文件达到40G之大,且原表为MyISAM存储引擎,由于MGR只支持事务引擎InnoDB,

所以需要修改文本文件头建表语句以及拆分文件,并行导入,使用如下两款软件进行了修改大文件以及拆分:

EmEditor,可以打开超大文件。

Windows Unix增强工具。

3.并行导入遇到问题

第一阶段:由于最开始导入时开启了MGR,由于使用Navicat执行SQL文件方式导入数据,导致由于关闭autocommit,单个事务超大,MGR在最后提交阶段由于网络不稳定,导致验证过长,效率非常底下。

第二阶段:尝试打开autocommit方式,发现由于不停写binlog与数据文件,效率更差。

第三阶段:拆分MGR,将文件传送两个服务器,关闭binlog,分别导入,效率非常高,将1.7亿万,40G数据拆分为20个

文件,分别开20个并行导入,两台机器并行导入,并且将MySQL所有文件迁移到服务器SSD磁盘,40分钟即可完成所有数据导入。

4.导入过程遇到MGR与MySQL参数限制问题

group_replication_transaction_size_limit

# 最大值2147483647,近似2G,在组成MGR进行单事务大量数据导入或更新时,需要考虑该参数影响,有可能由于

该参数设置过小导致最后阶段失败,不过大事务对于MGR确实不太友好,节点互相确认消耗大量网络带宽。

max_binlog_cache_size

# 事务过大,需要相应调大该参数,实测,1000万行数据大约需要3~4G该参数,

# 官方文档不建议设置过大该参数,最大建议4G

5.由于需要导入MyISAM导致MGR数据不一致问题解决

最后数据迁移完毕之后,由于在之前由于导入MyISAM引擎表,临时禁用disable_storage_engines,导致启动MGR之后

有MGR不支持的操作报错:

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

上面报错,MGR中违反MGR限制的报错都报上述错误,并不会具体表述由于详细原因,比如使用对MyISAM表操作,

没有主键唯一键表创建之后,插入数据,都将报上述错误。

MGR不一致问题解决流程如下:

1. 查看集群状态,确定故障节点

SELECT * FROM PERFORMANCE_SCHEMA.REPLICATION_GROUP_MEMBERS;

# 查看集群所有节点状态,找到具体Error或recovering节点。

2.查看故障节点error log

# 查看error log,确定故障gtid,position

3.分析当前读写节点发生问题binlog

# mysqlbinlog命令分析,找到故障执行语句,明确故障原因。

4.查看具体故障发生表大小,状态

(1)确定表大小以及是否经常修改,如果为经常修改大表,则考虑对故障节点利用备份重建

(2)如果表不大或不经常改变,改变可以明确预知时段,可以考虑故障节点reset master,然后设置gtid_purged或者

使用设置gtid_next为故障gtid方式,如果可以正常复制到读写节点当前gtid,然后再在不变时段导出,如果继续报错,则

继续查看是否为故障表,如果是继续跳过,知道可以正常追数据到读写节点当前gtid,记录故障节点show master status

复制点,临时设置故障read_only与super_read_only为off,导入故障节点,然后reset master或设置gtid_next为

show master status记录的gtid,使复制继续,即可修复。

本文由 @狗老大[Vip] 发布于 职涯宝 ,未经作者许可,禁止转载,欢迎您分享文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装 搜狗输入法 ubuntu 18

命令 sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb sudo apt --fix-broken install 转载于:https://www.cnblogs.com/eat-too-much/p/11216083.html

devstack mysql_DevStack部署OpenStack开发环境 - 问题总结

建议在使用DevStack搭建OpenStack开发环境前,先安装好开发工具包组.特别是gcc,主要一定是在yum update -y 之前,否则更新完系统后,在安装开发工具包会出现很多依赖包因为版本更新而无法安装.要部署OpenStack需要注意若电脑配置不高,我自己的经验是先最小化或基本Web安装,然后,再…

docker+mysql创建用户名密码_docker构建私有仓库并设置仓库用户和密码

#搭建私有镜像仓库[rootdocker_test opt]# docker pull registryUsing default tag: latestlatest: Pulling from library/registryGet https://registry-1.docker.io/v2/library/registry/manifests/sha256:b1165286043f2745f45ea637873d61939bff6d9a59f76539d6228abf79f87774…

linux 安装RabbitMQ 注意版本

Linux下安装RabbitMQ 一下载依赖包 1.下载Rabbitmq 所依赖的环境gcc、erlang包和rabbitmq包,这里演示是网上下载gcc 依赖 1yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xzerla…

mysql更新写入数据_七、MySQL插入、更新与删除数据

存储在系统中的数据是数据库管理系统(DBMS)的核心,数据库被设计用来管理数据的存储、访问和维护数据的完整性。MySQL中提供丰富的数据管理语句,包括插入数据的INSERT、更新数据的UPDATE以及删除数据的DELETE语句。7.1、插入数据为表的所有字段插入数据使…

mysql语句随机数_程序生成随机数与SQL语句生成随机数

随机数可以通过程序生成,也可以通过SQL语句生成。通过程序生成随机数时一般采用硬件的编号时间作为种子,这种方法在瞬间插入数据库N条数据的时候会影响随机数的效果,生成很多相邻的插入值相同。所以频繁插入时可以使用SQL语句的内置函数生成随…

BPM的四大主要类型

随着网络的发展,移动BPM、社交BPM、云端BPM将顺应市场需求,成为BPM发展的新趋势,最终成为企业即时管控有效工具。BPM将不断促进制造业信息化的转型与发展。所以很少人会否认业务流程管理(BPM)的价值,更不用说给BPM一个全面定义。根…

jquery.js把我的时间修改了为什么?_电气老手在PLC程序调试修改时的几个必备小窍门,看你知道几个?...

我们工程师在设计程序,调试程序,修改程序的时候,为了方便以后对程序的理解,最好是对程序进行注释,能够对程序进行注释也是比较好的一个习惯。为什么这么说呢?因为我们人的脑容量是有限的,或多或…

rpm命令包安装mysql_CentOS7使用rpm包安装mysql 5.7.18

说明本文写于2017-05-20,使用MySQL-5.7.18。操作系统为64位CentOS Linux release 7.2.1511 (Core),以桌面形式安装。卸载MariaDBCentOS7默认安装MariaDB而不是MySQL,而且yum服务器上也移除了MySQL相关的软件包。因为MariaDB和MySQL可能会冲突…

mysql phpmyadmin远程_phpmyadmin登录远程mysql数据库

之前只用phpmyadmin登录本地的mysql,管理另一个远程数据库的时候发现,单纯用命令行处理字符串、换行符实在是不好使,所以配置了远程登录mysql,很简单的问题结果没有搜到合适的方法,所以记录下我的配置方式。phpmyadmin…

远程创建的git仓库,第一次与本地仓库进行联动,需要强制推送。

简介 远程创建的git仓库,第一次与本地仓库进行联动,需要强制推送。 参考链接 cnblog 转载于:https://www.cnblogs.com/eat-too-much/p/11220873.html

mysql自带的卸数工具_数据库卸数必备工具下载-数据库数据导出工具(DBexport)下载v1.3官方版-西西软件下载...

DBexport是一款专业的数据库数据导出工具,支持多数据源导出,目前已测试Oracle,MySQL,SQL_SERVER无明显BUG,目前支持图片种的数据库,支持扩展功能,只要有对应的数据库jar和jdbc等信息&#xff0c…

android如何用adb shell启动应用程序

昨天研究了很久,可能由于基础比较菜吧,所以,没有搜到一个可以直接解决问题的,需要综合几个之后,问题得以解决,记下方法,为了方便自己之后遇到同样问题,也为了方便搜索同样问题的朋友…

了解mysql processlist_哪些MySQL processlist状态要引起关注

状态建议copy to tmp table执行ALTER TABLE修改表结构时 建议: 放在凌晨执行或者采用类似pt-osc工具Copying to tmp table拷贝数据到内存中的临时表,常见于GROUP BY操作时 建议: 创建适当的索引Copying to tmp table on disk临时结果集太大&a…

关于C#的构造函数

每一个类都有自己的构造函数,没有构造函数你就不能对它实例化.1.每个类在编译器编译的时候都会有默认的无参构造函数.2.如有自己的构造函数,就不会在编译时创建默认的构造函数.3.在静态类中,也是有一个构造函数的,且必须是静态无参的 转载于:https://www.cnblogs.com/boke1/p/1…

mysql数据库删除操作指令_MySQL删除数据库的命令是什么?

删除数据库的命令是:“DROP DATABASE 数据库名;”;例“drop database student;”就是删除名为student的数据库。“DROP DATABASE”语句可以用于删除数据库。使用drop 命令删除数据库drop database语句可以用于删除数据库。drop database命令格式&#xf…

C#的扩展方法

一、扩展方法必须符合以下要求 1.方法所在的类必须是静态的2.方法也必须是静态的3.方法的第一个参数必须是你要扩展的那个类型,比如你要给int扩展一个方法,那么第一个参数就必须是int。4.在第一个参数前面还需要有一个this关键字。 二、扩展方法的几点总…

mariadb与mysql的兼容_「MySQL架构」MariaDB versus MySQL: Compatibility

完全替代MySQLMariaDB版本的功能相当于一个“完全替代”的MySQL版本,但有一些限制。这意味着:MariaDB的数据文件通常是二进制的,与MySQL版本的数据文件兼容。所有的文件名和路径通常是相同的。数据和表定义文件(.frm)文件是二进制兼容的。请参阅下面的注…

mysql多表联查到新的表中_MySQL中的多表联查

多表查询:1. 笛卡尔积的形式;2. 内连接的形式:查询两个表中符合连接条件的记录;SELECT 字段名称,... FROM tbl_name1INNER JOIN tbl_name2ON 连接条件3. 外连接的形式:1).左外连接:SELECT 字段名称,... FROM tbl_name1LEFT [OUTER] JOIN tbl_name2ON 条件;//先显示左表中的全部…

Asp.net 对于服务器控件添加Client端方法

Asp.net 对于服务器控件添加Client端方法: 1):如果有OnClientClick属性的话,直接给这个属性赋值即可。OnClientClick"MyClientFunction();" 2):如果有NavigateUrl属性的话(或者其他方式的url),可…