设为首页 加入收藏

TOP

MySQL/MariaDB的备份与恢复(一)
2015-11-21 01:51:23 来源: 作者: 【 】 浏览:0
Tags: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?? Query?? thread_id=5 exec_time=0 error_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%';
+-----------------------------------+----------------------+
| Variable_name???????????????????? | Value??????????????? |
+-----------------------------------+----------------------+
...............
| binlog_cache_size???????????????? | 32768??????????????? |?? #二进制日志缓存大小
| binlog_format???????????????????? | MIXED??????????????? |?? #二进制日志记录格式(MIXED.statement ,row)??
| binlog_stmt_cache_size??????????? | 32768??????????????
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JPA缓存 下一篇在Linux中划分partition并格式化..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: