日志是MariaDB数据库的重要组成部分,MariaDB用来记录MariaDB
数据库的客户端连接情况,SQL语句的执行情况和错误信息等
详细可进入个人博客查询:点击进入
1.分类:
- 二进制日志:以二进制的形式记录了数据库中的操作,但不记录查询语句
- 错误日志:记录MariaDB服务器的启动,关闭和运行错误等信息
- 通用查询日志:记录用户登录和记录查询的信息慢查询日志:记录执行时间超过指定时间的操作
- 事务日志:事务日志(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结点配置
- 从结点配置