MariaDB 备份与日志管理(13)

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB来代替MySQL的InnoDB,MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购MySQL的所有权也落入Oracle的手中.MariaDB名称来自MichaelWidenius的女儿Maria的名字.

MariaDB 数据备份与恢复

尽管采取了一些管理措施来保证数据库的安全,但是不确定的意外情况总是有可能造成数据的损失,例如意外的停电、管理员不小心的操作失误都可能会造成数据的丢失,保证数据安全的最重要的一个措施是确保对数据进行定期备份,如果数据库中的数据丢失或者出现错误,可以使用备份的数据进行恢复,这样就尽可能地降低了意外原因导致的损失.

数据备份是理员非常重要的工作之一,系统意外崩溃或者硬件的损坏都可能导致数据库的丢失,因此MariaDB管理员应该定期地备份数据库,使得在意外情况发生时,尽可能减少损失.

◆数据备份还原◆

全局锁定: 在备份数据库之前,我们应该先将数据库设置为只读模式,下面将设置全局为只读模式.

MariaDB [(none)]> show global variables like "%read_only%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]> set global read_only=1;                         #1是只读,0是读写
Query OK, 0 rows affected (0.08 sec)

MariaDB [(none)]> show global variables like "%read_only%";       #再次查询读写状态
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON    |
+---------------+-------+
1 row in set (0.00 sec)

表的锁定: 在备份数据库之前,我们应该先将数据库设置为只读模式,下面将设置指定表为只读模式.

MariaDB [(none)]> flush tables with read lock;                #锁定数据表
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> unlock tables;                              #解除表锁定
Query OK, 0 rows affected (0.00 sec)

MySQLDump备份数据: 通过内置备份命令,来备份数据库,以下是常用语法.

[[email protected] ~]# mysqldump -u root -p 数据库名 >备份文件.sql             #备份单个数据库
[[email protected] ~]# mysqldump -u root -p 数据库名 表名 >备份文件.sql         #备份数据库中单个表
[[email protected] ~]# mysqldump -u root -p --databases 数据库名 >备份文件.sql  #备份指定的数据库
[[email protected] ~]# mysqldump -u root -p --all-databases >备份文件.sql      #备份整个数据库

MySQL还原数据: 通过内置备份命令,来还原数据库,以下是常用语法.

[[email protected] ~]# mysql -u root -p 数据库名 < 备份文件.sql               #还原单个数据库
[[email protected] ~]# mysql -u root -p 还原到的数据库名 < 备份文件.sql        #还原数据库中单个表
[[email protected] ~]# mysql -u root -p < 备份文件.sql                        #还指定的数据库
[[email protected] ~]# mysql -u root -p < 备份文件.sql                        #还原整个数据库    

MySQLHotcopy热备份: 使用hotcopy完成一次热备份.

[[email protected] ~]# mysqlhotcopy --flushlog -u="root" -p="123" --regexp=^l /root/

#以上参数解释: -u 用户名 -p 密码 --regexp=^l 备份开头是l的数据库 /root 备份文件保存位置

[[email protected] ~]# ll
总用量 0
drwxr-x---. 2 mysql mysql 39 9月  15 04:31 lyshark

MySQLHotcopy冷恢复: 使用hotcopy完成一次冷恢复,冷恢复需要关闭数据库.

[[email protected] ~]# systemctl stop mariadb

[[email protected] ~]# cp -a /root/lyshrk /usr/local/mysql/data
[[email protected] ~]# chown -R mysq.mysql /usr/local/mysql/data

[[email protected] ~]# systemctl start mariadb

◆数据导入导出◆

select 语句导出:

MariaDB [none]> select * from 数据库名称.表名称 INTO OUTFILE "/root/xxx.txt"
[[email protected] ~]# cat /root/xxx.txt

mysql命令导出文件

[[email protected] ~]# mysql -uroot -p --execute="select * from 表名;" 数据库名 > filename.txt
[[email protected] ~]# mysql -uroot -p --verical --execute="select * from person;" 数据库名称 > /root/lyshark.txt
[[email protected] ~]# mysql -uroot -p --html --execute="select * from person;" 数据库名称 > /root/lyshark.html
[[email protected] ~]# mysql -uroot -p --xml --execute="select * from person;" 数据库名称 > /root/lyshark.xml

load data 导入数据:

[[email protected] ~]# load data INFILE '/root/wang.txt' INTO TABLE 数据库.表名称;
[[email protected] ~]# mysqlmport -uroot -p 数据库名称 filename.txt

MariaDB 日志配置与管理

MariaDB 日志记录了MariaDB数据库日常操作和错误信息,MariaDB有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MaraiDB数据库的运行情况、用户操作、错误信息等,可以为MariaDB管理和优化提供必要的信息,对于MariaDB的管理工作而言,这些日志文件是不可缺少的.

MariaDB默认分为以下4类,使用这些日志可查看MariaDB内部发生的事情,4类分别是:

● 错误日志: 记录MaraiDB服务的启动,运行或停止MariaDB服务时出现的问题
● 查询日志: 记录建立的客户端连接和执行的语句
● 二进制日志: 记录所有更改数据的语句,可以用于数据复制
● 慢查询日志: 记录所有执行时间超过默认值的所有查询或不适用索引的查询

默认情况下,所有日志创建于MariaDB数据目录中,通过刷新日志,可以强制关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志),当执行一个FLUSH LOGS语句或执行mysqlladmin flush-logsmysqladmin refresh时,将刷新日志.
如果正使用MariaDB复制功能,在复制服务器上可以维护更多日志文件,这种日志称为接替日志.启动日志功能会降低数据库的性能,如果开启慢查询日志则会占用大量的磁盘空间.

◆二进制日志◆

二进制日志主要记录数据库的变化,二进制日志以一种有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息,二进制日志包含了所有更新了数据或者己经潜在更新了数据,语句以"事件"的形式保存,描述数据更改.

二进制日志还包含关于每个更新数据库的语句的执行时间信息,它不包含没有修改任何数据的语句,如果想要记录所有语句,需要使用一般查询日志,使用二进制日志的主要目的是最大可能地恢复数据库,因为二进制日志包含备份后进行的所有更新.

启动二进制日志:

1.默认情况下二进制日志是关闭状态的,可以通过修改数据库配置文件来设置开启日志.

[[email protected] ~]# vim /etc/my.cnf

[mysqld]
log-bin="/tmp"              #设置开启日志,也可不指定日志保存位置
expire_logs_days = 10       #设置日志自动清理天数
max_binlog_size = 100M      #定义了单个文件的大小限制

2.添加完毕后,重启数据库进程,即可打开二进制日志啦.

[[email protected] ~]# systemctl restart mariadb
[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'log_%';
+---------------------------------+-------------------------------------------------
| Variable_name                   | Value
+---------------------------------+-------------------------------------------------
| log_bin                         | ON
| log_bin_trust_function_creators | OFF
| log_error                       | /var/log/mariadb/mariadb.log
| log_output                      | FILE
| log_queries_not_using_indexes   | OFF
| log_slave_updates               | OFF
| log_slow_filter                 | admin,filesort,filesort_on_disk,full_join,
| log_slow_queries                | OFF
| log_slow_rate_limit             | 1
| log_slow_verbosity              |
| log_warnings                    | 1
+---------------------------------+-------------------------------------------------
11 rows in set (0.01 sec)

查看二进制日志:

1.可以使用show binary logs语句查看二进制日志文件个数及文件名,SQL语句如下:

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       245 |
+--------------------+-----------+
1 row in set (0.02 sec)

可以看到当前只有一个二进制日志,日志文件的个数与MariaDB服务启动的次数相同,每次启动一次数据库,将会产生一个新的日志文件.

2.也可以使用mysqlbinlog命令查看日志内容,SQL语句如下:

[[email protected] ~]# mysqlbinlog mariadb-bin.000001

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
mysqlbinlog: File 'mariadb-bin.000001' not found (Errcode: 2)
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET [email protected]_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

删除二进制日志:

1.我们可以手动删除二进制日志,通过使用reset master语句删除所有日志,SQL语句如下:

[[email protected] ~]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

2.也可以单独删除指定的日志文件,如下删除第一个日志文件,SQL代码如下:

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       264 |
| mariadb-bin.000002 |       264 |
| mariadb-bin.000003 |       245 |
+--------------------+-----------+
3 rows in set (0.00 sec)

MariaDB [(none)]> purge master logs to "mariadb-bin.000001";
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000002 |       264 |
| mariadb-bin.000003 |       245 |
+--------------------+-----------+
3 rows in set (0.00 sec)

3.或者单独删除指定日期的日志文件,如下删除2018/01/01以前所有日志,SQL代码如下:

MariaDB [(none)]> purge master logs before "20180101";
Query OK, 0 rows affected (0.00 sec)

◆系统错误日志◆

错误日志包含了数据库启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息,错误日志对于数据库异常排查,有很大的帮助.

开启错误日志:

1.默认情况下二进制日志是关闭状态的,可以通过修改数据库配置文件来设置开启日志.

[[email protected] ~]# vim /etc/my.cnf

[mysqld]
log-error="/var/log/mariadb/mariadb.log"

2.添加完毕后,重启数据库进程,即可打开二进制日志啦.

[[email protected] ~]# systemctl restart mariadb
[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like 'log_error';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| log_error     | /var/log/mariadb/mariadb.log |
+---------------+------------------------------+
1 row in set (0.01 sec)

[[email protected] ~]# cat /var/log/mariadb/mariadb.log |head -n 10
181224 20:28:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
181224 20:28:49 [Note] /usr/libexec/mysqld (mysqld 5.5.60-MariaDB) starting as process 1622 ...
181224 20:28:49 InnoDB: The InnoDB memory heap is disabled
181224 20:28:49 InnoDB: Mutexes and rw_locks use GCC atomic builtins
181224 20:28:49 InnoDB: Compressed tables use zlib 1.2.7
181224 20:28:49 InnoDB: Using Linux native AIO
181224 20:28:50 InnoDB: Initializing buffer pool, size = 128.0M
181224 20:28:50 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!

删除错误日志:

[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> flush logs;
Query OK, 0 rows affected (0.01 sec)

◆慢查询日志◆

慢查询日志是记录查询时长超过指定时间的日志,慢查询日志主要用来记录执行时间较长的查询语句,通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化.

开启错误日志:

1.默认情况下二进制日志是关闭状态的,可以通过修改数据库配置文件来设置开启日志.

[[email protected] ~]# vim /etc/my.cnf

[mysqld]
log-slow-queries="/tmp"
long_query_time=n

2.添加完毕后,重启数据库进程,即可打开二进制日志啦.

[[email protected] ~]# systemctl restart mariadb
[[email protected] ~]# mysql

原文地址:https://www.cnblogs.com/LyShark/p/10200139.html

时间: 12-30

MariaDB 备份与日志管理(13)的相关文章

Mariadb学习笔记-日志及备份

Mysql的日志种类 查询日志:general_log 慢查询日志:log_slow_querles 错误日志:log_error,log_warnings 二进制日志:binlog 中继日志:relay_log 事务日志:innodb_log 查询日志 记录查询语句,日志存储位置: 文件:file表:table(mysql.general_log) general_log={ON|OFF}general_log_file=HOSTNAME.loglog_output={FILE|TABLE|N

第13章 Linux日志管理

1. 日志管理 (1)简介 在CentOS 6.x中日志服务己经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其实都是和syslogd相兼容的. (2)rsyslogd的新特点 ①基于TCP网络协议传输日志信息 ②更安全的网络传输方式 ③有日志消息的及时分析框架 ④后台数据库 ⑤配置文件中可以写简单的逻辑判断. ⑥与syslogd配置文件相兼容 (3)查看rsyslogd服务是否启动: ①#ps aux |

Mysql数据库理论基础之十一 ---- 日志管理

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

Linux命令:MySQL系列之十一--MySQL日志管理

MySQL日志管理 SHOW GLOBAL VARIABLES LIKE '%log%':查看关于log的全局变量 一.日志分类 1.错误日志   2.一般查询日志   3.慢查询日志 4.二进制日志  5.中继日志   6.事务日志   7.滚动日志 二.日志详解 1.错误日志 说明:在对应的数据目录中,以主机名+.err命名的文件,错误日志记录的信息类型: 记录了服务器运行中产生的错误信息 记录了服务在启动和停止是所产生的信息 在从服务器上如果启动了复制进程的时候,复制进程的信息也会被记录

SQL Server中的事务日志管理(9/9):监控事务日志

当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 对于在我们关注下的所有数据库,在日志维护方面,我们的首要目标是最优化写性能,为了支持SQL Server写入日志的所有活动,包括数据修改,数据读取,索引维护等等.但是,留意下可能的日志碎片也是重要的,如前面文章介绍的,它会影响需要读取日志的过程性能,例如日志备份

SQL Server中的事务日志管理(7/9):处理日志过度增长

当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 这篇文章会列出导致事务日志过度增长的常见的问题和错误管理形式,包括: 在完整恢复模式里,没有进行日志备份 进行索引维护 长时间运行或未提交的事务阻止事务日志里空间重用 当然,如果增长没检查,日志文件会扩展直到吞没所有可用磁盘空间或日志文件的最大大小,在这个时候你

SQL Server中的事务日志管理(1/9):事务日志概况

当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 事务日志是存储对应数据库所有事务和数据修改记录的文件(每个数据库都有对应的日志文件).在造成SQL Server意外关闭的灾难事件里,例如实例或硬件故障,事务日志用来恢复数据库,用来保证数据的完好无损(完整性).在重启前,数据库进入恢复过程,事务日志被读取保证所

Mysql学习之--Mysql二进制日志管理

Mysql学习之--Mysql二进制日志管理 简介:     MySQL的二进制日志可以说或是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是失误安全型的.      MySQL的二进制日志的作用是显而易见的,可以方便的备份这些日志以便做数据恢复,也可以作为主从复制的同步文件,然而二进制日志的大小可能会根据不同的需求而存在麻烦,所以让日志回滚是必须的,当然MySQL已经为我们提供了二进制回滚的功

SQL Server中的事务日志管理(3/9):事务日志,备份与恢复

当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 它不会经常提起,除非你的数据库运行在简单(SIMPLE)恢复模式,在事务日志上定期备份非常重要的.这会控制事务日志大小,并且保证,在灾难发生里,你可以恢复你的数据库到灾难发生前的某个时间点.这些日志备份要和定期的完整数据库(数据文件)备份一起. 如果你在测试数据

slf4j+logback搭建超实用的日志管理模块

文章转自http://www.2cto.com/kf/201702/536097.html slf4j+logback搭建超实用的日志管理模块(对日志有编号管理):日志功能在服务器端再常见不过了,我们非常有必要记录下发生在服务器上的活动,这些日志将用于debug.统计等各种用途. slf4j+logback这种实现方式是很常见的,好处自然是方便!.在这篇文章中,你将看到如何使用logback搭建你自己的日志组件并将日志输出到文件.如何查看这些文件.如何为每个线程上的访问分配独有的一个日志id.