5t4we 发表于 2017-11-27 13:58:02

MySQL bin-log

bin-log 是什么?
bin-log是MySQL非常重要的日志。它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
它的主要用途
一.数据恢复
二.主从复制2.开启bin-log
   vi /etc/mysql/my.cnf
   log_bin = /var/log/mysql/mysql-bin.log
   expire_logs_days = 10
   max_binlog_size = 100M
3.验证是否开启
   mysql>show variables like "%log%";
   查看log_bin 是否为ON
   目录查看
   /var/log/mysql> ls
4.与bin-log有关的命令
| 命令 | 解释 |
| -------- | -------- |
| flush logs   | 重新起一个bin-log日志    |
| show master status   | 查看最新的bin-log日志    |
| reset master   | 清空所有的bin-log日志    |
5.查看bin-log日志
/var/log/mysql> mysqlbinlog mysql-bin.000251

6.关于bin-log的数据恢复的实验
一@创建表
   mysql> flush logs;
   mysql> create table t2(a1 int(10) not null default 0)engine=innodb default charset=utf8;
    二@插入数据
    mysql> insert into t2 values (1), (2);
    三@备份数据
    zc@ubuntu:~$ sudo mysqldump -uroot -p123456 test t2 -l -F > /tmp/t2_bak.sql
    zc@ubuntu:~$ ls -la /tmp/t2_bak.sql
    四@备份后添加了三条数据
    mysql> insert into t2 values (3);
    mysql> insert into t2 values (4);
    mysql> insert into t2 values (5);
    五@表被删除
    mysql> drop table t2;
    六@用已备份的 t2_bak.sql 来恢复数据(前段部分)
    zc@ubuntu:~$ mysql -uroot -p** test < /tmp/t2_bak.sql
    mysql> show tables;
    七@备份之后的三条数据用bin-log恢复,找出位置(后段部分)
#1711266:18:00 server id 1end_log_pos 629   Query    thread_id=55    exec_time=0    error_code=0 SET TIMESTAMP=1511705880/*!*/;insert into t2 values (5)
八@开始恢复
zc@ubuntu:/var/log/mysql$ mysqlbinlog --stop-position="629" mysql-bin.000257 | mysql -uroot -p** test
九@验证数据
数据完整,完成
7.附录A

[*]--stop-position="100"
[*]--start-position="50"
[*]--stop-date="YYYY-mm-dd HH:ii:ss"
[*]--start-date="YYYY-mm-dd HH:ii:ss"
8.附录B
   Mysql导出表结构及表数据 mysqldump用法
    命令行下具体用法如下:mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名;
1、导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)
mysqldump -uroot -pdbpasswd -d dbname >db.sql;

2、导出數據库為dbname某张表(test)结构
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

3、导出數據库為dbname所有表结构及表數據(不加-d)
mysqldump -uroot -pdbpasswddbname >db.sql;

4、导出數據库為dbname某张表(test)结构及表數據(不加-d)
mysqldump -uroot -pdbpasswd dbname test>db.sql;


页: [1]
查看完整版本: MySQL bin-log