MARIADB日志配置

日志是MariaDB数据库的重要组成部分,MariaDB用来记录MariaDB
数据库的客户端连接情况,SQL语句的执行情况和错误信息等

详细可进入个人博客查询:点击进入

1.分类:

  1. 二进制日志:以二进制的形式记录了数据库中的操作,但不记录查询语句
  2. 错误日志:记录MariaDB服务器的启动,关闭和运行错误等信息
  3. 通用查询日志:记录用户登录和记录查询的信息慢查询日志:记录执行时间超过指定时间的操作
  4. 事务日志:事务日志(InnoDB特有的日志)可以帮助提高事务的效率

 

除了二进制日志外,其他日志都是文本文件,日志文件通过存储在MariaDB数据库的数据目录下,默认情况下,只启动了错误日志功能,其他3类日志都需要数据库管理员进行设置

1.1 二进制日志

二进制日志主要记录数据库的变化情况,通过二进制日志可以查询MariaDB数据库中进行了哪些改变,一般大小体积上限为1G.

  • 启用和设置:

vim /etc/my.cnf
[mysqld]
log-bin=dir/file_nameServer-id=100

file_name是二进制日志存放的名字,格式为file_name.number,number格式是000001,000002等,每次MariaDB重新启动后,都会生成一个新的文件,二进制日志与数据库的数据文件最好不要在同一块硬盘,这样,即使数据库文件所在的磁盘损坏,也可以使用另一个硬盘上的二进制日志来恢复数据库文件

  • 查看是否生效以及查看二进制文件日志

MariaDB [(none)]> show global variables like “%log_bin%”;(用来查看二进制有没有生效)
MariaDB [(none)]>show binary logs; #显示当前服务器使用的二进制文件及大小
MariaDB [(none)]>show master logs; #显示主服务器使用的二进制文件及大小
MariaDB [(none)]>show master status; #当前使用的二进制文件及所处位置
MariaDB [(none)]>flush logs; #滚动日志,注意:flush logs一般只会滚动中继日志和二进制日志。
MariaDB [(none)]>show binlog events\G #查看所有的二进制信息

查看二进制日志:mysqlbinlog file_name(可能需要关闭默认编码方式)

  • 删除二进制文件

reset master;
purge master logs to ‘filename,number’;
purge master logs to ‘yyyy-mm-dd hh:MM:ss’;删除设定时间之前生效的日志

  • 二进制日志其他设置(配置文件中)
    • binlog_cache_size=32768 #Cache是MariaDB用来提高binlog的记录效率而设计的一个用于短时间内临时缓存binlog数据的内存区域
    • binlog_stmt_cache_size= 32768 #当非事务语句使用二进制日志缓存,但是超出binlog_stmt_cache_size时,使用一个临时文件来存放这些语句
    • sync_binlog=10 #设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正数值都表示对二进制每多少次写操作之后同步一次
    • expire_log_days={0..99} #设定二进制日志的过期天数,超出此天数的二进制日志文件将被自动删除。默认为0,表示不启用过期自动删除功能
    • binlog-format= {ROW|STATEMENT|MIXED}
      • 二进制日志中常用的定义格式:
      • 语句(statement):默认的记录格式;
      • 行(row):定义的并非数据本身而是这一行的数据是什么;
      • 混合模式(mixed):交替使用行和语句、由mysql服务器自行判断。

2.错误日志

错误日志:记录了mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息,默认为开启的.

MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE ‘%log%’;

显示结果:log_error//错误日志位置log_warnings//是否把警告日志写入错误日志,用0和1关闭或开启
定义错误日志,在配置文件中添加:
Log_error=DIR/[filename]
删除错误日志:只能使用重命名原来的错误日志文件,手动冲洗日志创建一个新的日志方式如下:
#mv[old_file] [new_file]#mysqladminflush-logs

3.查询日志

查询日志:默认情况下查询日志是关闭的.由于查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的.如若不是为了调试数据库的目的建议不要开启查询日志.查看查询日志是否开启:
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE ‘%log%’;显示结果:
general_log | OFF #定义查询日志是否开启
general_log_file | /mydata/data/stu18.log #定义查询日志的文件地址名称
log | OFF #是否开启日志(若开启则表示开启所有的日志功能)
log_output | FILE #日志的输出的位置
开启查询日志

# vim /etc/my.cnf
general_log=ONgeneral_log_file=dir/file_name

4.慢查询日志

慢查询日志:用来记录执行时间超过指定时间的查询语句.通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化.一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行了很长时间的查询语句.可以帮助我们定位性能问题的。查看慢查询日志的定义:
MariaDB [(none)]>SHOW GLOBAL VARIABLES LIKE ‘%log%’;显示结果:

慢查询日志:用来记录执行时间超过指定时间的查询语句.通过慢查询日志,可以查找出哪些查询语句的执行效率很低,
以便进行优化.一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行了很长时间的查询
语句.可以帮助我们定位性能问题的。 查看慢查询日志的定义:
 MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE ‘%log%’; 显示结果:

slow_query_log| OFF #定义慢查询日志的
slow_query_log_file
 启动和设置慢查询日志:
|www-slow.log#输出方式为file(文件)时定义慢查询日志的位置

 通过配置文件my.cnf中的log-slow-queries选项可以开启慢查询日志;形式如下
[mysqld]
slow_query_log=1
log-slow-queries [= DIR/[filename] ]
通过登录mysql服务器直接定义,方式如下:
MariaDB [(none)]>set global slow_query_log=1;
MariaDB [(none)]> set session long_query_time=0.001; #更改时间(当前session中,退出则重置)
MariaDB [(none)]> set global long_query_time=0.001; #更改时间(全局中,重启服务则重置)
MariaDB [(none)]> SHOW VARIABLES LIKE ‘long%’; #查询定义时间
MariaDB [(none)]> show global variables like “%slow%”; #查看慢查询日志开启状态

5.事务日志

 

MATIADB主从复制

 

Mariadb主从复制是Mariadb集群的基础,在Mariadb集群中为了保证数据的一致型,
需要在Mariadb集群前端添加读写分离器,只将写入操作交给指定节点写入数据,这个
节点就是主节点;将读操作交给集群中其他不执行写入操作的节点,这个节点就是从节
点,那么从节点的数据从那里来?就是复制主节点的上面的数据

主从复制的作用
 数据分布:能够将数据分散到多个位置,可以实现异地灾备
 负载均衡:读操作,适用于读密集型的应用
 备份:备份的时候可以停止从节点进行备份,备份更安全
 高可用和故障切换:主节点故障,可以将从节点提升为主节点(需要手动实现,或者脚
本监控实现,不如corosync或者heartbeat之类高可用方案)
 Mariadb升级测试:高版本数据库通过复制获得数据,然后进行测试

1.复制时应该注意的问题:

  • 1:复制如何开始
    • 主节点运行很长时间,且已经有一定规模的数据,如何启动复制?解决方法:在主节点做一个完全备份,并记录二进制日志文件及位置;在从节点恢复此完全备份,并在启动复制时从记录的二进制日志文件和位置开始;
  • 2:如何限制从服务器只读
    • 在从服务器启动read_only;但仅对非具有SUPER权限的用户有效;阻止所有用户 : MariaDB> FLUSH TABLES WITH READ LOCK;
  • 3:如何保证主从复制时的事务安全
    • 二进制日志默认在内存中会有缓冲,当一个事务提交的时候,这个数据就会被持久的存储到innodb文件中去了,但是和这个事务相关的二进制日志有可能还在内存中,所以从服务器是无法找到这种二进制日志的,所以需要尽可能做到一旦事务提交了,就立即把相关的二进制日志保存到硬盘中,以保证事务安全。

2.主从配置

  • master结点配置

 

 

  • 从结点配置

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值