mysql数据备份与恢复_MySQL数据备份与恢复

常见的MySQL管工具

mysql 命令行 跨平台 MySQL官方bundle包自带

MySQL-Workbench 图形 跨平台 MySQL官方提供

MySQL-Front 图形 Windows 开源,轻量级客户端软件

phpMyAdmin 浏览器 跨平台 开源,需LAMP平台

Navicat 图形 Windows 专业、功能强大、商业版

PhpMyAdmin部署思路:

1.安装httpd、mysql、php-mysql及相关包

2.启动httpd服务程序

3.解压phpMyAdmin包,部署到网站目录

4.配置config.inc.php,指定MySQL主机地址

5.创建授权用户

6.浏览器访问、登录使用

yum -y install httpd php php-mysql

tar -zxf phpMyAdmin-2.11.11-all-languages.tar.gz -C /var/www/html/

cd /var/www/html/

mv phpMyAdmin-2.11.11-all-languages/ phpmyadmin

chown -R apache:apache phpmyadmin/

cp phpmyadmin/config.sample.inc.php phpmysdmin/config.inc.php

vim /var/www/html/phpmyadmin/config.inc.php

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['blowfish_secret'] = '123456';

mysql>create database bbsdb;

mysql>grant all on bbsdb.* to admin@'localhost' identified by '654321';

systemclt start httpd

firefox http://localhost/phpmyadmin

MySQL数据备份与恢复

数据备份方式:

1.物理备份,冷备份:cp 、 tar 、 ....

例:物理备份与恢复

备份操作格式:

cp -rp /var/lib/mysql/数据库 备份目录/文件名

tar -zcvf xxx.tar.gz /var/lib/mysql/数据库/*

恢复操作格式:

cp -rp 备份目录/文件名 /var/lib/mysql/(默认存储路径)

tar -zxvf xxx.tar.gz -C /var/lib/mysql/数据库名/

2.逻辑备份,mysqldump 、mysql

原理:执行备份时,根据已有的库和表生成对应SQL命令,把生成的SQL命令存储到指定的备份文件里。

备份策略:

完全备份:备份所有数据(一台服务器,一个库,一张表)

增量备份:备份自上一次备份(包含完全备份、差异备份、增量备份)之后有变化的数据。

差异备份:备份自上一次完全备份之后有变化的数据。

例:逻辑备份及恢复

完全备份操作格式:

mysqldump -u用户名 -p密码 源库名 > 路径/xxx.sql

完全备份的恢复操作格式:

mysql -u用户名 -p密码 目标库名 < 路径/xxx.sql

库名的表示方式:

--all-databases 所有库

库名 指定的单个库

库名.表名 指定库的指定表

-B 库名1 库名2 .. 备份多个库

注意事项:

无论备份还是恢复,都要验证用户及权限。

例:

将所有的库备份为mysql-all.sql文件

mysqldump -u root -p 123456 --all-databases > alldb.sql

将userdb库备份为userdb.sql文件

mysqldump -u root -p 123456 userdb > userdb.sql

将备份文件userdb.sql恢复到userdb3库

mysql>create databases userdb3;

mysql -u roo -p 123456 userdb3 < userdb.sql

实时增量备份

binlog日志

类型:二进制日志,用途:记录所有更改数据的操作,

配置:

log_bin[=dir/name]

server_id=数字

max_binlog_size=数字m

启用binlog日志

采用binlog日志的好处

1.记录除查询之外的所有SQL命令。

2.用于数据恢复。

3.配置mysql主从同步的必要条件。

例:

vim /etc/my.cnf

[mysqld]

....

log_bin //启用binlog日志

server_id=100 //指定id值,id号不能重复(1-255)范围。

systemctl restart mysqld

binlog相关文件

默认日志文件名:

主机名-bin.index //记录已有的binlog日志文件名

主机名-bin.000001 //第1个二进制日志(达到500M存去下一条纪录)

主机名-bin.000002 //第2份二进制日志

....

手动生成新的日志文件

1.重启mysql服务

2.执行SQL操作 mysql > flush logs;(flush logs,切换到下一个binlog日志文件)

3.mysqldump --flush-logs

4.mysql -uroot -p密码 -e 'flush logs'

清理binlog日志

删除早于指定版本的binlog日志:

purge master logs to 'binlog文件名';

删除所有binlog日志,重建新日志:

reset master;

例:

mysql>purge master logs to 'mysql-bin.000003';

mysql>reset master;

分析binlog日志

查看日志当前记录格式:

mysql>show variables like 'binlog_format';

修改日志记录格式:

vim /etc/my.cnf

[mysqld]

....

binlog_format="mixed" 设置日志文件的记录格式

systemctl restart mysqld

三种记录格式:

1.statement: 每一条修改数据的sql命令都会记录在binlog日志中。

2.row: 不记录sql语句上下文相关信息,仅保存哪条记录被修改。

3.mixed: 是以上两种格式的混合使用。

binlog日志文件记录sql命令的方式:

1.时间点

2.pos点(偏移量)

查看有哪些bilog日志:

mysql>show master logs;

使用mysqlbinlog工具

格式:mysqlbinlog [选项] binlog日志文件名

常用选项:

1.时间点:

--start-datetime="yyyy-mm-dd hh:mm:ss"

--stop-datetime="yyyy-mm-dd hh:mm:ss"

2.pos点:

--start-position=数字

--stop-position=数字

例:

查看从2017年1月2日15:30开始的更改操作

mysqlbinlob --start-datetime="2017-01-01 15:30" /var/lib/mysql-bin.000001

....

at 318

解释:

server id 1 : 数据库主机的服务号;

end_log_pos 796 : sql结束时的pos节点

thread_id=11 : 线程号

binlog恢复数据

方式一:

基本思路:

1.使用mysqlbinlog提取历史SQL操作

2.通过管道交给mysql命令执行

例:

恢复第1份binlog日志的部分信息

mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000001

mysqlbinlog --start-position=296 --stop-position=1073 /var/lib/mysql-bin.000001 |mysql -uroot -p123456

方式二:

命令格式:

mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

参数解释:

IN 'log_name' :指定要查询的binlog文件名(不指定就是第一个binlog文件)

FROM pos :指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)

LIMIT [offset,] :偏移量(不指定就是0)

row_count :查询总条数(不指定就是所有行)

例:

mysql>show binlog events in 'mysql-bin.000002'\G;

MySQL备份工具

物理备份缺点:

1.跨平台性差

2.备份时间长、冗余备份、浪费存储空间

mysqldump备份缺点:

1.效率较低,备份和还原速度慢。

2.备份过程中,数据插入和更新操作会被挂起。

XtraBackup备份工具:

1.备份过程中不锁库表,适合生产环境。

2.由专业组织Percona提供(改进MySQL分支)。

主要含两个组件:

1.xtrabackup:C程序,支持InnoDB/XtraDB

2.innobackupex:以Perl脚本封装xtrabackup,还支持MyISAM

支持事务和事务回滚,要求存储引擎为innodb

事务日志文件:

ibdata

LSN 日志序列号

ib_logfile0 //SQL命令

ib_loggile1

....

安装XtraBackup

yum -y install perl-Digest-MD5.x86_64 rsync perl-DBD-MySQL

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

rpm -ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

rpm -ql percona-xtrabackup-24

/usr/bin/innobackupex //备份innodb、xtrdb、myisam引擎的表

/usr/bin/xbcloud

....

/usr/bin/xtrabackup //备份innodb、xtrdb引擎的表

....

innobackupex基本选项

--host //主机名

--user //用户名

--port //端口号

--password //密码

--databases //数据库名(单个库:databases="库名",多个库:databases="库1 库2",单个表:databases="库.表")

--no-timestamp //不用日期命名备份文件存储的子目录名

--redo-only //日志回滚合并(最后一次增量备份日志回滚不需要此选项)

--apply-log //准备还原(回滚日志)

--copy-back //恢复数据

--incremental 目录名 //增量备份

--incremental-basedir=目录名 //增量备份时,指定上一次备份数据存储的目录名

--incremental-dir=目录名 //准备恢复数据时,指定增量备份数据存储的目录名

--export //导出表信息

import //导出表空间

XtraBackup完全备份

格式:innobackupex -user 用户名 --password 密码 --databases="系统库列表和存储数据库" 备份目录名 --no-timestamp

例:将所有库完全备份到 /backup

innobackupex --user root --password 123456 /backup --no-timestamp

XtraBackup完全恢复

完全恢复时要求空的库目录

rm -rf /var/lib/mysql

mkdir /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

格式:innobackupex -user 用户名 --password 密码 --databases="系统库列表和存储数据库" --copy-back 备份目录名

例:恢复所有数据

innobackupex --apply-log /backup

innobackupex --copy-back /backup

XtraBackup增量备份

必须先有一次完全备份

格式:innobackupex --user 用户名 --password 密码 databases="系统库列表和存储数据库" --incremental 目录名 --incremental-basedir="完全备份目录名" -no-timestamp

例:完全备份到/allbak、第一次增量备份到/new1、第二次增量备份到/new2

cp -rp /var/lib/mysql/mysql /root/mysql.bak //备份授权库

innobackupex --user root --password 123456 --databases="gamedb" /fullbak --no-timestamp //完全备份

innobackupex --user root --password 123456 --databases="gamedb" --incremental /new1 --incremental-basedir="/fullbak" --no-timestamp //第一次增量备份

innobackupex --user root --password 123456 --databases="gamedb" --incremental /new2 --incremental-basedir="/new1" --no-timestamp //第二次增量备份

XtraBackup增量恢复

rm -rf /var/lib/mysql

mkdir /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

格式:

1.innobackupex --user 用户名 --password 密码 --databases="系统库列表和存储数据库" --apply-log --redo-only 完全备份目录名

2.innobackupex --user 用户名 --password 密码 --databases="系统库列表和存储数据库" --apply-log --redo-only 完全备份目录名 --incremental-dir=增量备份目录名

3.innobackupex --user 用户名 --psssword 密码 --databases="系统库列表和存储数据库" --copy-back 完全备份目录名

例:恢复第一次增量备份到/new1、第二次增量备份到/new2的数据

rm -rf /var/lib/mysql

mkdir /var/lib/mysql

innobackupex --user root --password 123456 --databases="gamedb" --apply-log --redo-only /fullbak //恢复完全备份

innobackupex --user root --password 123456 --databases="gamedb" --apply-log --redo-only /fullbak --incremental-dir="/new1" //恢复增量

innobackupex --user root --password 123456 --databases="gamedb" --apply-log /fullbak --incremental-dir="new2" //恢复增量

innobackupex --user root --password 123456 --databases="gamedb" --copy-back /fullbak //拷贝文件

cp -r /root/mysql.bak /var/lib/mysql/mysql

chown -R mysql:mysql /var/lib/mysql

恢复完全备份文件中的单个表

格式:innobackupex innobackupex --user 用户名 --password 密码 --databases="系统库列表和存储数据库" --apply-log --export 完全备份目录名

例:完全备份数据库到/allbak目录

innobackupex --user root --password 123456 --databases="gamedb" /allbak --no-timestamp //完全备份

mysql>drop table gamedb.a;

innobackupex --user root --password 123456 --databases="gamedb" --apply-log --export /allbak //导出表信息

mysql>create table gamedb.a(id int); //创建表

mysql>alter table gamedb.a discard tablespace; //删除表空间

cp /allbak/gamedb/a.{ibd,cfg,exp} /var/lib/mysql/gamedb //拷贝表信息文件

chown mysql:mysql /var/lib/mysql/gamedb/a.* //修改所有者

mysql>alter table gamedb.a import tablespace; //导入表空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js粘贴板为什么获取不到图片信息_图床+typora,告别markdown中关于图片的困惑

在上一篇文章中向大家介紹了几款软件&#xff0c;这篇文章主要分享一下markdown编辑器typora软件如何使用图床&#xff0c;快速的将图片加载到markdown文档中。图床&#xff1a;指存储图片的服务器&#xff0c;将图片上传到服务器上&#xff0c;转换成链接为什么使用图床&#…

计算机二级mysql是什么_计算机二级mysql考什么内容?

计算机二级mysql考什么内容&#xff1f;一、基本概念与方法&#xff11;、数据库基础知识(1)数据库相关的基本概念(2)数据库系统的特点与结构(3)数据模型2、关系数据库、关系模型3、数据库设计基础(1)数据库设计的步骤(2)关系数据库设计的方法4、MySQL概述(1)MySQL系统特性与工…

eclipse软件有时会退出弹出一串错误弹框_修复iPhone上的iOS 13软件更新失败错误...

如果由于“软件更新失败&#xff1a;下载iOS 13时发生错误”错误而无法安装刚刚发布的用于检查新的暗模式功能的iOS 13更新&#xff0c;那么我可以理解这种挫败感。但幸运的是&#xff0c;有些解决方案可以尝试修复某些用户报告的iOS 13软件更新失败错误。解决iPhone 13软件失败…

mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。使用Select语句返回的数据&#xff0c;可能会发现显示的数据会与其他的地方顺序不同。出现这种情况很正常。如果没有明确排序…

vep文件如何转换mp4_如何将DVD的vob视频格式转换成mp4格式

首先简述一下&#xff0c;VOB是DVD Video OBject的缩写&#xff0c;vob文件用来保存所有MPEG-2格式的音频和视频数据&#xff0c;这些数据不仅包含影片本身&#xff0c;而且还有供菜单和按钮用的画面以及多种字幕的子画面流。如何把视频vob格式转换成任意格式视频文件呢&#x…

国开mysql答案_国开MySQL数据库应用形考任务.doc

《国开MySQL数据库应用形考任务.doc》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《国开MySQL数据库应用形考任务.doc(13页珍藏版)》请在装配图网上搜索。1、国开MySQL数据库应用形考任务1-4实验训练1 在MySQL中创建数据库和表请到电脑端查看实验目的熟悉MySQL环境的…

esp8266接收到的数据如何存放到数组中_Java中HashMap的实现原理

最近面试中被问及Java中HashMap的原理&#xff0c;瞬间无言以对&#xff0c;因此痛定思痛觉得研究一番。一、Java中的hashCode和equals1、关于hashCodehashCode的存在主要是用于查找的快捷性&#xff0c;如Hashtable&#xff0c;HashMap等&#xff0c;hashCode是用来在散列存储…

python测试用例管理_Python测试框架Pytest的常用插件测试报告

原标题&#xff1a;Python测试框架Pytest的常用插件测试报告一、pytest-html 生成 html 测试报告 要求&#xff1a;Python 3.6 安装&#xff1a;pip install pytest-html 文档&#xff1a;https://github.com/pytest-dev/pytest-html、https://www.cnblogs.com/linuxchao/p/lin…

python symbol函数展开_QGIS表达式中的函数

编程语言中的函数&#xff0c;与数学函数的定义大不相同。在计算机领域&#xff0c;函数是指一段可以直接被另一段程序或代码引用的程序或代码&#xff0c;也叫做子程序(subroutine)、过程(procedure)、方法(method)。函数在QGIS表达式构建过程中起到重要作用&#xff0c;表达式…

layui 金额数据千分位_IG神秘打野韩服数据,盲僧数据或暗示英雄池问题

在LPL春季赛结束&#xff0c;而夏季赛还未开始的这段时间&#xff0c;是LPL各大战队能够利用的宝贵时间。为了备战S10&#xff0c;有一些队伍确实需要引援。而在这次转会期期间&#xff0c;率先出现转会传闻的是IG战队。据传IG打野Leyan有离队的可能&#xff0c;同时IG也在积极…

mysql 远程登录 1045_MySQL处理远程登录错误1045

远程连接 mySql数据库会提示10061、1045错误或 2003-Can’t connect to MySQL on ’192.168.1.2’(10061),这个原因是因为MySQL不准许远程连接。最简单的办法是&#xff0c;通过root用户进入mysql&#xff0c;添加下面命令&#xff1a;grant all on *.* to 用户名"%"…

python设计模式pdf_精通Python设计模式 高清晰PDF+源码

精通Python设计模式讲述了16种基本设计模式&#xff0c;轻松解决软件设计常见问题&#xff1b;借力高效的Python语言&#xff0c;用现实例子展示各模式关键特性。 本书用实际生活中的例子带你了解常用的设计模式&#xff0c;介绍了诸多有关编写Python风格代码的底层细节和概念&…

java精准查询mysql时间_在mysql查询中查找与指定日期时间最接近的日期时间

我试图在mysql数据库中找到一个datetime值&#xff0c;它与我指定的日期时间最接近&#xff0c;我遇到了一些麻烦 .以下伪代码是我想要实现的&#xff1a;SELECT one FROM table WHERE datetimefield is closest to "2014-12-10 09:45:00" LIMIT 1提前致谢EDIT感谢到…

datanode无法启动_Hadoop DataNode启动和初始化过程

简介我们先看DataNode的doc文档的介绍&#xff0c;DataNode是一个类&#xff0c;用于存储一组块&#xff0c;用于DFS部署。单个部署可以有一个或多个DataNode。每个DataNode通信定期与单个NameNode进行通信。它还可以与客户端和其他的DataNodes通信。DataNode存储一系列命名的块…

MySQL社区介绍_mysql社区服务器

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

mac地址修改_如何修改手机MAC地址?

我们都知道MAC是网卡的物理的地址&#xff0c;一般是固化的网卡芯片&#xff0c;不管是手机和电脑都是相对于的MAC地址的&#xff0c;不管什么情况下MAC的地址都是唯一的。而对于电脑来说大家可以通过更换网卡的方式来换MAC地址&#xff0c;但是对于手机来说&#xff0c;更换硬…

mysql rename table_Mysql: RENAME TABLE IF EXISTS

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效&#xff0c;请关闭广告屏蔽插件后再试):问题:This DROP TABLE IF EXISTS works, too bad that RENAME TABLE IF EXISTS doesnt work.Can anyone suggest a solution for this query? You have an error in …

挖掘机燃料_2020广东挖掘机工程机械出租公司合作共赢

如今的挖掘机具有比以往更多的内置安全功能&#xff0c;但这并不意味着只有任何人都可以爬上驾驶室并安全操作。1、仔细检查地面区域使用挖掘机时&#xff0c;诸如岩石、建筑材料和树桩之类的物品会损害安全性。在开始操作机器之前&#xff0c;请确保已将其从该区域中清理。此外…

mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...

添加和删除列使用ADD向表中添加新列&#xff0c;使用DROP删除现有列。DROP col_name是对标准SQL的MySQL扩展。若要在表行的特定位置添加列&#xff0c;请使用FIRST col_name 或者 AFTER col_name。默认情况是添加到最后。如果表只包含一列&#xff0c;则不能删除该列。如果您想…

ant构建项目迁移到gradle_Gradle构建工具

构建工具的作用&#xff1a;依赖管理&#xff1b;测试、打包、发布&#xff1b;机器能干的活&#xff0c;绝不自己动手。主流构建工具&#xff1a;(1)Ant&#xff1a;编译、测试、打包&#xff1b;(2)Maven&#xff1a;依赖管理、发布&#xff1b;(3)Gradle&#xff1a;Groovy&…