MYSQL数据库备份还原,并还原到最新状态(mysqldump)

启用二进制日志文件

vim /etc/my.cnf 配置文件位置及文件名根据实际情况确定
sql_log_bin=ON|OFF:是否记录二进制日志,默认为ON //在需要的时候设置为OFF
log_bin=/PATH/BIN_LOG_FILE:指定二进制日志文件位置; 通常单独存放到与数据库不同的机器中

清理二进制日志文件

show master logs; 查看二进制日志文件列表
flush logs; 切换二进制日志文件(mysql命令),创建新的二进制日志
mysqladmin flush-logs 切换二进制日志文件(bash命令)
purge binary logs to ‘mysqlbin.000005‘; 删除除mysqlbin.000005日志之前的所有日志,保留mysqlbin.000005及以后的日志
reset master logs; 重新001开始记数二进制日志(老版本)。从MariaDB10.1.6开始支持TO #,指定从#开始记数

完全备份,并还原到最新状态(mysqldump)

前提条件:启用二进制日志,并单独存放。在mysql数据丢失时,可以还原最新备份到丢失时刻的数据
1 完全备份

mysqldump -A --single-transaction --master-data=1 > /data/backup/all_mysql.sql

完全备份数据库文件,并存放多份到安全的地方
2 修改数据库(在数据表中添加多条记录。模拟数据增加,但还没有备份时数据丢失的情况。可以通过二进制日志还到最新的数据)

mysql> insert TABLENAME(col_name,...)value(value,...)

3 数据库文件丢失
rm -rf /data/mysql/* 测试效果,清空mysql数据目录,数据全部丢失,但开启了二进制日志,并单独存放在其他的硬盘中
4 停止mysql服务

service mysqld stop

5 查看完全备份时二进制日志备份的最后位置,实验时备份的最后位置为:CHANGE MASTER TO MASTER_LOG_FILE=‘mariadb.000001‘, MASTER_LOG_POS=8944;
通过less 命令查看最新的备份文件all_mysql.sql获取此信息

-- MySQL dump 10.16  Distrib 10.2.23-MariaDB, for Linux (x86_64)
--
-- Host: localhost    Database:
-- ------------------------------------------------------
-- Server version       10.2.23-MariaDB-log

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE=‘+00:00‘ */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE=‘NO_AUTO_VALUE_ON_ZERO‘ */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;

--
-- Position to start replication or point-in-time recovery from
--

-- CHANGE MASTER TO MASTER_LOG_FILE=‘mariadb.000001‘, MASTER_LOG_POS=8944;

--
-- GTID to start replication from
--
/data/backup/all_2019-05-06.sql
.
.

重启mysql服务:

service mysqld restart

登录mysql :

mysql -uroot -p

临时关闭二进制日志,还原完全备份:

mysql> set sql_log_bin=off;
mysql> soruce /data/backup/all_mysql.sql

6 还原没有备份的新数据
新开一个终端:用mysqlbinlog工具导出存放在二进制日志中没有备份的新记录,开始位置为第4步中查询到的位置(实验时为8944)

mysqlbinlog --start-postion=8944 /data/bin/mariadb.000001 > /data/backup/inc.sql

在原终端中继续还原

mysql> soruce /data/backup/inc.sql

到此已经还原全部数据

原文地址:https://blog.51cto.com/13749470/2389678

时间: 2024-10-10 06:36:06

MYSQL数据库备份还原,并还原到最新状态(mysqldump)的相关文章

MYSQL数据库备份还原

MYSQL数据库备份还原 一.  数据库备份 备份数据是数据库管理最常用的操作.为了保证数据库中数据的安全,数据管理员需要定期地进行数据备份.一旦数据库遭到破坏,即可通过备份的文件来还原.因此,数据备份是很重要的工作. 1.使用mysqldump 命令备份 mysqldump 命令可以将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中.mysqldump 命令的工作原理很简单: 它先查出需要备份的表的结构,再在文本文件中生成一个CREATE 语句,然后将表中的所有记

xtrabackup进行MySQL数据库备份/还原

http://hongge.blog.51cto.com/ 使用xtrabackup进行MySQL数据库备份 前面介绍mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了. 这时就需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup. Xtrabackup实现是物理备份,而且是物理热备 目前主流的有两个工

[MySql] - 数据库备份还原

导出数据库到SQL方法: mysqldump.exe -u[USERNAME] -p[PASSWORD] -h [IP] jira --lock-all-tables > c:\db.sql 导入SQL文件到数据库方法: 首先先进入mysql新建数据库,比如:testdb 再使用命令: mysql -u[USERNAME] -p[PASSWORD] -h[IP] testdb < c:\db.sql

MySQL 数据库备份和还原

备份的应用场景 在服务器进行数据传输.数据存储和数据交换,就有可能产生数据故障.比如发生意外停机或存储介质损坏. 这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的. 使用mysqldump备份(导出)固定条件的数据库 mysqldump 命令在终端使用. 导出整个数据库 mysqldump -u用户名 -p密码 数据库 > 导出的文件名 如: -- 备份 library 数据库中的数据到 ~/Desktop/library.sql 文件中 mysq

Mysql数据库备份和还原常用的命令

Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下面就是操作的常用命令. 一.备份命令 1.备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename>backupfile.sql 2.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有

MySQL数据库备份与还原

备份数据库 1.使用mysqldump命令备份 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql 如果没有表名,则备份整个数据库 eg: mysql -u root -p test studentinfo >D:\test.sql 备份多个数据库:mysqldump -u 用户名 -p --databases 数据库1,数据库2...  >  备份文件路径及名字.sql 备份所有数据库:mysqldump -u 用

[转]MySQL数据库备份和还原的常用命令小结

MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. mysqldump ---add-drop-table -uusername -ppassword databasena

MySQL数据库备份和还原的常用命令小结

MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. mysqldump ---add-drop-table -uusername -ppassword databasena

第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原

MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接将windows的环境变量path中添加该目录) 2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 如我输入的命令行:mysqldump -u root -p news > news.sql