`

Linux下MySQL数据库二进制日志恢复方法

阅读更多
Linux下MySQL数据库二进制日志恢复方法2009年09月21日 星期一 下午 04:04如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始(例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。“mysqlbinlog:用于处理二进制日志文件的实用工具”。

  要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为-- log-bin。要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:

  SHOW BINLOG EVENTS \G

  你还可以从命令行输入下面的内容:

  mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS \G'

  将密码my_pwd替换为服务器的root密码。

  1. 指定恢复时间

  对于MySQL 4.1.4,可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间。举例说明,假设在今天上午10:00(今天是2006年4月20日),执行SQL语句来删除一个大表。要想恢复表和数据,你可以恢复前晚上的备份,并输入:

  mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 \

    mysql -u root -pmypwd

  该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动。根据这些,你可以用起使日期和时间再次运行mysqlbinlog:

  mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 \

    mysql -u root -pmypwd \

  在该行中,从上午10:01登录的SQL语句将运行。组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到上午10:00前一秒钟。你应检查日志以确保时间确切。下一节介绍如何实现。

  2. 指定恢复位置

  也可以不指定日期和时间,而使用mysqlbinlog的选项--start-position和--stop-position来指定日志位置。它们的作用与起止日选项相同,不同的是给出了从日志起的位置号。使用日志位置是更准确的恢复方法,特别是当由于破坏性SQL语句同时发生许多事务的时候。要想确定位置号,可以运行mysqlbinlog寻找执行了不期望的事务的时间范围,但应将结果重新指向文本文件以便进行检查。操作方法为:

  mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" \

  /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql

  该命令将在/tmp目录创建小的文本文件,将显示执行了错误的SQL语句时的SQL语句。你可以用文本编辑器打开该文件,寻找你不要想重复的语句。如果二进制日志中的位置号用于停止和继续恢复操作,应进行注释。用log_pos加一个数字来标记位置。使用位置号恢复了以前的备份文件后,你应从命令行输入下面内容:

  mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \

    mysql -u root -pmypwd

  mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \

    mysql -u root -pmypwd \

  上面的第1行将恢复到停止位置为止的所有事务。下一行将恢复从给定的起始位置直到二进制日志结束的所有事务。因为mysqlbinlog的输出包括每个SQL语句记录之前的SET TIMESTAMP语句,恢复的数据和相关MySQL日志将反应事务执行的原时间。

-----------------------------------------

1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。
  2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备 mysql 的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
  3、设置主数据库服务器:
  a. 首先查看主服务器的版本是否是支持热备的版本。然后查看 my.cnf(类 unix)或者 my.ini(windows)中 mysqld 配置块的配置有没有 log-bin (记录数据库更改日志),因为 mysql 的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
  server-id=1 //数据库的 id 这个应该默认是1就不用改动
  log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
  binlog-do-db=db_name //记录日志的数据库
  binlog-ignore-db=db_name //不记录日志的数据库
  以上的如果有多个数据库用","分割开,然后设置同步数据库的用户帐号
  mysql> GRANT REPLICATION SLAVE ON *.*
  -> TO
[email='repl'@'%.mydomain.com']'repl'@'%.mydomain.com'[/email]
IDENTIFIED BY 'slavepass';
  4.0.2 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能
  mysql> GRANT FILE ON *.*
  -> TO
[email='repl'@'%.mydomain.com']'repl'@'%.mydomain.com'[/email]
IDENTIFIED BY 'slavepass';
  设置好主服务器的配置文件后重新启动数据库
  b.锁定现有的数据库并备份现在的数据
  锁定数据库
  mysql> FLUSH TABLES WITH READ LOCK;
  备份数据库有两种办法一种是直接进入到 mysql 的 data 目录然后打包你需要备份数据库的文件夹,第二种是使用 mysqldump 的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库
  c.查看主服务器的状态
  mysql> show master statusG;
  +---------------+----------+--------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +---------------+----------+--------------+------------------+
  | mysql-bin.003 | 73 | test | manual,mysql |
  +---------------+----------+--------------+------------------+
  记录 File 和 Position 项目的值,以后要用的。

分享到:
评论

相关推荐

    linux MySQL 8.0二进制包安装

    Linux MySQL 8.0 二进制包安装 MySQL 是一个广泛使用的开源关系型数据库管理系统,最新版本为 8.0。在 Linux 系统中,安装 MySQL 8.0 二进制包需要按照以下步骤进行。 首先,下载 MySQL 8.0 二进制包。可以从官方...

    linux中mysql二进制资源包安装全过程附mysql安装包

    本文将详细介绍如何在Linux(包括CentOS 6、CentOS 7、RHEL 6和RHEL 7)上安装MySQL的二进制资源包,同时也会提供解决安装过程中可能出现的问题的策略。 首先,我们需要理解Linux发行版的包管理器,如CentOS/RHEL中...

    Linux下Mysql二进制安装及主从搭建文档

    在Linux环境下,MySQL数据库系统的二进制安装与主从复制是常见的运维操作,这对于系统管理员和数据库管理员来说至关重要。下面将详细介绍Linux上MySQL的二进制安装步骤以及如何配置主从复制。 一、Linux下MySQL二...

    mysql 二进制安装包

    MySQL二进制安装包是一种非源码编译的安装方式,它通常包含了预编译的二进制可执行文件,适合快速部署和配置MySQL数据库服务器。在Linux环境下,这种安装方式尤其常见,因为Linux发行版之间的库差异可能导致源码编译...

    mysql二进制日志文件恢复数据库

    对于MySQL数据库而言,二进制日志文件(Binary Log)是数据库备份和恢复的关键工具之一。二进制日志文件记录了所有对数据库执行更改的语句(不记录查询语句),并且在数据发生意外或者错误操作时,能够通过这些日志...

    Linux平台的MySQL数据库操作与创建.pdf

    Linux平台的MySQL数据库操作与创建 Linux操作系统和MySQL数据库是当前最流行的系统平台和应用软件。Linux是功能强大、高效、开放式的操作系统,而MySQL是快速、功能强大的数据库。以下是Linux平台上的MySQL数据库...

    Linux操作系统中如何安装MySQL数据库

    "Linux操作系统中如何安装MySQL数据库" 在 Linux 操作系统中,安装 MySQL 数据库是非常重要的一步,对于大多数的 web 应用程序来说,都是必不可少的。本文将详细介绍如何在 Linux 操作系统中安装 MySQL 数据库。 ...

    Linux下Mysql5.6 二进制安装过程

    13. **主从复制架构**:如果你需要配置MySQL的主从复制,你需要在主服务器上设置二进制日志,然后在从服务器上配置为从属节点,通过复制日志实现数据同步。这需要设置`server_id`、`log-bin`、`binlog_format`等相关...

    Redhat linux 6安装Mysql 5.6二进制包.docx

    ### Redhat Linux 6 安装 MySQL 5.6 二进制包 #### 一、系统预检与准备 **1. 创建 MySQL 用户及组** - 首先,确保系统上存在一个用于运行 MySQL 服务的专用用户和组。这有助于提升系统的安全性并遵循最佳实践。 ...

    MySQL二进制日志:数据恢复的瑞士军刀

    MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛用于Web应用程序的后端数据存储。它基于结构化查询语言(SQL)来管理数据,并且是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)技术栈的一部分,这个...

    mysql5.7.20数据库的二进制安装部署1

    【MySQL 5.7.20数据库的二进制安装部署】 在Linux系统中安装MySQL 5.7.20数据库通常涉及多个步骤,包括环境检查、账户创建、下载安装文件、解压安装以及配置。以下是一份详细的二进制安装指南: 1. **系统环境检查...

    Linux下实现MySQL数据备份和恢复的命令使用全攻略

    1、利用Mysqldump+二进制日志实现备份 2、利用LVM快照+二进制日志实现备份 3、使用Xtrabackup备份 一:实验环境介绍: 系统介绍:CentOS6.4_X64 数据库版本:mysql-5.5.33 二:基于Mysqldump命令实现备份恢复 2.1、...

    linux数据库编程

    - 备份工具:如MySQL的`mysqldump`,PostgreSQL的`pg_dump`,用于生成SQL脚本或二进制备份。 - 灾难恢复:学习如何在数据丢失或系统故障后恢复数据库。 8. **监控与日志**: - 监控工具:如`top`、`htop`、`...

    MySQL5.7.28_centos7二进制安装.txt

    ### MySQL 5.7.28 在 CentOS 7 上的二进制安装步骤与要点 #### 一、准备工作 在开始安装MySQL 5.7.28之前,我们需要确保CentOS 7系统的环境符合安装需求,并准备好必要的工具。 1. **确认系统版本:** - 本次...

    mysql5.7二进制包安装实战

    ### MySQL 5.7二进制包安装实战详解 #### 环境准备与系统配置 在进行MySQL 5.7的二进制包安装之前,我们首先需要确保服务器环境符合安装要求。根据题目中的描述,我们将使用的是CentOS 7.3.1611操作系统,MySQL...

    Linux下定时备份MySQL数据库的Shell脚本.pdf

    ### Linux下定时备份MySQL数据库的Shell脚本知识点详解 #### 一、背景介绍与重要性 对于每一个在线网站或服务而言,数据备份是一项至关重要的任务。无论是为了应对未来的版本升级,还是服务器迁移的需求,定期备份...

Global site tag (gtag.js) - Google Analytics