MySql运维篇---008:日志:错误日志、二进制日志、查询日志、慢查询日志,主从复制:概述 虚拟机更改ip注意事项、原理、搭建步骤

本文围绕MySQL展开,介绍了错误、二进制、查询、慢查询等日志的相关知识,包括日志的开启、查看、删除等操作。同时详细阐述了主从复制的概念、原理、搭建步骤及测试方法,通过主从复制可实现数据同步、读写分离等功能,提升数据库性能和可用性。

1. 日志

1.1 错误日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。

该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log 。查看日志位置:

#先登录mysql
mysql -uroot -p1234

#通过此系统变量查看日志文件的位置
show variables like '%log_error%';

在这里插入图片描述

#通过tail指令查看文件尾部的50行日志
tail -n 50 /var/log/mysqld.log	

在这里插入图片描述

1.2 二进制日志

1.2.1 介绍

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言:创建数据库…)语句和 DML(数据操纵语言:增删改)语句,但不包括数据查询(SELECT、SHOW)语句。

作用:

  • ①. 灾难时的数据恢复;
    • 因为二进制日志中记录了数据库、表、以及数据的变更。只需要把这里面的语句再次执行就可以恢复数据了。
  • ②. MySQL的主从复制。在MySQL8版本中
    • 主从复制底层原理就是基于二进制日志的,具体查看下一章。

mysql8.0版本默认二进制日志是开启着的,涉及到的参数如下:

#先登录mysql
mysql -uroot -p1234

#通过此系统变量来查看二进制日志相关的参数配置
show variables like '%log_bin%';

在这里插入图片描述

参数说明:

  • log_bin:on代表二进制日志是开着的。

  • log_bin_basename:最终生成的二进制日志文件就在/var/lib/mysql目录下,文件名叫做binlog,但是日志文件有可能有很多,binlog只是它的前缀。

    • 当前数据库服务器的binlog日志的基础名称(前缀),具体的binlog文件名需要再该basename的基础上加上编号(编号从000001开始往上自增)。
    • 第一个日志文件写满了或者日志的格式变更了之后,它会再次开启一个新的文件来写日志。
  • log_bin_index:binlog的索引文件,里面记录了当前服务器关联的binlog文件有哪些。

测试:

进入到/var/lib/mysql目录查看二进制文件到底有没有·

#不登录mysql执行
cd /var/lib/mysql

#可以看到二进制日志文件和索引文件
ll

#查看索引文件:里面就记录了当前mysql数据库关联的日志文件有哪些
cat binlog.index

在这里插入图片描述
在这里插入图片描述

1.2.2 格式

MySQL服务器中提供了多种格式来记录二进制日志,具体格式及特点如下:

日志格式 含义
STATEMENT 基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。
ROW 基于行的日志记录,记录的是每一行的数据变更。(默认)
MIXED 混合了STATEMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下会自动切换为ROW进行记录。

举例:如果我们执行了一条update语句,这条update语句影响的行数是5行

  • STATEMENT:记录的就是这条update语句
  • ROW :它记录的是update语句所影响的这五行,每一行的数据内容在变更之前怎么样,在变更之后是什么样。
#先登录mysql
mysql -uroot -p1234

#通过此系统变量,查看当前mysql的版本中默认的日志格式是那个
show variables like '%binlog_format%';

在这里插入图片描述

如果我们需要配置二进制日志的格式,只需要在 /etc/my.cnf 中配置 binlog_format 参数即可。

vim /etc/my.cnf 

#在这个文件中添加一行内容
binlog_format=STATEMENT

#重新启动mysql服务
systemctl restart mysqld.service

cd /var/lib/mysql

#可以看到此时重新生成了一个日志文件binlog.000005,原先是1~4。
#因为它的二进制日志格式改了,他不会再往原来的二进制日志文件写入了,而是写到一个新的日志文件中。
ll

在这里插入图片描述
在这里插入图片描述

再次查看此系统变量,发现日志格式已经修改为STATEMENT

#先登录mysql
mysql -uroot -p1234

#通过此系统变量,查看当前mysql的版本中默认的日志格式是哪个
show variables like '%binlog_format%';

在这里插入图片描述

1.2.3 查看

由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具 mysqlbinlog 来查看,具体语法:

#logfilename:二进制文件名
mysqlbinlog [ 参数选项 ] logfilename


参数选项:

	-d 		指定数据库名称,只列出指定的数据库相关操作。
	-o 		忽略掉日志中的前n行命令。
	-v 		将行事件(数据变更)重构为SQL语句
	-vv 	将行事件(数据变更)重构为SQL语句,并输出注释信息

测试:接下来呢我们就来设置一下这两种日志格式,来看一下它们之间的区别是什么样子的。

情况1:当前的日志格式是row

第一步:以db01数据库下的stu表为例进行演示。

客户端1:就是登录进mysql执行的命令

mysql -uroot -p1234

#当前的日志格式是row
show variables like '%binlog_format%';

use db01;

#查看db01数据库下面有哪些表
show tables;

#查看stu表下面有哪些数据
select * from stu;

在这里插入图片描述

程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。   程序(港台称之为程式) program(me)或procedure   chéng xù   概念1.:为进行某活动或过程所规定的途径。   概念2.程序是由序列组成的,告诉计算机如何完成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以还不能用自然语言编写计算机程序。   指示计算机按解决问题的步骤   实现预期目的而进行操作的一系列语句指令。一般分为系统程序应用程序两大类。 计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。由程序计数器(Program Counter)控制。程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。是用汇编语言、高级语言等开发编制出来的可以运行的文件,在计算机中称可执行文件(后缀名一般为.exe)。我们玩的游戏一般都是应用程序(但现在后缀名为.swf的Flash影片类的游戏也比较流行)   常见的编程语言   * .NET   * ActionScript   * APL、A+J   * Ada   * 汇编语言   * AWK   * Basic   o QBasic   o Visual Basic   * VBScript   * Brainfuck   * C、C++   o Objective-C   * Clipper   * COBOL   * dBase   * PASCAL、Delphi   * Forth   * Fortran   * FoxPro   * F#   * Fava   * IDL   * Java   * JavaScript   * J#   * LISP   * Lua   * LOGO   * Modula   * Nuva   * Perl   * PHP   * PL/I   * Prolog   * Python   * R   * Ruby   * Scheme   * Smalltalk   * Tcl/Tk   * Visual FoxPro   怎样成为一名程序员   第一阶段:掌握一种编程语言   学习内容:学习任意一种主流的编程语言。例如C++语言。   学习目标:熟练掌握一种语言的语法基本的编程技巧。   学习时间:3个月左右   注意事项:编程语言编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等。程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指 Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器 ,在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0编译、执行,所以: C++ 不等于 Visual C++ 6.0 。   第二阶段:掌握一种编程工具   学习内容:学习任意一种主流的编程工具。注意编程工具要第一阶段学习的编程语   言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0、C++ Builder 5.0。   学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。   学习时间:3个月左右   注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。   第三阶段:掌握“算法与数据结构”这门课程   学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。   学习目标:熟练掌握各种常用的算法与数据结构   学习时间:4个月左右   注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构算法的重要性。它能帮我们建立良好的程序分析与设计能力。   第四阶段:实现一个模拟的小型软件项目   学习内容:软件项目的开发过程   学习目标:掌握软件项目的基本开发过程方法   学习时间:4个月左右   注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐:   1、“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效。   2、 以它为基础再加以扩展,就可以做出实用的MIS软件来。   3、此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》   4、《JAVA数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》。   5、《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》   6、《DELPHI数据库系统开发实例导航》 《POWERBUILDER 8.0数据库系统开发实例导航》。 [编辑本段]社会上办事程序的定义 工作程序|按程序进行。   程序,是现在最吃香的提法。   [1]任何单位任何事情,首先强调的就是程序,因为管理界有句名言:细节决定成败。程序就是整治细节最好的工具。于是,现在我们的所有工作,无时无处不在强调程序。 因为有了规范的办事程序,现在我们这些平民百姓到政府机关办事比原来容易了许多,最起码知道办什么事该找哪个部门,知道办这个事应该用多长时间了。政府公开办事程序,也拉近了人民群众的关系。好,这是好得很的事。 好像是为了印证事物都是一分为二的道理一样,在赞颂程序的同时,我们也看到了程序冷酷的另一面。南宁见义勇为的英雄鲍光蛇在医院冷酷的程序中流尽了最后一滴血,公路收费站的值班人员因救护车交不出十元钱的过路费而坚决不放行救护车,终于使急需救助的患者丧命,……等等的例子,都为我们强调或者说奉为神圣规则的程序优先勾画出了它的原形。   程序,是管理方式的一种,是能够发挥出协调高效作用的工具,在我们的社会主义建设事业或者说现代化建设中,应该充分重视它的作用,应该不断地将我们的工作从无序整改到有序。   可是,当我们只关注形式而不关注实质的时候,有些事情就发展到了它的反面。程序不是医治百病的灵丹妙药,在它走向反面的时候,它是使那些官僚主义者视劳苦大众利益如不见的人们推脱掉自己应当承担的责任的最好的挡箭牌。因为越是严密完善的程序,按部就班执行起来越是要付出时间的代价,当时间被浪费了时候,因此引发的其他损失是不应该由模范执行了程序的人来负责的。 [编辑本段]程序的运行   为了一个程序运行,计算机加载程序代码,可能还要加载数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个引导序列开始的。   在大多数计算机中,操作系统例如视窗等,加载并且执行很多程序。在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值