MySQL进阶之锁(全局锁以及备份报错解决)

全局锁

全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语 句,已经更新操作的事务提交语句都将被阻塞。

其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整 性。

  • 先来分析一下不加全局锁,可能存在的问题。

假设在数据库中存在这样三张表: tb_stock 库存表,tb_order 订单表,tb_orderlog 订单日 志表。

 

 

  • 在进行数据备份时,先备份了tb_stock库存表。

  • 然后接下来,在业务系统中,执行了下单操作,扣减库存,生成订单(更新tb_stock表,插入 tb_order表)。

  • 然后再执行备份 tb_order表的逻辑。

  • 业务中执行插入订单日志操作。

  • 最后,又备份了tb_orderlog表。

此时备份出来的数据,是存在问题的。因为备份出来的数据,tb_stock表与tb_order表的数据不一 致(有最新操作的订单信息,但是库存数没减)。

  • 再来分析一下加了全局锁后的情况

 

 

对数据库进行进行逻辑备份之前,先对整个数据库加上全局锁,一旦加了全局锁之后,其他的DDL、 DML全部都处于阻塞状态,但是可以执行DQL语句,也就是处于只读状态,而数据备份就是查询操作。 那么数据在进行逻辑备份的过程中,数据库中的数据就是不会发生变化的,这样就保证了数据的一致性 和完整性。

语法:

加全局锁:
flush tables with read lock ;

数据备份:
mysqldump -uroot –p1234 itcast > itcast.sql

释放锁:
unlock tables ;

注意:

如果出现报错mysqldump: Got error: 1045: Access denied for user 'root'@'server' (using password: YES) when trying to connect

这个错误是由于mysqldump命令在尝试连接到MySQL数据库时,使用的用户名和密码不正确导致的。解决方案如下:

  1. 确保你输入的用户名和密码是正确的,特别是密码是否正确。可以尝试重新输入密码,确保没有输入错误。

  2. 确保你有足够的权限来执行mysqldump命令。如果你是使用root用户执行该命令,可以尝试使用sudo命令来提升权限。

  3. 如果你使用的是远程连接MySQL数据库,确保了远程连接权限。可以检查MySQL服务器的配置文件,确认是否允许远程连接。

  4. 如果你使用的是localhost连接,可以尝试使用127.0.0.1代替localhost来连接MySQL数据库。有时候这个问题是由于DNS解析问题导致的。

  5. 如果以上方法都没有解决问题,可以尝试重置MySQL的root密码。具体方法可以参考MySQL官方文档或者相关教程。

 

 

特点

数据库中加全局锁,是一个比较重的操作,存在以下问题:

  • 如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。

  • 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导 致主从延迟。

在InnoDB引擎中,我们可以在备份时加上参数 --single-transaction 参数来完成不加锁的一致 性数据备份。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows篇|连接共享文件夹映射驱动器教程

前言 昨天给小伙伴们分享了如何设置Windows共享文件夹的教程 超简单设置Windows共享文件夹,传输文件无烦恼 A电脑设置完共享文件夹之后,只要在同一局域网下,所有的电子设备都可以连接访问A电脑的共享文件夹里的内容。 这样就省去了U盘传输的麻烦,只要A电脑开着机,文件放入…

Mac如何设置一位数密码?

一、问题 Mac如何设置一位数密码? 二、解答 1、打开终端 2、清除全局账户策略 sudo pwpolicy -clearaccountpolicies 输入开机密码,这里是看不见的,输入完回车即可 3、重新设置密码 (1)打开设置-->用户和群组…

Docker 容器卷

1、概念介绍 如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了,如果要开启,我们一般使用--privlegedtrue命令,扩大…

Visual Studio Code安装配置C/C++教程 (windows版,亲测可行)

一.下载 Visual Studio Code https://code.visualstudio.com/ 二.安装 选择想要安装的位置: 后面的点击下一步即可。 三.下载编译器MinGW vscode只是写代码的工具,使用编译器才能编译写的C/C程序,将它转为可执行文件。 MinGW下载链接:…

24.云原生ArgoCD高级之数据加密seale sealed

云原生专栏大纲 文章目录 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami Sealed Secrets工作流程安装sealed-secrets和kubeseal安装sealed-secrets-controller安装kubeseal通过kubeseal将sealed-secrets公钥拿出来通过kubeseal加密secrets替换kustomize下secret为…

html2canvas 截图功能使用 VUE

html2canvas 是一个 JavaScript 库,可以将网页内容转换为 Canvas 元素,并生成图像或 PDF 文件。使用 html2canvas,你可以在客户端将网页的内容截图,并将其作为图像或 PDF 文件保存或分享。 以下是一些 html2canvas 库的特点和用途…

银河麒麟v10服务器版,specvirt测试

1 两台服务器,一台为SUT,一台为Phyclient。 1.1 两台服务器均编译安装gcc和qemu 按银河麒麟v10服务器arm版,qemugcc,跨架构安装虚拟机中步骤,编译安装gcc-9.3.0和qemu-7.0.0。 2 SUT服务器操作 2.1 mount数据盘到/…

XGB-1:XGBoost安装及快速上手

XGBoost是“Extreme Gradient Boosting”的缩写,是一种高效的机器学习算法,用于分类、回归和排序问题。它由陈天奇(Tianqi Chen)在2014年首次提出,并迅速在数据科学竞赛和工业界获得广泛应用。XGBoost基于梯度提升框架…

10个React状态管理库推荐

本文将为您推荐十款实用的React状态管理库,帮助您打造出高效、可维护的前端应用。让我们一起看看这些库的魅力所在! 在前端开发中,状态管理是至关重要的一环。React作为一款流行的前端框架,其强大的状态管理功能备受开发者青睐。…

撰写出色的时事政治新闻资讯稿:窍门和技巧

撰写出色的时事政治新闻资讯稿:窍门和技巧 文章大纲写新闻/资讯(结构部分)较为复杂的标题(额外扩展)相关案例去除引题去除引题和副题注意事项讲一下什么叫导语。叙述式结论式描写式提问式摘要式 主体一要新二要“小”三…

当人工智能遇上教育,会擦出怎样的火花?

在这个时代,科技的风暴正以前所未有的速度席卷全球。其中,人工智能,这个被誉为21世纪的“科技之星”,正悄然改变着我们的生活。但是,当人工智能遇上传统教育领域时,你猜会发生什么? 有人说&…

宠物商业数据分析

一、宠物热销品类分布 欧睿国际更有一份数据表明,宠物食品在所有“它经济”中占比是最大,仅仅是猫狗食品就达到了59.1%,增速也远高于其他宠物用品。 2018年,中国就已经有超7700万独居成年人口,国内养宠主力军中90后占…

Shopee越南本土店好做吗?越南本土Shopee店家如何收款?站斧浏览器

Shopee越南本土店好做吗? 对于越南本土的Shopee店家来说,他们可能会关心Shopee平台的运营情况和是否适合他们开展电商业务。那么,Shopee好做吗?以下是一些相关的讨论点。 用户基础和市场规模 作为东南亚地区最大的电商平台之一…

10 排序的概念

目录 1.排序的概念和运用 2.排序的分类 1. 排序的概念及运用 1.1 排序的概念 排序: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作 稳定性:假定在待排序的记录序列中,存在…

Transformer 自然语言处理(四)

原文:Natural Language Processing with Transformers 译者:飞龙 协议:CC BY-NC-SA 4.0 第十章:从头开始训练变换器 在本书的开头段落中,我们提到了一个名为 GitHub Copilot 的复杂应用,它使用类似 GPT 的…

护林防火人人有责!无人机+智能网关V4烟火检测算法助力森林防火

一年一度的春节即将来临,人们在欢度节日的同时,一种危险也悄然来临。随着2008年《森林防火条例》的颁发,护林防火也逐渐被人们了解。特别是在春节时期,山区山高林密,且冬季树木干燥,一旦有人在燃放烟花爆竹…

vue中的async和await

目录 一. 错误处理和重试逻辑 二. 并发请求 三. 条件逻辑 四. 异步初始化 五. 使用 Vuex 和异步操作 在 Vue.js 中,async 和 await 的高级用法通常涉及更复杂的异步逻辑处理,包括错误处理、条件逻辑、并发请求等。以下是一些高级用法的示例&#xf…

MySQL-运维-主从复制

一、概述 二、原理 三、搭建 1、服务器准备 2、主库配置 (1)、修改配置文件/etc/my.cnf (2)、重启MySQL服务器 (3)、登录mysql,创建远程链接的账号,并授予主从复制权限 &#xff0…

微调实操一: 增量预训练(Pretraining)

1、前言 《微调入门篇:大模型微调的理论学习》我们对大模型微调理论有了基本了解,这篇结合我们现实中常见的场景,进行大模型微调实操部分的了解和学习,之前我有写过类似的文章《实践篇:大模型微调增量预训练实践(二)》利用的MedicalGPT的源码在colab进行操作, 由于MedicalGPT代…

【JS】基于React的Next.js环境配置与示例

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍基于React的Next.js环境配置与示例。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…
最新文章