MySQL的备份

开启MySQL的log_bin

执行查看mysql的log_bin状态

> show variables like 'log_bin%';

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

| Variable_name                   | Value                          |

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

| log_bin                         | OFF                             |

| log_bin_basename                |                           |

| log_bin_index                   |                            |

| log_bin_trust_function_creators | OFF                            |

| log_bin_use_v1_row_events       | OFF                            |

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

开启log_bin日志

打开mysql配置文件:

    root@ubuntu:~# vi /etc/mysql/mysql.conf.d/mysqld.cnf

  开启log_bin日志

    server-id               = 1

    log_bin                 = /var/log/mysql/mysql-bin.log

  server-id表示单个结点的id,这里由于只有一个结点,所以可以把id随机指定为一个数,这里将id设置成1。若集群中有多个结点,则id不能相同。

  第二句是指定binlog日志文件的名字为mysql-bin,以及其存储路径。

重启MySQL:

service mysql restart

重新查看log_bin状态:

> show variables like 'log_bin%';

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

| Variable_name                   | Value                          |

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

| log_bin                         | ON                             |    # log_bin日志开启

| log_bin_basename                | /var/log/mysql/mysql-bin       |

| log_bin_index                   | /var/log/mysql/mysql-bin.index |

| log_bin_trust_function_creators | OFF                            |

| log_bin_use_v1_row_events       | OFF                            |

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

log_bin日志操作的常用命令

查看日志文件:

> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000003 |      154 |              |                  |                   |

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

创建新的日志文件:

> flush logs;    # 创建一个新的日志文件用于记录

Query OK, 0 rows affected (0.01 sec)

> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000004 |      154 |              |                  |                   |

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

查看日志文件个数:

> show binary logs;

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

| Log_name         | File_size |

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

| mysql-bin.000001 |       177 |

| mysql-bin.000002 |       177 |

| mysql-bin.000003 |       201 |

| mysql-bin.000004 |       154 |

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

重置日志文件:

> reset master;    # 重置日志文件后,日志文件恢复为最初的一个

Query OK, 0 rows affected (0.01 sec)

> show binary logs;

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

| Log_name         | File_size |

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

| mysql-bin.000001 |       154 |

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

MySQL数据的备份与恢复(通过log_bin日志)

  向mydb数据库的stu表中插入数据:

> insert into stu values(1, '张三'),

    -> (2, '李四');

Query OK, 2 rows affected (0.01 sec) Records: 2  Duplicates: 0  Warnings: 0

查看log_bin日志文件

  因为log_bin日志文件是二进制文件,普通方式打开会乱码,用mysql自带的mysqlbinlog命令打开。重定向到more分页显示。

    root@ubuntu:/var/log/mysql#mysqlbinlog mysql-bin.000001 | more

  解码查看日志文件

    root@ubuntu:/var/log/mysql# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001    # 日志文件中记录着增删改的操作

备份mydb数据库:

  root@ubuntu:~# mysqldump -u root -p mydb>mydb.sql

# 继续增删改操作:

> insert into stu values(3, '王舞');    # 增

Query OK, 1 row affected (0.00 sec)

> update stu set name='张三2' where id=1;    # 改

Query OK, 1 row affected (0.00 sec)

# 误操作删库:

> delete from stu;

Query OK, 3 rows affected (0.00 sec)

# 先通过导入备份数据恢复到最近一次备份的时候的数据:

root@ubuntu:~# mysql -u root -p mydb<mydb.sql    # 恢复最近的备份数据

> select * from stu;    # 恢复了最近的备份数据

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

| id | name   |

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

|  1 | 张三   |

|  2 | 李四   |

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

然后再备份log_bin日志:

  root@ubuntu:/var/log/mysql# mysqlbinlog --stop-position=882 mysql-bin.000003 | mysql -u root -p    # 备份log_bin日志,停止点在删除前的位置点882

> select * from stu;    # 数据库备份后执行的增、改操作的内容恢复

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

| id | name    |

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

|  1 | 张三2   |

|  2 | 李四    |

|  3 | 王舞    |

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

MySQL的备份的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. TODO:MongoDB MySQL数据库备份

    TODO:MongoDB MySQL数据库备份 1. MongoDB使用命令备份 mongodump进行整个数据库备份,主要用到的命令参数: -d 要备份的数据库 -o 输出的路径 ./mongodu ...

  3. Java实现MySQL数据库备份(二)

    权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...

  4. Java实现MySQL数据库备份(一)

    下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...

  5. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  6. MySQL 数据备份与还原

    一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...

  7. mysql多种备份方式比较及实现

    Mysql备份 MySQL的备份和还原: 备份:存放为副本-->数据备份 RAID1,RAID10:保证硬件损坏而不会业务中止,不能保证逻辑上的损害 例如:DROP TABLE mydb.tb1 ...

  8. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  9. MySQL数据库备份命令

    原文参考:MySQL数据库备份的命令 - 司南 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备 ...

  10. mysql自动备份维护shell脚本 (copy)

    #!/bin/bash #Mysql 自动备份 压缩并上传到 指定ftp #设想每天凌晨3点备份mysql #编辑crontab配置文件 # * * * backupmysql.sh #压缩并以&qu ...

随机推荐

  1. 构建web应用

    一.web服务器示例 var http = require('http'); http.createServer(function(req, res){ res.writeHeader(200, {C ...

  2. POS开发问题 - 缓存问题 - 02

    问题描述 : 有一个A页面使用了缓存,当从别的页面返回到A页面时, A页面绑定的有些事件,例如监听输入框输入事件:"input",监听点击触摸屏事件:"touchstar ...

  3. 学习Geodatabase的总结

    一.怎样择取自己需要的.有用的资料 1.开始找资料时,首先想到的是ESRI的帮助文档,因为它直接.规范而系统.通读一遍之后,大致了解了Geodatabase的各个方面.再从帮助文档体系结构中选出重要的 ...

  4. Springboot中SpringMvc拦截器配置与应用(实战)

    一.什么是拦截器,及其作用 拦截器(Interceptor): 用于在某个方法被访问之前进行拦截,然后在方法执行之前或之后加入某些操作,其实就是AOP的一种实现策略.它通过动态拦截Action调用的对 ...

  5. PowerShell 脚本域策略管理

    大中型企业中,会设置许多组策略进行日常运维管理 ,毕然里面也存在许多废弃的策略,需要我们定期清理我们的组策略信息.通常我们导出HTML报告方式来帮助我们分析组策略信息: #1 首先需要加载GroupP ...

  6. jQuery + Stimulsoft.Report 选择gridview多行打印

    jQuery + Stimulsoft.Report 报表空间打印多个ID split函数,多行ID 1. 获取选择多行ID(前台) //按钮-打印 function PrinterWorkQuali ...

  7. struts2.3.4.1转换成eclipse项目的过程

    1.在本地安装配置maven. 1.1.从maven官网下载,官网地址:http://maven.apache.org/download.cgi 1.2.配置maven环境变量       例如,我的 ...

  8. nginx处理HTTP header问题

    在实际开发中遇到http header 自定义key中包含下划线(_)时服务端header丢失的问题,解决办法详细见以下网页内容,感谢原博主 http://blog.csdn.net/dac55300 ...

  9. MYSQL忘记超级用户密码修改

    #service mysql stop #mysqld_safe --skip-grant-tables 另外开个SSH连接或终端 [root@localhost ~]# mysql mysql> ...

  10. Last_SQL_Errno: 1050

    主库上create table,从库上存在. 报错信息如下所示:                Last_SQL_Errno: 1050                Last_SQL_Error: ...