MYSQL数据库备份还原,并还原到最新状态(mysqldump)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MYSQL数据库备份还原,并还原到最新状态(mysqldump),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2434字,纯文字阅读大概需要4分钟。
内容图文
启用二进制日志文件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 @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=‘+00:00‘ */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=‘NO_AUTO_VALUE_ON_ZERO‘ */;
/*!40111 SET @OLD_SQL_NOTES=@@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
内容总结
以上是互联网集市为您收集整理的MYSQL数据库备份还原,并还原到最新状态(mysqldump)全部内容,希望文章能够帮你解决MYSQL数据库备份还原,并还原到最新状态(mysqldump)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。