mysql数据库操作日志
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于mysql数据库操作日志内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在mysql数据库操作日志相关知识领域提供全面立体的资料补充。同时还包含 machine_start、macox、magellan 的知识内容,欢迎查阅!
mysql数据库操作日志相关知识
-
mysql二进制日志文件恢复数据库二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复。二进制日志文件的弊端 二进制日志文件开启后,所有对数据库操作的记录均会被记录到此文件,所以,当长时间开启之后,日志文件会变得很大,占用磁盘空间。使用二进制日志文件恢复数据库开启日志文件 mysql默认是不开启日志文件的功能的,需要我们手动开启。操作如下:1、 打开mysql安装目录\my.ini(windows系统是my.ini文件,linux是my.cnf文件)。2、 找到[mysqld]这个标签,在此标签下面一行,添加语句:log-bin=binary-log。上面语句中,log-bin说明要开启二进制日志文件,binary-log是二进制日志文件的名字。(测试的时候我设置的:lo
-
简介操作MySQL日志的一些方法我们可以在mysql的安装目录下看到mysql的二进制日志文件,如mysql-bin.000***等,很多人都不及时的处理,导致整个硬盘被塞满也是有可能的。这些是数据库的操作日志。它记录了我们平时使用的sql语句命令,即使这个sql语句没有被执行,也会被记录,它包括执行时间之类的都详细在案,其实 它的目的有两个:一是方便我们查错和恢复数据库;二是为了主从服务器之间同步数据用的,主从服务器上所有操作都记录在日志里,从服务器可以根据这些日志来进行相同的操作,确保主从两个同步。查看mysql日志的命令:?#mysql -u user -p //user代表你的mysql用户名 Enter password: (输入密码) //输入密码后就进入mysql的控制台 mysql> show master logs;
-
如何通过 MySQL 的二进制日志恢复数据库数据经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过 MySQL 的二机制日志(binlog)来恢复数据。系统环境操作系统:CentOS 6.5 X64 (虚拟机);Web 服务:PHP+MySQL+apache;网站:为方便,直接在本地用蝉知系统搭建一个演示站点;操作步骤1、开启 binlog 功能及基本操作要使用 MySQL 的 binlog 日志功能,首先要在 MySQL 的配置文件中开启该功能,操作很简单。找到 MySQL 的配置文件,在文件中添加一行 log_bin = mysql-bin 即可。其实在我安装的各种 MySQL 环境中,该功能通常都是默认开启的。开启 binlog 功能后,在 MySQL 的数据库目录下就会有诸如 mysql-bin.000001、mysql-bin.000002等文件,这就是 MySQL 的二进制日志文件。每当
-
重新学习MySQL数据库10:MySQL里的那些日志们同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描述错误日志文件。 MySQL日志文件系统的组成 a、错误日志:记录启动、运行或停止mysqld时出现的问题。 b、通用日志:记录建立的客户端连接和执行的语句。 c、更新日志:记录更改数据的语句。该日志在MySQL 5
mysql数据库操作日志相关课程
-
MySQL提升课程 全面讲解MySQL架构设计 如何获得MySQL最优性能?如何建立MySQL高可用集群?如何搭建稳定高效的MySQL环境?国内顶级电商公司数据库专家带你成为一名优秀的DBA。
讲师:sqlercn 中级 4050人正在学习
mysql数据库操作日志相关教程
- MySQL 数据库的死锁、事务日志 死锁和事务日志也是数据库事务绕不开的部分,本小节将重点介绍数据库的死锁和事务日志,让大家对死锁和事务日志能有基本的认识。
- 1.3 实战 python 操作 MySQL 数据库 这里我们将使用前面提到的 mysqlclient 模块来操作 MySQL 数据库。第一步安装 mysqlclient 模块:$ pip3 install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple 安装好了之后,我们可以在 python 解释器中导入下模块:[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import MySQLdb>>> MySQLdb.__version__'1.4.6'>>> 我们事先准备好了一个 MySQL 服务, 部署在云服务器上。本地安装好 mysql 客户端,然后通过如下方式连接 MySQL 数据库:[shen@shen ~]$ mysql -h 180.76.152.113 -P 9002 -u store -pstore.123@mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 68920Server version: 5.7.26 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 新建一个数据库,名为 django-manual,然后在该数据库中新建了一个简单的 user 表。接下来我们会使用 mysqlclient 模块对该 user 表中的数据进行增删改查操作:mysql> create database django_manual default charset utf8;Query OK, 1 row affected (0.14 sec)mysql> use django_manualDatabase changedMySQL [django_manual]> show tables;Empty set (0.00 sec)mysql> CREATE TABLE `user` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` char(30) NOT NULL, -> `password` char(10) NOT NULL, -> `email` char(30) NOT NULL, -> PRIMARY KEY (`id`) -> ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARSET = utf8;mysql> show tables;+-------------------------+| Tables_in_django_manual |+-------------------------+| user |+-------------------------+1 row in set (0.00 sec)来看看如和使用 mysqlclient,模块操作数据库 django-manual。>>> import MySQLdb>>> conn = MySQLdb.connect(host='180.76.152.113', port=9002, user='store', passwd='store.123@', db='django_manual') # 连接数据库>>> sql = "insert into user(`name`, `password`, `email`) values ('test', 'xxxxxx', '222@qq.com')" # 插入数据的sql语句>>> cur = conn.cursor() # 获取游标>>> cur.execute(sql) # 执行sql语句1 >>> conn.commit() # 提交操作# commit 成功后,去另一个窗口查看 mysql 中的数据库数据mysql > select * from user;+----+------+----------+------------+| id | name | password | email |+----+------+----------+------------+| 10 | test | xxxxxx | 222@qq.com |+----+------+----------+------------+1 row in set (0.00 sec)这里我们可以看到 mysqlclient 模块中的几个常用方法:MySQLdb.connect() 方法:连接 mysql 数据库,会在这里输入 mysql 服务地址,开放端口,用户名和密码以及要使用到的数据库名;conn.cursor():创建游标,固定做法;cur.execute():通过游标的 execute() 方法可以执行 sql 语句,其返回值表示的是操作的记录数,比如这里我们新增了一条记录,返回的值为1;conn.commit():对于数据库有更新的动作,比如新增数据、修改数据和删除数据等,最后需要使用 commit() 方法提交动作,而对于查询操作而言则不需要。如果想自动 commit 动作,也是有办法的:>>> conn = MySQLdb.connect(...)>>> conn.autocommit(True)>>> ...上面是新增单条记录,我们也可以新增多条记录,操作如下:>>> # 在前面的基础上继续执行>>> conn.autocommit(True) # 设置自动提交>>> cur = conn.cursor()>>> data = (('user%d' % i, 'xxxxxx', '28%d@qq.com' % i) for i in range(10))>>> cur.executemany('insert into user(`name`, `password`, `email`) values (%s, %s, %s);', data)10# 在另一个窗口,可以看到 user 表中的记录已经有11条了select count(*) from user;+----------+| count(*) |+----------+| 11 |+----------+1 row in set (0.00 sec)这里插入多条数据,使用的是游标的 executemany() 方法。如果在插入多条记录中遇到异常,需要执行回滚动作,一般写法如下:conn = MySQLdb.connect(...)try: # 执行动作 ...except Exception as e: conn.rollback()此外,我们一般用到的比较多的是查询相关的操作。这里有游标的方法:fetchone():只取一条记录,然后游标后移一位;fetchmany():取多条记录,参数为获取的记录数,执行完后游标移动相应位置;fetchall():取出 sql 执行的所有记录,游标移动至末尾;下面我们用前面生成的 11 条记录来进行操作:>>> # 假设前面已经获得连接信息conn和游标cur>>> sql = 'select * from user where 1=1 and name like "user%"'>>> cur.execute(sql)10>>> data1 = cur.fetchone()>>> print(data1)(11, 'user0', 'xxxxxx', '280@qq.com')# 看到再次获取一条记录时,取得是下一条数据>>> data2 = cur.fetchone()>>> print(data2)(12, 'user1', 'xxxxxx', '281@qq.com')# 这次获取5条数据,从user2开始>>> data3 = cur.fetchmany(5)>>> print(data3)((13, 'user2', 'xxxxxx', '282@qq.com'), (14, 'user3', 'xxxxxx', '283@qq.com'), (15, 'user4', 'xxxxxx', '284@qq.com'), (16, 'user5', 'xxxxxx', '285@qq.com'), (17, 'user6', 'xxxxxx', '286@qq.com'))# 最后用fetchall()方法获取最后的所有数据,还剩下10-1-1-5=3条记录>>> print(data4)((18, 'user7', 'xxxxxx', '287@qq.com'), (19, 'user8', 'xxxxxx', '288@qq.com'), (20, 'user9', 'xxxxxx', '289@qq.com'))# 游标指向最后位置,再次获取时已经没有数据了>>> data5 = cur.fetchone()>>> print(data5)None通过上面的代码演示,我想我们应该理解游标的作用了,就是每执行一次 fetch 函数,对应的游标会向后移动相应位置。
- 1.1 日志文件 重要日志模块:二进制日志-binlog二进制日志,其实就是我们平常所说的 binlog,它是 MySQL 重要的日志模块,在 Server 层实现。binlog 以二进制形式,将所有修改数据的 query 记录到日志文件中,包括 query 语句、执行时间、相关事务信息等。binlog 的开启,通过在配置文件 my.cnf 中,显式指定参数 log-bin=file_name。如果未指定 file_name,则会记录为 mysql-bin.******(* 代表 0~9 之间的某个数字,表示日志的序号)log-bin = /mysql/log/mysql-bin # binlog的存储路径下面为一条insert语句所生成的binlog内容:root@localhost [tempdb]>insert into a values(1);Query OK, 1 row affected (0.00 sec)[root@mysql-test-1 log]# mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000017#200413 0:18:17 server id 1873306 end_log_pos 556 Write_rows: table id 280 flags: STMT_END_F### INSERT INTO `tempdb`.`a`### SET### @1=1 /* INT meta=0 nullable=1 is_null=0 */# at 556#200413 0:18:17 server id 1873306 end_log_pos 583 Xid = 4713735COMMIT/*!*/;重要日志模块:InnoDB redo logredo log,是存储引擎 InnoDB 生成的日志,主要为了保证数据的可靠性。redo log 记录了 InnoDB 所做的所有物理变更和事务信息。redo log 默认存放在数据目录下面,可以通过修改 innodb_log_file_size 和 innodb_log_files_in_group 来配置 redo log 的文件数量和每个日志文件的大小。innodb_log_file_size = 1000M # 每个redo log文件的大小innodb_log_files_in_group = 3 # redo log文件数量错误日志:error log错误日志,记录 MySQL 每次启动关闭的详细信息,以及运行过程中比较严重的警告和错误信息。错误日志默认是关闭的,可以通过配置参数 log-error 进行开启,以及指定存储路径。log-error = /mysql/log/mysql-error.log # 错误日志的存储路径1.1.4 慢查询日志:slow query log慢查询日志,记录 MySQL 中执行时间较长的 query,包括执行时间、执行时长、执行用户、主机等信息。慢查询日志默认是关闭的,可以通过配置 slow_query_log 进行开启。慢查询的阈值和存储路径,通过配置参数 long_query_time 和 slow_query_log_file 实现。slow_query_log = 1 #开启慢查询long_query_time = 1 #设置慢查询阈值为1sslow_query_log_file = /mysql/log/mysql-slow.log #设置慢查询日志存储路径1.1.5 一般查询日志:general query log一般查询日志,记录 MySQL 中所有的 query。慢查询记录的是超过阈值的 query,而一般查询日志记录的是所有的 query。一般查询日志的开启需要慎重,因为开启后对 MySQL 的性能有比较大的影响。一般查询日志默认是关闭的,可以通过配置参数 general_log 进行开启。存储路径可以通过配置参数 general_log_file 来实现general_log = OFF #默认是关闭的general_log_file = /mysql/data/mysql-general.log #设置查询日志存储路径
- MySQL 创建数据库 前面章节介绍了如何登陆连接 MySQL 数据库,连接 MySQL 数据库之后就可以对数据库进行操作了,本小节将介绍如何创建一个属于自己项目的数据库。
- Django 使用原生的 SQL 语句操作 MySQL 数据库 在 Django 中有两种操作 MySQL 数据库的方式,一种是使用原生的 SQL 语句操作 MySQL,另一种方式就是使用 Django 内置的 ORM 模型完成数据库的增删改查操作。后者是 Django 框架的一个的核心模块,它让开发者对数据库的操作更友好和优雅。
- 2. 事务日志 使用事务日志可以提高事务的安全性和效率:修改表数据时,只需要在内存中进行修改,再持久化到磁盘上的事务日志,而不用每次都将修改的数据持久化到磁盘。事务日志持久化后,内存中所修改的数据可以慢慢再刷到磁盘,这种方式称为预写式日志,修改数据需要写两次磁盘;效率快很多,因为事务日志采用追加方式,写日志的操作只是磁盘上一小块区域的顺序IO,不像随机IO需要在磁盘多个地方移动磁头;万一数据库发生崩溃,可以通过已经持久化的事务日志,来自动恢复数据。
mysql数据库操作日志相关搜索
-
mac osx
machine_start
macox
magellan
malloc
manifest
manifest文件
map
map 遍历
mapreduce编程
maps google com
margin
margin bottom
margin left
margin right
margin top
marginbottom
marginheight
marginleft
margintop