mysql的事务控制和数据库的备份和恢复

news/2024/12/23 21:18:51 标签: 数据库, mysql

事务控制语句

行锁和死锁

行锁

两个客户端同时对同一索引行进行操作

客户端1正常运行

客户端2想修改,被锁行

除非将事务提交才能继续运行

死锁

客户端1删除第5行

客户端2设置第1行为排他锁

客户端1删除行1被锁

客户端2更新行5被锁

如何避免死锁

mysql的备份和还原以及日志管理

备份的目的就是灾难恢复

数据备份的分类

备份策略

全量备份

查看mysql数据保存路径

vim /etc/my.cnf

tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/

mysql的data目录,打包的格式.xz,保存到opt的目录下

mysqldump的备份和恢复

热备份

通过二进制日志进行备份和还原

先将mysql的二进制日志功能打开

二进制日志的记录格式

使用mysqlbinlog命令来查看日志文件

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001

二进制日志的分割
mysqladimn -u root -p123456 flush-log

通过二进制日志进行恢复
mysqlbinlog --no-defaults mysql-bin.000001 | mysql -u root -p123456

如果日志在当前文件则不需要指明路径,反之必须指明路径

mysqladmin -u root -p123456 flush-logs
我们是按天来执行的,我们就可以按天对数据库进行增量的备份。
mysqlbinlog --no-defaults mysql-bin.000004 | mysql -u root -p123456
基于位置和时间进行恢复

mysqlbinlog --no-defaults --start-position='1338' mysql-bin.000005 | mysql -u root -p123456
从指定位置开始恢复数据,一直恢复到文件的结尾。
mysqlbinlog --no-defaults --stop-position='1338' mysql-bin.000005 | mysql -u root -p123456
从开始恢复到结束位置
从指定位置开始,到指定的位置结束:
mysqlbinlog --no-defaults --start-position='1338' --stop-position='1338' mysql-bin.000005 |mysql -u root -p123456
mysqlbinlog --no-defaults --start-datetime='1338' mysql-bin.000005 | mysql -u root -p123456
从指定时间开始恢复数据,一直恢复到文件的结尾。
mysqlbinlog --no-defaults --stop-datetime='1338' mysql-bin.000005 | mysql -u root -p123456
从开始时间到结束位置
从指定时间开始,到指定的时间结束:
mysqlbinlog --no-defaults --start-datetime='2024-12-20 13:47:17' --stop-datetime='2024-12-20 13:47:38' mysql-bin.000005 |mysql -u root -p123456
log-error=/usr/local/mysql/date/mysql-error.log
#记录mysql在启动,停止或者是运行时,产生错误的日志
general_log=ON general_log_file=/usr/local/mysql/date/mysql_general.log
#开启mysql在使用过程中的记录日志
slow_query_log=ON slow_query_log_file=/usr/local/mysql/date/mysql_slow_query.log long_query_time=5
#开启慢查询日志,用来记录所有查询的时间超过long_query_time=5的记录,查询的执行时间超过5秒钟就会记录。
不注明,默认是10秒

开启错误日志

og-error=/usr/local/mysql/date/mysql-error.log
#记录mysql在启动,停止或者是运行时,产生错误的日志
general_log=ON general_log_file=/usr/local/mysql/date/mysql_general.log
#开启mysql在使用过程中的记录日志
slow_query_log=ON slow_query_log_file=/usr/local/mysql/date/mysql_slow_query.log long_query_time=5
#开启慢查询日志,用来记录所有查询的时间超过long_query_time=5的记录,查询的执行时间超过5秒钟就会记录。
不注明,默认是10秒


http://www.niftyadmin.cn/n/5797015.html

相关文章

数据结构 (数组和矩阵,初级动态规划)

下面的图来自数据结构朱允刚老师 多维数组: eg:已知A[3][5][11][3],请问 A[i][j][k][l]的地址是多少 假设A的数据类型是 T A (i*165j333*kl)* sizeof T(默认按行优先存储,如果是按列优先存储就反过来) A ( i 3j 15k 165l …

数据结构 C/C++(实验六:查找)

(大家好,今天分享的是数据结构的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 提要:实验题目 一、实验目的 二、实验内容及要求 三、源程序及注释 实验1代码(折半查…

Kafka快速扫描

Architecture 系统间解耦,异步通信,削峰填谷 Topic 消息主题,用于存储消息 Partition 分区,通过扩大分区,可以提高存储量 Broker 部署Kafka服务的设备 Leader kafka主分区 Follwer kafka从分区 高性能之道&#xff1a…

【开源库 | minizip】Linux(Ubuntu18.04)下,minizip的编译、交叉编译

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 2024-12-20 …

【RK3588 Linux 5.x 内核编程】-内核中断与ThreadedIRQ

内核中断与ThreadedIRQ 文章目录 内核中断与ThreadedIRQ1、Threaded IRQ介绍2、Threaded IRQ相关API3、驱动实现4、驱动验证当 Interrupt 触发时,Interrupt handler 应该执行得非常快,它不应该运行更多的时间(它不应该执行耗时的任务)。 如果我们有执行更多任务的中断处理程…

MyBatis实现自定义MyBatis插件详解

MyBatis实现自定义MyBatis插件详解 初识插件拦截对象拦截实现加载流程xml配置插件XMLConfigBuilder加载插件创建插件对象 例子确定拦截对象实现拦截接口配置插件测试 MyBatis的一个重要的特点就是插件机制,使得MyBatis的具备较强的扩展性,我们可以根据My…

JavaIO 在 Android 中的应用

主要是学习如何设计这样的 IO 系统,学习思想而不是代码本身。 1、装饰模式在 IO 中的应用 IO 嵌套其实使用到了装饰模式。装饰模式在 Android 中有大量的使用实例,比如 Context 体系: 可以看到 Context 还是基本上遵循了标准装饰模式的结构…

windows C#-编写复制构造函数

C # 记录为对象提供复制构造函数,但对于类,你必须自行编写。 编写适用于类层次结构中所有派生类型的复制构造函数可能很困难。 如果类不是 sealed,则强烈建议考虑创建 record class 类型的层次结构,以使用编译器合成的复制构造函…