mysql数据库怎么开启binlog

mysql数据库怎么开启binlog,第1张

当启动Binlog后,事务会产生Binlog Event,这些Event被看做事务数据的一部分。因此要保证事务的Binlog Event和InnoDB引擎中的数据的一致性。所以带Binlog的CrashSafe要求MySQL宕机重启后能够保证:

- 所有已经提交的事务的数据仍然存在。

- 所有没有提交的事务的数据自动回滚。

- 所有已经提交了的事务的Binlog Event也仍然存在。

- 所有没有提交事务没有记录Binlog Event。

这些要求很好理解,如果重启后数据还在,但是Binlog Event没有了,就没办法复制到其他节点上了。如果重启后,数据没了,但是Binlog Event还在,那么不存在的数据就会被复制到其他节点上,从而导致主从的不一致。

为了保证带Binlog的CrashSafe,MySQL内部使用的两阶段提交(Two Phase Commit)。

mysql 主从配置 从如何寻找主的binlog 日志

看下做主机的服务器日志模式是不是binlog的啊。然后找到主服务器binlog的最新位置,通过CHANGEMASTER命令将MASTER_LOG_FILE和MASTER_LOG_POS重新指定一下。

master_log_file='binlog.000002'从新指认过了,

看了一下mysql的错误日志:

SlaveI/O:errorconnectingtomaster'[email protected]:3306'-retry-time:60retries:7,Error_code:2049

master_log_file指定了,还要指定正确的MASTER_LOG_POS位置啊。

其实最简单的就是做主从的时候,先把主机数据库连接全部停掉,然后把主机数据库备份一下,拿着这个备份文件将备库数据库做下恢复,保证主从两个数据库一致。

然后在做主从,在主机创建数据库用户用于备库连接,将权限全部附好。然后把备库的读取点执行到主机最新的日志文件,和最后的执行点(主从备份就是备机不停的读主机的binlog日志并执行),就是MASTER_LOG_FILE和MASTER_LOG_POS。

本回答由提问者推荐

mysql开启binlog日志_mysql查看binlog日志内容

如何查看mysql数据库的日志文件

这是一个慢查询日志的展示工具,能够帮助DBA或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看slow-log。QAN(QueryAnalytics)

PMM目前有2个版本,但是对于QAN来说其大致由三部分组成:

QAN-Agent(client):负责采集slow-log的数据并上报到服务端

QAN-API(server):负责存储采集的数据,并对外提供查询接口

QAN-APP:专门用来展示慢查询数据的grafana第三方插件

1.数据流转

slow-log-->QAN-Agent-->QAN-APIQAN-APP(grafana)

2.pmm1架构图

3.pmm2架构图

如何在MySql中记录SQL日志记录

log

long_query_time=1

log指示日志文件存放目录;

log_slow_queries指示记录执行时间长的sql日志目录;

long_query_time指示多长时间算是执行时间长,单位s。

Linux下这些配置项应该已经存在,只是被注释掉了,可以去掉注释。

mysql开启binlog日志_mysql查看binlog日志内容

如何查看自己被封了的QQ空间照片和日志和记事本内容

编辑好文本后 点击上边的 插入图片 然后再从电脑上选择图片 即可

怎样打开查看mysql binlog

在不重启的情况下,只能set global sql_log_bin=OFF在数据导入前先设定此参数数据导入完成后,可以再开启有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用mysql提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

1. check table 和 repair table

登陆mysql 终端:

mysql -uxxxxx -p dbname

check table tabtest

如果出现的结果说status是ok,则不用修复,如果有error,可以用:

repair table tabtest

进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpmyadmin里面也可以使用check/repair的功能。

2. myisamchk, isamchk

其中myisamchk适用于myisam类型的数据表,而isamchk适用于isam类型的数据表。这两条命令的主要参数相同,一般新的系统都使用myisam作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchk tablename.myi

进行检测,如果需要修复的话,可以使用:

myisamchk -of tablename.myi

关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保mysql服务器没有访问这个数据表,保险的情况下是最好在进行检测时把mysql服务器shutdown掉。

-----------------------------

另外可以把下面的命令放在你的rc.local里面启动mysql服务器前:

[ -x /tmp/mysql.sock ] &&/pathtochk/myisamchk -of /data_dir/*/*.myi

其中的/tmp/mysql.sock是mysql监听的sock文件位置,对于使用rpm安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,data_dir是你的mysql数据库存放的位置。

需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时mysql服务器必须没有启动!检测修复所有数据库(表)

mysql开启binlog日志_mysql查看binlog日志内容_03

怎么查看mysql日志

MySQL的日志文件模块启动后才会有日志记录。

开启日志服务:

在MY.INI里,MYSQLD项下添加log-bin=mysql。

如果只对某个库进行日志文件记录,那么再添加binlog-do-db=test,这样就只记录test数据库的日志,而放弃其他的。

添加完后,重新启动MYSQL的服务,日志文件开始工作了.

查看是否启用了日志命令:mysql>show variables like 'log_bin'

查看当前的日志命令:mysql>show master status

看二进制日志文件用mysqlbinlog命令:shell>mysqlbinlog mail-bin.000001查看mysql日志的方法: 使用bin目录下mysqlbinlog命令,如: bin>mysqlbinlog d:/mysql_log/mysql_bin.000001 bin>mysqlbinlog d:/mysql_log/mysql_bin.000002 bin>mysqlbinlog d:/mysql_log/mysql_bin.000003 bin>mysqlbinlog d:/mysql_log/mysql_bin.000004 bin>mysqlbinlog d:/mysql_log/mysql_bin.000005 使用sql语句也可查看mysql创建的二进制的文件目录: mysql>show master logs查看当前二进制文件状态: mysql>show master status

* 关于 binlog *

*************************************

--binlog 以一种更有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息。

--binlog 包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。

--binlog 还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。如果你想要记录所有语句(例如,为了识别有问题的查询),你应使用一般查询日志。

--binlog 的主要目的是在恢复使能够最大可能地更新数据库,因为 binlog 包含备份后进行的所有更新。

--binlog 还用于在主复制服务器上记录所有将发送给从服务器的语句。

--运行服务器时若启用 binlog 则性能大约慢1%。但是, binlog 的好处,即用于恢复并允许设置复制超过了这个小小的性能损失。

--当--log-bin[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值, 默认名为-bin后面所跟的主机名。如果给出了文件名,但没有包含路径,则文件被写入数据目录。建议指定一个文件名。如果你在日志名中提供了扩展名(例如,--log-bin=file_name.extension),则扩展名被悄悄除掉并忽略。

--mysqld在每个 binlog 名后面添加一个数字扩展名。每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_binlog_size,还会自动创建新的 binlog 。如果你正使用大的事务, binlog 还会超过max_binlog_size:事务全写入一个 binlog 中,绝对不要写入不同的 binlog 中。

--为了能够知道还使用了哪个不同的 binlog 文件,mysqld还创建一个 binlog 索引文件,包含所有使用的 binlog 文件的文件名。默认情况下与 binlog 文件的文件名相同,扩展名为'.index'。你可以用--log-bin-index[=file_name]选项更改 binlog 索引文件的文件名。当mysqld在运行时,不应手动编辑该文件;如果这样做将会使mysqld变得混乱。

--binlog 格式有一些已知限制,会影响从备份恢复。

--默认情况下,并不是每次写入时都将 binlog 与硬盘同步。因此如果 *** 作系统或机器(不仅仅是MySQL服务器)崩溃,有可能 binlog 中最后的语句丢失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使 binlog 在每N次 binlog 写入后与硬盘同步。

************************************************

*如何管理 MySQL 的 binlog *

************************************************

1、在 my.ini 中增加下述参数,指定保存更新到 binlog 的数据库:db_name,未在此指定的数据库将不记录 binlog

--binlog-do-db=db_name

2、在 my.ini 中增加下述参数,指定不保存更新到 binlog 的数据库:db_name

--binlog-ignore-db=db_name

3、如果 binlog 已经产生,可以通过 SQL 命令行清除:

/*

* 要清理日志,需按照以下步骤:

* 1 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。

* 2 使用SHOW MASTER LOGS获得主服务器上的一系列日志。

* 3 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。

* 4 制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)

* 5 清理所有的日志,但是不包括目标日志。

*

*/

/*

* 清除 binlog

*

* 为了执行RESET,您必须拥有RELOAD权限。

* 以下命令将删除列于索引文件中的所有 binlog,把 binlog 索引文件重新设置为空,并创建一个新的 binlog。

* (在以前版本的MySQL中,被称为FLUSH MASTER。)

*/

RESET MASTER

/*

* 清除指定的 binlog

*

*/

PURGE MASTER LOGS TO 'mysql-bin.010'

/*

* 清除日期为 2006-06-06 06:06:06 以前的 binlog

*

* BEFORE变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同义词。

*/

PURGE MASTER LOGS BEFORE '2006-06-06 06:06:06'

/*

* 清除3天前的 binlog

*

*/

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6692431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存