mysql备份恢复日志_MySQL-日志 备份 恢复

1、 MySQL日志记录

日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等

默认情况下,所有日志创建于mysql数据目录(data目录)

2、 MySQL日志文件系统的组成

a、错误日志:记录启动、运行或停止mysqld时出现的问题。

b、通用日志:记录建立的客户端连接和执行的语句。

c、二进制日志:记录所有更改数据的语句。还用于复制。

d、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。

备注: 重点关注二进制日志、慢查询日志,其他了解即可。

3、错误日志

1. 查看错误日志的位置

mysql> show variables like "%log_error%";

+---------------+-------------------------------------------------+

| Variable_name | Value |

+---------------+-------------------------------------------------+

| log_error | /usr/local/mysql/data/localhost.localdomain.err |

+---------------+-------------------------------------------------+

1 row in set (0.27 sec)

4、 通用日志

1. 查看通用日志是否开启以及位置

mysql> show variables like "%general%";

+------------------+-------------------------------------+

| Variable_name | Value |

+------------------+-------------------------------------+

| general_log | OFF |

| general_log_file | /usr/local/mysql/data/localhost.log |

+------------------+-------------------------------------+

2. 开启通用日志

mysql> set @@global.general_log=1;

5、 二进制日志(重点)

MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录写类型的SQL语句(增删改),不记录读类型SQL语句(select)

二进制日志作用

二进制日志主要用于数据库数据恢复和主从复制

6、 二进制日志相关操作

1. 查看二进制日志是否开启

mysql> show variables like "log_bin";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin | ON |

+---------------+-------+

2. 查看每个二进制文件的大小

mysql> show master logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000004 | 478421400 |

| mysql-bin.000005 | 9653 |

| mysql-bin.000006 | 340631484 |

+------------------+-----------+

3 rows in set (0.00 sec)

3. 查看当前二进制日志文件状态

mysql> show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000006 | 107 | | |

+------------------+----------+--------------+------------------+

4. 开启二进制日志

[root@localhost /]# vim /etc/my.cnf

log-bin=mysql-bin #二进制日志

5. 查看二进制日志的内容

[root@localhost /]# /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-000001.bin

备注: /usr/local/mysql/bin/mysqlbinlog 是MySQL提供的命令,只不过这里敲绝对路径

/usr/local/mysql/data/mysql-000001.bin 是需要查看的二进制文件内容

6. 清空所有二进制日志文件

mysql> reset master;

7. 新增一个日志文件,新写入的SQL语句,在最新的二进制日志中

mysql> flush logs;

8、二进制日志文件恢复数据的实例

1. 做了一个完整备份

mysqldump –uroot –p test –l –F > '/tmp/test201507/sql'

-l 备份时加锁,在整个备份期间,只允许读操作

-F 即flush logs 可以重新生成新的bin-log日志文件

2. 接下来,模拟进行新操作:

mysql> insert into users values(3,'jack');

mysql> update users set name='mary' where id=2;

然后模拟一次误操作,所有数据库被清空:

mysql> delete from users;

3. 准备恢复丢失的数据,开始一个新的bin-log日志(目的是保留需要原来的bin-log日志):

mysql>flush logs;

4. 先恢复到之前的完整备份文件

mysql –uroot –p test –f < '/tmp/test201507.sql';

5. 接着恢复后面的操作(8:05分),需要从bin-log日志中恢复:

mysqlbinlog mysql-bin.0000003 --start-position='106' –-stop-position='306' | mysql –uroot -p

备注:

mysqlbinlog 使用mysql提供的mysqlbinlog命令

--start-position 代表开始的位置

--stop-position 结束的位置,只会将开始位置和结束位置之间的SQL语句拿到

9、主从复制(重点)

所谓的主从复制,就是让写操作的SQL语句(insert/delete/update)在一台服务器执行,读操作的SQL语句(select)在另外一台服务器执行。

我们把负责写的服务器叫做主数据库,简称主库。负责读的服务器,叫做从数据库,简称从库。

10、主从复制的原理

1、主库把数据更改记录到二进制日志(Binary Log)中

2、从库将主库上的二进制日志复制到自己的中继日志(Relay Log)中

3、从库读取中继日志中的事件(SQL语句),将其重放到从库数据库上执行,从而实现从库数据与主库数据的同步。

11、 主从复制优缺点

优点:

1. 主从复制后,读操作与写操作分别在不同的服务器,减轻了单台服务器的压力

2. 主从一般配置为一主多从,多个从库,增加查询速度,并且避免了数据库的单点故障

缺点:

1. 当有大量数据写入时,从库与主库之间的数据存在一定的时间差。

2. 主从延迟没有不可避免。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值