首页
学习
活动
专区
圈层
工具
发布

故障分析 | 使用 mysqldump 备份导致数据丢失

背景 最近在进行一套 MySQL 数据库的数据迁移工作,由于数据量不大,于是使用 mysqldump 把现有集群的数据导到新实例中,建立复制关系先同步一段时间,后面再把应用切过来。...实验 在本地尝试复现一下现象,分别使用 5.7.33 和 5.7.36 的 mysqldump 来备份数据。...把新插入的数据清理掉,然后还原 gtid,使用同样的方法用 5.7.36 版本的 mysqldump 进行备份,最终结果为: SET @@GLOBAL.GTID_PURGED 语句在文件的结尾,值为 d04c5260...很明显,5.7.36 的数据与 GTID 不一致,可以认为数据丢失了。...总结 由于 5.7.36 版本的 mysqldump 备份时获取 GTID 的时机发生了变化,导致备份出来的数据和记录的 GTID 不一致,所以恢复出来的实例和主库建立复制关系后会发生找不到对应行的问题

2.3K20

mysql数据备份mysqldump

mysqldump命令导出数据库 备份数据库(推荐背下来) 语法: mysqldump -u 用户名 -p 数据库名 > 盘符:\路径\文件名.sql 案例(备份到当前位置):【位置可以写成D:\script.sql...】 mysqldump -u root -p dbname > script.sql 目录 mysqldump命令导出数据库 备份数据库(推荐背下来) 实例: 1.登录数据库:【mysql -u root...-p】 2.查看数据库列表【show databases;】 3.退出数据库【quit】 4.备份数据库【mysqldump -u root -p mytest > D:\Data\script.sql...】 5.有效性校验 实例: 1.登录数据库:【mysql -u root -p】 2.查看数据库列表【show databases;】 3.退出数据库【quit】 4.备份数据库【mysqldump...-u root -p mytest > D:\Data\script.sql】 5.有效性校验 数据完整,有表,有数据。

2.8K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql还原数据mysqldump

    mysqldump命令导入数据库 目录 mysqldump命令导入数据库 还原数据库(推荐背下来) 实例: 1.查看是否有同名数据库 2.删除【mytest】数据库【drop database mytest...;】 3.退出数据库【quit】 4.创建数据库【create database mytest;】与使用数据库【use mytest;】 5.导入【D:\data\script.sql】备份的脚本文件...6.数据校验 还原数据库(推荐背下来) 语法: source 盘符:\路径\文件名.sql; 案例(还原数据库):【sql脚本文件保存在D:\data\script.sql】 source D:\data...\script.sql 实例: 1.查看是否有同名数据库 2.删除【mytest】数据库【drop database mytest;】 3.退出数据库【quit】 4.创建数据库【create database...mytest;】与使用数据库【use mytest;】 5.导入【D:\data\script.sql】备份的脚本文件 6.数据校验 查看数据表【show tables;】 查看数据【select

    3.9K10

    使用mysqldump导出数据

    使用mysqldump导出数据 如何修改mysql数据库名称 需要将数据库名称old_db想改名为new_db MySQL修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的...先导出数据,再导入数据 当数据库体积比较小时,最快的方法是使用mysqldump命令来创建整个数据库的转存副本,然后新建数据库,再把副本导入到新数据库中。...先创建数据库 create database new_db; 使用mysqldump导出数据 mysqldump -uroot -p123456 --set-gtid-purged=OFF old_db...导入数据到新库 mysql -uroot -p123456 new_db < /tmp/old_db.sql 使用mysqldump导出和导入数据 导出整个数据 mysqldump -u 用户名 -p...数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql 导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump

    4.4K10

    MySQL mysqldump 数据备份

    专栏持续更新中:MySQL详解 部署在后台服务器或者云端的MySQL大部分做了一些限制,在本地无法直连后台服务的数据库3306端口上,一般有防火墙之类的网络中间件 在远程服务器一般不能使用GUI图形化界面工具进行数据备份...,所以我们一般都是通过命令mysqldump进行 导出建库建表的SQL: mysqldump -u 用户名 -p111111 --all-databases > ~/all.sql #...导出所有的库 mysqldump -u 用户名 -p111111 --databases school > ~/school.sql # 导出school库 mysqldump -u 用户名 -...p111111 --databases db1 db2 db3 > ~/dbs.sql # 导出多个库 mysqldump -u 用户名 -p111111 school stu > ~/stu.sql...我们现在把mytest库下的user表删除 然后我们source,相当于把.sql脚本重新执行一遍 user表和数据全部恢复出来了,有了.sql的脚本,可以在任意的mysql库上去重建库表及数据 我们还可以直接导出纯表数据

    58630

    MySQL 数据备份&恢复(mysqldump 工具)

    一、mysqldump 备份工具 MySQL自带的逻辑备份工具 它支持数据库全备或指定库备份 它备份的输出以文件形式保存 并且文件内容都是SQL语句 选项 含义 -A --all-databases导出...目录格式为 " E:\mysql\abc.sql "以反斜线分隔 1.导出数据库(DataBase) (cmd 命令行环境下操作) #导出单个数据库 mysqldump -uroot -p db_name...> E:\dbname.sql #导出多个数据库 mysqldump -uroot -p -B db1 db2 > E:\dbname.sql #导出所有数据库 mysqldump -uroot...:\table_name.sql #只导出表数据(SQL数据部分) mysqldump -uroot -p123456 -t db_name table_name > E:\table_name.sql...mysqldump 工具导出的数据文件其实是一种SQL脚本,导出后可以方便快速地恢复到数据库中 3.导出数据内容到Excel文件 # -e 参数,执行SQL语句,返回结果重定向到Excel文件中 mysql

    3.3K20

    MySQL mysqldump数据导出详解

    介绍  在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来...OR mysqldump [OPTIONS] --all-databases [OPTIONS] 插入测试数据 ?...该命令会导出包括系统数据库在内的所有数据库 mysqldump -uroot -proot --all-databases >/tmp/all.sql 2.导出db1、db2两个数据库的所有数据 mysqldump...3.导出db1中的a1、a2表 注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据 mysqldump...--host=h2 -uroot -proot db2 将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错 mysqldump --host=192.168.80.137

    14K20

    使用mysqldump导出导入数据

    先导出数据,再导入数据 当数据库体积比较小时,最快的方法是使用mysqldump命令来创建整个数据库的转存副本,然后新建数据库,再把副本导入到新数据库中。...先创建数据库 create database new_db; 使用mysqldump导出数据 mysqldump -uroot -p123456 --set-gtid-purged=OFF old_db...-p123456 new_db < /tmp/old_db.sql 使用mysqldump导出和导入数据 导出整个数据 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump...-u dbuser -p dbname > dbname.sql 导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u dbuser -p dbname...users> dbname_users.sql 导出一个数据库结构 mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql

    4.6K00

    MySQL mysqldump数据导出详解

    在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来。...该命令会导出包括系统数据库在内的所有数据库 mysqldump -uroot -proot --all-databases >/tmp/all.sql 2.导出db1、db2两个数据库的所有数据 mysqldump...,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据 mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp...mysqldump -uroot -p --all-databases --add-drop-database --add-drop-table 每个数据表创建之前添加drop数据表语句。...(默认为打开状态) mysqldump -uroot -p --all-databases --databases, -B 导出几个数据库。参数后面所有名字参量都被看作数据库名。

    5K20

    Redis数据丢失问题

    一、两种数据丢失的情况 主备切换的过程中(异步复制,脑裂),可能会导致数据丢失 1.1 异步复制导致的数据丢失 因为master -> slave的复制是异步的(客户端发送给redis,主节点数据同步到内存中后就返回成功了...) 所以可能有部分数据还没复制到slave,master就宕机了,此时master内存中的数据也没了,这些部分数据就丢失了。...二 如何解决redis数据丢失的问题 解决以上两种情况redis数据丢失的问题都是靠以下两个参数配置将数据损失降到最低。...,防止宕机时候丢失的数据更多,于此同时全力进行数据同步,当然我们可以在延迟很高的时候呢做限流降级,也可以把数据丢到mq里,每隔一段时间进行一次消费给他重新回流到redis的机会 2.2 减少脑裂的数据丢失...上面两个参数保证了发生脑裂后多长时间停止新的写入,让我们数据丢失的损失降低到最少,这里脑裂状态持续的越久就会丢失越久的数据,因为他重启后会变成从结点,所有数据同步于新的master,原来的数据都丢了

    4.7K30

    MySQL数据备份mysqldump的简单使用

    MySQLdump是一个数据库逻辑备份程序,可以使用对一个或者多个mysql数据库进行备份或者将数据传输到其他mysql服务器。...mysqldump不是大数据备份的解决方案,因为mysqldump需要通过重建sql语句来实现备份功能,对于数据量比较大的数据库备份与还原操作,速度比较慢,打开mysqldump备份会发现里面其实就是数据库...使用mysqldump可以备份数据库中的某些数据表,也可以备份整个数据库,还可以备份mysql系统中的所有数据库,对于使用mysqldump工具备份的数据库,可以使用mysql的命令工具还原数据。...mysqldump选项如下所示,同时这些选项也可以通过[mysqldump]和[client]写入配置文件中 --all-databases , -A 导出全部数据库。...常用命令如下: 备份所有的数据库: mysqldump -u root -p --all-databasese > all_databaes_sql 备份mysql数据库: mysqldump -u root

    1.8K10

    mysqldump详解

    在进行数据库备份的时候主要分为了逻辑备份和物理备份这两种方式。在数据迁移和备份恢复中使用mysqldump将数据生成sql进行保存是最常用的方式之一。...本文将围绕着mysqldump的使用,工作原理,以及对于InnoDB和MyISAM两种不同引擎如何实现数据一致性这三个方面进行介绍。...一.mysqldump 简介 mysqldump是MySQL自带的逻辑备份工具。...二.备份的命令 2.1命令的格式 1.mysqldump [选项] 数据库名 [表名] > 脚本名 2.mysqldump [选项] --数据库名 [选项 表名] > 脚本名 3.mysqldump [...-p db_name mysqldump/db_name.db 注:在导入备份数据库前,db_name如果没有,是需要创建的; 而且与db_name.db中数据库名是一样的才可以导入

    1.4K11

    MySQL数据导出及mysqldump命令参数

    ,并且导出的是纯数据,不存在建表信息,你可以直接导入另外一个同数据库的不同表中,相对于MySQLdump比较灵活机动。...: (1)导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql (2)导出一个表...mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql (3)导出一个数据库结构...mysqldump -uroot -p --all-databases --add-drop-database --add-drop-table 每个数据表创建之前添加drop数据表语句。...(默认为打开状态) mysqldump -uroot -p --all-databases --databases, -B 导出几个数据库。参数后面所有名字参量都被看作数据库名。

    7.6K20
    领券