1.查询日志:

记录每一条sql语句,建议不开启,因为如果访问量较大,会占用相当大的资源,影响性能;

vim /etc/my.cnf.d/server.cnf

general_log = ON| OFF#查询日志开关

general_log_file localhost.log #查询日志的文件名字(/var/lib/mysql)

log_output TABLE | FILE | NONE #查询日志的存储形式

2.慢查询日志

执行时长超出指定时间的查询操作(测试命令:select sleep(4);)

slow_query_log = OFF|ON  #开启慢查询日志

slow_query_log_file = LOCALHOST-SLOW.log #慢查询日志的文件路径

long_query_time  #慢查询时长;默认是10s

log_slow_rate_limit#如果要记录的慢查询日志非常多的话,会按照速率来记录,默认1秒记录一个

log_slow_verbosity=full | query_plan #记录的详细级别

3.错误日志

mysqld启动和关闭过程中输出的事件信息

mysqld运行中产生的错误信息

event scheduler 运行一个event时产生的日志信息

在主从复制架构中的从服务器上启动从服务器线程时产生的信息

log_error = /var/log/mysql_error.log#指定错误日志的输出位置

log_warnings 为0, 表示不记录告警信息。

log_warnings 为1, 表示告警信息写入错误日志。

log_warnings 大于1, 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。(默认为2)

4.二进制日志

针对时间点还原起着至关重要的作用

1)查看二进制日志:

SHOW {BINARY | MASTER} LOGS

SHOW BINLOG EVENTS [IN 'log_name']

show master status;

2)记录导致数据改变或者可能导致数据改变的SQL语句

log_bin = OFF | ON

log_bin_basename = /var/lib/mysql/mysql-bin

binlog_format=STATEMENT|ROW|MIXED:二进制记录格式

STATEMENT:基于“语句”记录

ROW:基于“行”记录

MIXED:让系统自行判定该基于哪种方式进行

sql_log_bin=1|0:是否启用二进制日志

log_bin_index=PATH:二进制日志索引位置

sync_binlog=1|0:设定是否启动二进制日志同步功能

max_binlog_size=SIZE:单个二进制文件最大体积,默认为1G

expire_logs_days=0#超过多少天就清除二进制日志,默认为0,代表不启用此功能

3)二进制日志滚动:

1.flush logs;

2.文件超出指定大小

3.service mariadb restart

4)二进制日志文件的构成:

两类文件:

日志文件:mysql-bin.xxxxx,二进制格式

索引文件:mysql-bin.index,索引文件

5)二进制日志格式:

#190613 14:17:32 server id 1  end_log_pos 666 CRC32 0xeb1cde6b  Query   thread_id=9     exec_time=

0       error_code=0

use `testdb`/*!*/;

事件发生的日期和时间:190613 14:17:32

事件发生的服务器标识:server id 1

事件的结束位置:end_log_pos 666

事件的类型:Query

事件发生时所在服务器执行此事件的线程ID:thread_id=9

语句的时间戳与将其写入二进制文件中的时间差:exec_time=0

错误代码:error_code=0

事件内容:

GTID:Global Transaction ID;

专属属性:GTID

6)mysqlbinlog:客户端命令工具

mysqlbinlog [options] log_file ...

--start-datetime=

--stop-datetime=

--start-position=

--stop-position=

5.中继日志:

复制架构中,备服务器用于保存主服务器的二进制日志中读取到的事件

6.事务日志:transaction log(ib_logfile0,ib_logfile1)

innodb_buffer_pool_size                                一般设置成为物理内存的3/4,或者4/5

innodb_log_files_in_group = 2                          事务日志文件的个数,默认为2个事务日志文件

innodb_log_file_size = 50331648(48m)        事务日志文件的单个大小48m

innodb_log_group_home_dir = ./                         事务日志文件的所在路径,默认就在mariadb的数据目录/var/lib/mysql

事务型存储引擎自行管理和使用(Innodb,myisam引擎是不支持事务,外键,行级锁)

redo log : 重做日志

undo log :撤销日志

7.备份和恢复:

1)为什么要备份?

灾难恢复:硬件故障,软件故障,自然灾害,黑客攻击,误操作

测试

2)要注意的要点:

备份需要多少时间

能容忍最多丢失多少数据

恢复数据需要在多场时间内完成

需要恢复哪些数据

(1)做还原测试,用于测试备份的可用性

(2)还原演练

3)备份类型:

完全备份,部分备份

完全备份:整个数据集

部分备份:只备份数据子集

完全备份、增量备份、差异备份

增量备份:仅备份最近一次完全备份或增量备份(如果有增量备份)以来变化的数据

差异备份:仅备份最近一次完全备份以来变化的数据;

热备、温备、冷备

热备:读写操作均可执行

温备:读操作可以、写不行

冷备:读写操作均不能执行

MyISAM:温备,不能热备;

Innodb:热备

物理备份、逻辑备份

物理备份:直接复制数据文件进行备份,与存储引擎无关

逻辑备份:从数据库中“导出”数据库另存而进行备份

备份时需要考虑的因素:

持续多久

备份过程的时长

备份负载

恢复过程的时长

备份什么?

要备份的数据

二进制日志,innodb的事务日志

代码(存储过程,存储函数,触发器,时间调度器)

服务器的配置文件

设计备份方案:

数据集:完全+增量

备份手段:物理,逻辑

对于备份较大的数据建议物理备份,对于较小的数据建议用逻辑备份;

备份工具的选择:

mysqldump+复制binlog:

mysqldump:完全备份

复制binlog中指定时间范围内的event:增量备份

lvm2快照+复制binlog:

lvm2快照:适用cp或者tar等做物理备份:完全备份

复制binlog中指定时间范围内的event:增量备份

xtrabackup|mariabackup:

由Percona提供的支持对InnoDB做热备(物理备份)工具

完全备份,增量工具

4)基于二进制文件的恢复

1.算好要恢复数据的时间段,重定向输入到bin.sql文件中

mysqlbinlog --start-datetime="2019-06-08 22:55:13" --stop-datetime="2019-06-08 22:55:13" binlog.0000011 > bin.sql

mysqlbinlog /var/lib/mysql/mysqlbin.000001 --stop-pos=1093 | mysql -uroot -proot

2.执行bin.sql文件还原

source bin.sql

5)基于lvm2的备份

(1)请求锁定所有表

flush tables with read lock;

(2)记录二进制日志文件及事件位置或时间点

flush logs;

mysql -uroot -proot -e 'show  master status;' > /path/to/somefile

(3)创建快照

lvcreate -L # -s -p r -n NAME /DEV/VG_NAME/LV_NAME

(4)释放锁

unlock tables;

(5)挂在快照卷,执行数据备份

(6)备份完成后,删除快照卷

(7)指定好策略,通过原卷备份二进制日志

(8)还原的时候确保属组和属主是mysql:mysql

如果是yum安装默认数据目录在/var/lib/mysql,如果需要更改

[mysqld]

datadir=/mysql_data/

pid_file=/mysql_data/localhost.pid

socket=/mysql_data/mysql.sock

wsrep_data_home_dir=/mysql_data/

log-bin=mysql-bin

[client]

socket=/mysql_data/mysql.sock

6)备份工具mariabackup

Mariabackup

简介

Mariabackup是MariaDB提供的一个开源工具,用于对InnoDB,Aria和MyISAM表进行物理在线备份。这个工具是基于Percona的XtraBackup(版本2.3.8)的解决方案。

这里有一点需要注意,在MariaDB10.3.x及以上的版本用Percona XtraBackup工具会有问题。原因可能是MariaDB10.3以上版本的redo日志格式和之前不同了。

Percona的官方文档:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

Mariabackup的官方文档:https://mariadb.com/kb/en/library/mariabackup-overview/

安装方法

yum install MariaDB-backup

备份与恢复

全备+恢复

1.全量备份

mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root

2.准备全备数据

mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root

3.还原数据(请确保数据目录下是空的)

mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root

4.修改属组和属主

chown -R mysql.mysql /var/lib/mysql

全备+增量+恢复

1.全量备份

mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root

2.增量备份

mariabackup --backup --target-dir=/root/inc1 --incremental-basedir=/root/fullbackup/ --user=root --password=root

3.准备全备数据

mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root

4.增量和全备数据合并

mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root --incremental-dir=/root/inc1/ --apply-log-only

5.恢复数据(请确保数据目录下是空的)

mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root

6.修改属组和属主

chown -R mysql.mysql /var/lib/mysql

7)基于mysqldump工具进行备份(逻辑备份工具)

备份testdb数据库(-l代表备份单个数据库时锁定该库的所有表;-x代表对所有表进行备份时锁定所有数据库的所有表)

mysqldump -uroot -proot -l --databases testdb > testdb.sql

备份所有数据库

mysqldump -uroot -proot --all-databases > all-databases.sql

备份testdb数据库下的students表

mysqldump -uroot -proot testdb students > students.sql

还原数据

source testdb.sql

mariadb数据库备份与恢复的更多相关文章

  1. MariaDB数据库(四)

    1. 数据库备份与恢复 数据库备份用命令mysqldump ,MySQL的备份文件一般以.sql结尾,做到见名知意 #备份testdb数据库重定向为testdb.sql文件, [root@localh ...

  2. MariaDB——数据库集群

    Mariadb数据库集群 mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定的延迟性,也就是说可能会导致数据丢失,但是性能比较好,因此网站大多数 用的是主从架构的数据 ...

  3. mariadb数据库忘记密码如何找回

    1.systemctl stop mariadb ==>停止mariadb数据库 2.mysqld_safe --skip-grant-tables & ==>进入单机模式 3.m ...

  4. CentOS 7.0下配置MariaDB数据库

    刚刚配置了下CentOS 7.0版本的服务器,配置数据库时发现# mysql_secure_installation命令用不了,之后网上查了一下发现CentOS 7.0版本用MariaDB替换了mys ...

  5. MariaDb数据库管理系统的学习(一)安装示意图

    MariaDB数据库管理系统是MySQL的一个分支.主要由开源社区在维护,採用GPL授权许可.开发这个分支的原因之中的一个是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区採用分 ...

  6. Linux编译安装Mariadb数据库

    一.安装cmake cd /usr/local/src tar zxvf cmake-2.8.12.1.tar.gz cd cmake-2.8.12.1 ./configure 注意报错需要安装gcc ...

  7. 详解MariaDB数据库的事务

    1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...

  8. 外网访问内网MariaDB数据库

    外网访问本地MariaDB数据库 本地安装了MariaDB数据库,只能在局域网内访问,怎样从公网也能访问内网MariaDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Mar ...

  9. MariaDB 数据库

    1. MariaDB 介绍 MariaDB数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成 ...

随机推荐

  1. 10-SQLServer中统计信息的使用

    一.总结 1.网址https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-tr ...

  2. autoprefixer 处理css3的前缀

    css3书写的时候,有时需要加上前缀,比如“-webkit-*.-moz-*”等等,但可能会写的不完整或者是写错,也很麻烦,那么autoprefixer可以处理这些. autoprefixer是一个后 ...

  3. MyBatis注解开发-@Insert和@InsertProvider

    @Insert和@InsertProvider都是用来在实体类的Mapper类里注解保存方法的SQL语句.不同的是,@Insert是直接配置SQL语句,而@InsertProvider则是通过SQL工 ...

  4. 使用SpringSession和Redis解决分布式Session共享问题

    SpringSession优势 遵循servlet规范,同样方式获取session,对应用代码无侵入且对于developers透明化 关键点在于做到透明和兼容 接口适配:仍然使用HttpServlet ...

  5. jquery fadeOut()方法 语法

    jquery fadeOut()方法 语法 作用:fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的.大理石平台精度等级 语法:$(selector).fadeOut(speed, ...

  6. jquery load() 方法 语法

    jquery load() 方法 语法 作用:当指定的元素(及子元素)已加载时,会发生 load() 事件.该事件适用于任何带有 URL 的元素(比如图像.脚本.框架.内联框架).根据不同的浏览器(F ...

  7. java+上传大视频文件断点续传

     上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败. 一开始以为是session过期或者文件大小受系统限制,导致的错误. 查看了系统的配置文件没有看到文件大小限制, web.xml中s ...

  8. less的解析笔记

    Less是一种动态的样式语言.Less扩展了CSS的动态行为,比如说,设置变量(Variables).混合书写模式(mixins).操作(operations)和功能(functions)等等,最棒的 ...

  9. ETL-拉链算法-1

    参考链接:http://blog.csdn.net/nisjlvhudy/article/details/8559518 自己的理解: 主要针对数据的状态变化 表:原表:source 目标表:targ ...

  10. java多线程编程详细总结

    一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复 ...