一、数据库升级

#1.提出方案

1)升级的方法

2)升级的步骤

3)升级的时间

4)升级步骤可能会出现的问题

5)出现的问题怎么解决,解决时间

6)升级后出现的问题

#2.搭建新的数据库

#3.备份就数据库数据(如果需要修改存储引擎,才会备份除了系统库的所有库,正常情况就是全部备份)

mysqldump -uroot -p -A -R --triggers --single-transaction --master-data=2 > /tmp/full.sql

#4.将备份的数据库推送大哦新的数据库

scp rsync 硬件 NFS

#5.导入数据

mysql -uroot -p < /tmp/full.sql

#6.测试数据可用性

测试环境或开发环境打一个项目,测试

#7.修改程序代码,将数据库信息修改为新的数据库地址

base.xmldb_host: db_user: db_password:

#8.重新上线

二、InnoDB的事务介绍

1.事务周期

1)成功的事务

begin;

sql1;

sql2;

... ...

commit;

2)失败的事务

begin;

sql1;

sql2;

... ...

rollback;

2.事务的特性(ACID)

Atomic(原子性)

所有语句作为一个单元全部成功执行或全部取消。

Consistent(一致性)

如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一致状态。

Isolated(隔离性)

事务之间不相互影响。

Durable(持久性)

事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失。

3.事务的控制语句

begin;#开启一个事务

commit;#提交一个事务

rollback;#回滚一个事务

autocommit#自动提交

三、事务的日志

1.redo log

redo:"重做",记录的是,内存数据页的变化过程

1)作用

在事务ACID过程中,实现的是 "D" 持久化的作用。

2)工作原理

#1.修改数据时:

1)首先数据会从磁盘取出,加载到内存的data buffer page

2)操作数据,使用update语句修改数据,数据 2 变成 1

3)id=2变成id=1的变化过程会记录到redo buffer page中

4)当执行commit后,mysql会将redo buffer page中的变化过程写入磁盘的redo log中

#2.查询时:

1)执行select查询语句

2)数据 id=2 会从磁盘加载到data buffer page

3)并且将redo log中id=2变成id=1的变化过程取出到内存的redo buffer page中

4)通过data buffer page的数据和redo buffer page的变化过程,得到结果 id=1

2.undo log

四、事务中的锁

1.什么是锁

1.锁 顾名思义就是锁定的意思

2.作用:在事务ACID特性过程中,“锁”和“隔离级别”一起来实现“I”隔离性的作用

2.锁的类别

排他锁:在修改一条数据是,其他人不得修改

共享锁:保证在多事务工作期间,数据查询时不会被阻塞

乐观锁:多事务操作时,数据可以被同时修改,谁先提交,谁修改成功

悲观锁:多事务操作时,数据只有一个人可以修改

3.多版本并发控制

1.只阻塞修改类操作(排他锁),不阻塞查询类操作(共享锁)

2.乐观锁的机制(谁先提交谁为准)

4.锁的粒度

MyISAM:表级锁

InnoDB:行级锁

5.事务的隔离级别

1)四种隔离级别

1.RU级别:READ UNCOMMITTED(未提交读),允许事务查看其他事务所进行的未提交更改

2.RC级别:READ COMMITTED,允许事务查看其他事务所进行的已提交更改

3.RR级别:REPEATABLE READ,允许事务查看其他事务所进行的已提交更改,需要重新登录数据库才能查看到提交的数据

4.串行化:SERIALIZABLE,将一个事务的结果与其他事务完全隔离

2)数据库专业名词

#1.脏读:

执行一个事务,还没有提交就被读取,可是事务回滚了,那么之前读到的数据就是脏数据

#2.幻读:

当删除一条数据时,刚删除,有别人插入同一条数据,我查看时以为是没有删除

#3.不可重复读

第一次读取数据和第二次读取数据之间数据被别人修改了,导致第一次读取的数据与第二次读取的数据不同

3)设置隔离级别

#1.查看隔离级别

mysql> show variables like '%iso%';

+---------------+-----------------+

| Variable_name | Value |

+---------------+-----------------+

| tx_isolation | REPEATABLE-READ |

+---------------+-----------------+

1 row in set (0.00 sec)

#2.设置数据库为RU级别

[root@db01 ~]# vim /etc/my.cnf

[mysqld]

transaction_isolation=read-uncommit

#transaction_isolation=read-commit

五、MySQL日志

1.错误日志

1.默认错误日志是开启

2.默认的路径是MySQL的数据目录 $datadir

3.默认的名字是 '主机名'.err

4.查看错误日志

mysql> show variables like 'log_error';

[root@db01 ~]# mysql -uroot -p123 -e "show variables like 'log_error'"

5.配置错误日志

[root@db01 ~]# vim /etc/my.cnf

[mysqld]

log_error=/usr/local/mysql/data/mysql.err

#log_error=mysql.err

#常用的数据库配置

[root@db01 ~]# vim /etc/my.cnf

[mysqld]

datadir=/usr/local/mysql/data

basedir=/usr/local/mysql

port=3306

socket=/tmp/mysql.sock

server_id=1

character-set-server=utf8

innodb_data_file_path=ibdata1:76M;ibdata2:12M:autoextend

log_error=/usr/local/mysql/data/mysql.err

[mysql]

socket=/tmp/mysql.sock

2.一般查询日志

1.默认一般查询日志是关闭的

2.如果开启默认的路径是MySQL的数据目录 $datadir

3.默认的名字是 '主机名'.log

4.查看一般查询日志

mysql> show variables like "general_log%";

[root@db01 ~]# mysql -uroot -p123 -e "show variables like 'general_log%'"

5.配置错误日志

[root@db01 ~]# vim /etc/my.cnf

[mysqld]

general_log=on

general_log_file=/usr/local/mysql/data/db01.log

#一般情况我们不会开启一般查询日志,因为所有的操作都会被记录,第一不安全,第二会浪费磁盘空间

3.二进制日志

1.默认二进制日志是关闭的

2.如果开启默认的路径是MySQL的数据目录 $datadir

3.一般指定的的名字是 mysql-bin.000001

4.查看二进制日志

mysql> show variables like 'log_bin';

[root@db01 ~]# mysql -uroot -p123 -e "show variables like 'log_bin'"

5.配置二进制日志

[root@db01 ~]# vim /etc/my.cnf

[mysqld]

server_id=1#在MySQL5.7中,必须配置server_id

log_bin=mysql-bin#在MySQL5.6版本,直接配置就开启了

1)作用

1.记录已提交的DML事务语句,并拆分为多个事件(event)来进行记录

2.记录所有DDL、DCL等语句,总之,二进制日志会记录所有对数据库发生修改的操作

3.可以用恢复数据

2)事件

1.在binlog中最小的记录单元为event

2.一个事务会被拆分成多个事件(event)

#事件(event)特性:

1.每个event都有一个开始位置(start position)和结束位置(stop position)。

2.所谓的位置就是event对整个二进制的文件的相对位置。

3.对于一个二进制日志中,前120个position是文件格式信息预留空间。

4.MySQL第一个记录的事件,都是从120开始的

4.慢日志

mysql数据库执行事务日志_第十章 MySQL事务及其日志介绍相关推荐

  1. mysql数据库限流方案_用于对MySQL数据库的并发操作进行控制的方法及装置的制造方法_3...

    的数据库操作特点,预先设置的所述第一限流类型可以不同于本实施例中的设置,同样可以实现本申请的技术方案,也在本申请的保护范围之内. [0103]步骤102-3:判断MySQL数据库的threads_ru ...

  2. mysql数据库单用户模式_干掉一堆mysql数据库,仅需这样一个shell脚本(推荐)

    一大早就被电话吵醒了,云某项目数据库全挂了,启动不了(睡得太死,没听到报警短信),吓得不轻啊! 电话中说所有mysql数据库主库都启动不了,但从库正常,怀疑是主库去连其它阿里云的主库了.这些数据库,以 ...

  3. mysql数据库localhost已断开_完美解决MySQL通过localhost无法连接数据库的问题

    问题:一台服务器的PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也正常.MySQL的权限设置正确,且通过mysql命令行客户端 ...

  4. mysql数据库被远程连接_如何让mysql数据库准许被远程连接访问

    第一:更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称'%'. 或 ...

  5. mysql数据库设置索引 以下_如何设置MySQL数据库表的索引总长度

    匿名用户 1级 2018-10-05 回答 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 My ...

  6. mysql数据库历史语句提取_如何从MySQL数据库的不同表中提取创建语句?

    我想通过SHOW CREATE TABLE db.table或SHOW CREATE TABLE db1.mytableor提取我的50个MySQL数据库中的所有创建语句SHOW CREATE TAB ...

  7. 如何查看mysql数据库名字和密码_如何查看mysql数据库的登录名和密码

    跃然一笑 如何查看mysql数据库的登录名和密码:通过Windows的服务管理器查看.首先安装Maki5.服务端 "开始"-"运行",输入"servi ...

  8. mysql数据库名忘了_忘了mysql数据库密码,该怎么办???

    今天进行数据库的连接,突然发现数据库的密码忘了,这可怎么办,着实吓死宝宝了,通过实验,终于找到方法了,仅供参考... 一般进入数据库的方法如下: 通过登录mysql系统, # mysql -uroot ...

  9. mysql数据库优化韩顺平_韩顺平 Mysql数据库优化(一) 优化概述

    第 1 章Mysql优化概述 网站的瓶颈在web层(web吞吐量),程序对mysql的操作.我们前面讲的页面静态化技术和memcached技术目的减少对mysql访问,但是总是访问数据库,所以我们需要 ...

最新文章

  1. 基于自编码器的表征学习:如何攻克半监督和无监督学习?
  2. arcgis字段计算器赋值_ARCGIS操作技巧总结
  3. SAP Spartacus central Travis build的lint环节
  4. [react] 说说你对windowing的了解
  5. c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统 报告(内含代码).doc...
  6. 4-3 面向复用的设计模式
  7. bzoj 3111: [Zjoi2013]蚂蚁寻路(DP)
  8. linux cmake 快速安装
  9. duilib绝对定位与相对定位
  10. 膜片联轴器市场现状及未来发展趋势
  11. ZOOM视频会议总是很卡连接不上
  12. 摩尔定律与反摩尔定律
  13. WSUS无法发现客户端
  14. HEVC 参考帧管理(RPS)
  15. 在线CAD图纸批注功能方案比较与实现
  16. 读懂企业的七步成诗法
  17. 第5章第28节:演讲者放映、观众自行浏览和在展台浏览 [PowerPoint精美幻灯片实战教程]
  18. 自动驾驶人才眼中的“差老板”与“好老板”,分别有哪些特质?
  19. Python Pandas 根据一列或几列的值,对另一列赋值
  20. 【zzulioj 2127】 tmk射气球

热门文章

  1. python图像边缘检测_使用python获取图像中形状的轮廓(x,y)坐标
  2. python初始环境安装
  3. 更新Android Studio 3.0,你遇到坑了吗?
  4. maven项目引入新依赖问题
  5. Spring+SpringMVC+MyBatis+Maven框架整合
  6. 【分布式计算】关于Hadoop、Spark、Storm的讨论
  7. 信号学习第一课--基础知识
  8. Android隐藏标题设置全屏,设置背景
  9. DNS(1) DNS基本概念和域名系统
  10. 【HDU2825】Wireless Password【AC自动机,状态压缩DP】