Maria数据库怎么复制到mysql_MySQL/MariaDB的备份与恢复

二进制日志简介

mysql的二进制日志从本质上来讲就是重做日志,它记录了mysql服务器上此前所发生的所有引起了数据改变或潜在会影响数据改变的相关的操作。这个在恢复数据时非常有用,可以基于备份,通过二进制日志文件将数据恢复至某一个具体的时间点。当然二进制日志文件不能和数据文件放在同一块磁盘上。

查看当前服务器的二进制日志文件MariaDB [(none)]> show binary logs;

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

| Log_name         | File_size |

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

| mysql-bin.000001 |       355 |

| mysql-bin.000002 |       351 |

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

当一个日志文件的大小到达指定的大小后,日志文件会自动滚动。若要手动滚动,可以使用flush  logs。这个在备份的过程中经常用到。MariaDB [(none)]> flush logs;

Query OK, 0 rows affected (0.04 sec)

MariaDB [(none)]> show binary logs;

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

| Log_name         | File_size |

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

| mysql-bin.000001 |       355 |

| mysql-bin.000002 |       394 |

| mysql-bin.000003 |       351 |

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

3 rows in set (0.00 sec)

显示指定的二进制日志文件中的相关事件

格式:SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]MariaDB [(none)]> show binlog events in 'mysql-bin.000003'\G

........

*************************** 7. row ***************************

Log_name: mysql-bin.000003

Pos: 417

Event_type: Query

Server_id: 1

End_log_pos: 544

Info: use `sakila`; insert into actor(first_name,last_name) values('baby','James')

*************************** 8. row ***************************

Log_name: mysql-bin.000003

Pos: 544

Event_type: Xid

Server_id: 1

End_log_pos: 571

Info: COMMIT /* xid=16 */

.......

Log_name          #日志文件名

Pos                     #开始位置

Event_type         #事件类型

Server_id            #由哪一台服务器产生

End_log_pos       #结束位置

Info                     #日志信息

只是这里的日志没有时间,可以通过mysqlbinlog(客户端命令)工具来更详细地显示日志信息。

mysqlbinlog:

--start-position=#              #从指定的事件位置查看

--stop-position=#              #只显示到指定的事件位置

--start-datetime=YYYY-MM-DD hh:mm:ss               #从指定的时间查看

--stop-datetime=YYYY-MM-DD hh:mm:ss               #只显示到指定的时间[root@CentOS-6 mysql_bin_log]# mysqlbinlog mysql-bin.000003

......

# at 637

#150728 15:41:22 server id 1  end_log_pos 764 Querythread_id=5exec_time=0error_code=0

SET TIMESTAMP=1438069282/*!*/;

insert into actor(first_name,last_name) values('Neal','James')

/*!*/;

# at 764

..........

# at 637                      #事件的开始位置(也是上一个事件的结束位置)

#150728 15:41:22      #事件发生的日期和时间

server id 1                  #事件发生所在的服务器的标识

end_log_pos 764        #事件的结束位置

Query                         #事件的类型

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

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

error_code=0             #错误代码

事件内容:

SET TIMESTAMP=1438069282/*!*/;

insert into actor(first_name,last_name) values('Neal','James')

/*!*/;

# at 764                      #下一个日志的开始位置

日志的记录格式有3种:

1、基于“语句”记录:statement

2、基于“行”记录:row   (用这个记录数据更加精确)

3、“混合”模式 :mixed

相关的服务器变量:MariaDB [(none)]> show global variables like '%binlog%';

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值