mysql数据库备份与还原_使用sql语句备份mysql数据库

一、测试数据库的创建

1:官方百万级别的测试数据库:

官方测试数据库github网址:https://github.com/datacharmer/test_db

下载到目录,解压即可,运行命令:

mysql -u root -p < employees.sql mysql -u root -p < employees_partitioned.sql

2:自己创建简单测试数据库:

快速随机生成测试语言的网站:https://generatedata.com/

选择sql和想生成的字段,点击生成Generate!生成即可。

mysql数据库备份与还原_使用sql语句备份mysql数据库

mysql数据库备份与还原_使用sql语句备份mysql数据库

在MySQL输入生成的语句即可。

#1:创建数据库 create database testDatabase; #2:使用数据库 use testDatabase; #3:创建表 CREATE TABLE `myTable` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) default NULL, `phone` varchar(100) default NULL, `country` varchar(100) default NULL, `numberrange` mediumint default NULL, PRIMARY KEY (`id`) ) AUTO_INCREMENT=1; 34;Wade Sykes","1-917-342-3132","Turkey",3), ("Barrett Boyer","1-264-304-0665","Germany",9), ("Alana Kaufman","(213) 254-4997","India",0), ("Emmanuel Lopez","(543) 493-0137","Germany",9), ("Timon Bauer","1-269-448-2772","Pakistan",6);

3:测试备份还原时用到的命令

删库跑路测试(先备份好)

drop database testDatabase;

还原后查询库的表数据是否完整。

select * from testDatabase.myTable +----+----------------+----------------+----------+-------------+ | id | name | phone | country | numberrange | +----+----------------+----------------+----------+-------------+ | 1 | Wade Sykes | 1-917-342-3132 | Turkey | 3 | | 2 | Barrett Boyer | 1-264-304-0665 | Germany | 9 | | 3 | Alana Kaufman | (213) 254-4997 | India | 0 | | 4 | Emmanuel Lopez | (543) 493-0137 | Germany | 9 | | 5 | Timon Bauer | 1-269-448-2772 | Pakistan | 6 | +----+----------------+----------------+----------+-------------+

二、非常规备份方式

采用复制整个数据存放目录

1:查看数据库数据存放位置

有两种方法:

1):在数据库中用命令 show variables like 'datadir'; 查看

mysql > show variables like 'datadir'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set Time: 0.031s

2):在配置文件中查看,配置了 datadir 目录的可查看。没有配置的默认为 /var/lib/mysql/ 位置

Linux中查看配置文件

ubunut cat /etc/mysql/my.cnf

2:复制目录或者目录下某个数据库名

cp -fr /var/lib/mysql/ /backup/

3:还原时直接复制文件夹到数据库目录即可

cp -fr /backup/ /var/lib/mysql/

三、常规备份方式基本命令mysqldump

mysqldump又可叫做全量备份。

参数 –databases 同 -B ,单独一个库,也可省略。

1、备份命令mysqldump格式

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 database 数据库名 > 文件名.sql

备份testDatabase数据库

sudo mysqldump -u root -p --databases testDatabase > testdatabase.bak.sql

2、备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

sudo mysqldump --add-drop-table -u root -p --databases testDatabase > testdatabase.sql

3、直接将MySQL数据库压缩备份

备份并压缩

sudo mysqldump -u root -p --databases testDatabase | gzip > testdatabase.sql.gz

4、备份MySQL数据库某个(些)表

备份testDatabase中的myTable表,不需要用参数 –databases 或者 -B

sudo mysqldump -u root -p testDatabase myTable > myTable.sql

5、同时备份多个MySQL数据库

同时备份testDatabase和 employees两个库

sudo mysqldump -u root --databases testDatabase employees > backup.sql

6、备份服务器上所有数据库

参数 –all-databases 同 -A

sudo mysqldump --all-databases > allbackupfile.sql

7、还原MySQL数据库的命令

1) 不指定数据名还原,默认生成原数据库名称,还原所有数据库。

sudo mysql -u root -p < allbackupfile.sql

2) 指定数据名还原,还原指定单个数据库,需在数据库种预先创建一个testDatabase名称。

sudo mysql -u root -p testDatabase < allbackupfile.sql

3) 还原压缩的MySQL数据库

gunzip < testDatabase.sql.gz | mysql -u root -p testDatabase #ubuntu 加sudo sudo gunzip < testDatabase.sql.gz | sudo mysql -u root -p testDatabase

4) 进入数据库用source导入

选择数据库 USE testDatabase; #导入sql文件 SOURCE /home/ubuntu/testDatabase.sql;

四、增量备份mysqladmin,以及还原

增量备份是针对于数据库的bin-log日志进行备份的,增量备份是在全量的基础上进行操作的。增量备份主要是靠mysql记录的bin-log日志。

1:查看是否开启bin-log日志

进入mysql输入命令可查看。

show variables like '%log_bin%';

显示如下为开启状态,日志文件在/var/lib/mysql/以binlog.00001的格式保存。

mysql> show variables like '%log_bin%'; +---------------------------------+-----------------------------+ | Variable_name | Value | +---------------------------------+-----------------------------+ | log_bin | ON | | log_bin_basename | /var/lib/mysql/binlog | | log_bin_index | /var/lib/mysql/binlog.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | | sql_log_bin | ON | +---------------------------------+-----------------------------+ 6 rows in set Time: 0.012s mysql root@(none):testDatabase>

如未开启,需要在配置文件种配置

#binlog setting,开启增量备份的关键 log-bin=/var/lib/mysql/binlog

2:查看目前使用的bin-log日志文件

进入mysql查看命令。

show master status;

显示如下,目前使用的是binlog.000022文件,所有操作都记录在此文件。

mysql> show master status; +---------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------+----------+--------------+------------------+-------------------+ | binlog.000022 | 156 | | | | +---------------+----------+--------------+------------------+-------------------+ 1 row in set Time: 0.007s

查看当前testDatabase的表myTable数据如下,

mysql > select * from testDatabase.myTable +----+----------------+----------------+----------+-------------+ | id | name | phone | country | numberrange | +----+----------------+----------------+----------+-------------+ | 1 | Wade Sykes | 1-917-342-3132 | Turkey | 3 | | 2 | Barrett Boyer | 1-264-304-0665 | Germany | 9 | | 3 | Alana Kaufman | (213) 254-4997 | India | 0 | | 4 | Emmanuel Lopez | (543) 493-0137 | Germany | 9 | | 5 | Timon Bauer | 1-269-448-2772 | Pakistan | 6 | | 7 | ABC | 1-917-342-3123 | KHMER | 6 | +----+----------------+----------------+----------+-------------+ 6 rows in set Time: 0.008s

3:刷新日志,使用新的日志文件(备份)

在命令端执行命令

mysqladmin -u root -p flush-logs

日志文件从 binlog.000022 变为 binlog.000023

mysql> show master status; +---------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------+----------+--------------+------------------+-------------------+ | binlog.000023 | 841 | | | | +---------------+----------+--------------+------------------+-------------------+ 1 row in set Time: 0.007s

这时相当与已经备份成功,备份文件即为上次的binlog.000022日志文件。

4:删除数量,从日志还原数据

1) 删除ABC行

delete from `myTable` where name = 'ABC';

查询以及没有ABC行列。

mysql> select * from testDatabase.myTable +----+----------------+----------------+----------+-------------+ | id | name | phone | country | numberrange | +----+----------------+----------------+----------+-------------+ | 1 | Wade Sykes | 1-917-342-3132 | Turkey | 3 | | 2 | Barrett Boyer | 1-264-304-0665 | Germany | 9 | | 3 | Alana Kaufman | (213) 254-4997 | India | 0 | | 4 | Emmanuel Lopez | (543) 493-0137 | Germany | 9 | | 5 | Timon Bauer | 1-269-448-2772 | Pakistan | 6 | +----+----------------+----------------+----------+-------------+ 5 rows in set Time: 0.008s

2) 恢复数据ABC行

退出mysql,在命令端用mysqlbinlog命令恢复到binlog.000022日志状态。

sudo mysqlbinlog /var/lib/mysql/binlog.000022 | sudo mysql -u root -p testDatabase;

进入数据库再次查看数据,ABC已经恢复。

mysql> select * from testDatabase.myTable +----+----------------+----------------+----------+-------------+ | id | name | phone | country | numberrange | +----+----------------+----------------+----------+-------------+ | 1 | Wade Sykes | 1-917-342-3132 | Turkey | 3 | | 2 | Barrett Boyer | 1-264-304-0665 | Germany | 9 | | 3 | Alana Kaufman | (213) 254-4997 | India | 0 | | 4 | Emmanuel Lopez | (543) 493-0137 | Germany | 9 | | 5 | Timon Bauer | 1-269-448-2772 | Pakistan | 6 | | 7 | ABC | 1-917-342-3123 | KHMER | 6 | +----+----------------+----------------+----------+-------------+ 6 rows in set Time: 0.008s

增量备份完成。

本文【mysql数据库备份与还原_使用sql语句备份mysql数据库】由作者: 自旋锁 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4210.html

(0)
上一篇 2023-03-10 09:03:42
下一篇 2023-03-11 08:02:31

相关推荐

  • cad转jpg线条不明显怎么办

    CAD文件转JPG图片如何转才能非常清晰呢?大家都知道CAD图纸设计出来,是需要拿出来进行实地参考和浏览的,将它转换成图片会让我们在外面观看时方便很多。但是很多种转换方法转换出来的图片都不怎么清晰,今天教大家两种能够清晰转换的方法,有需要的小伙伴快来一起学习吧。 方法一:在线网站转换 使用在线网站转换文件格式,有时候可以帮助我们解决燃眉之急。CAD在线转换器…

    2023-03-16
    100
  • 启动出现问题找不到指定的模块(电脑提示找不到指定模块)

    最近,有效的合作伙伴反馈他的Win10计算机将弹出一个“rundll”错误对话框,但找不到问题,计算机可以继续正常运行,发生了什么?为什么你弹出这个提示?我们一起看。以下小系列为您带来了解决方案。 具体步骤: 查询logida.dll的数字签名属于罗技,应该安装软件,但软件文件删除无法正常启动,所以您可以遵循这些步骤! 请尝试删除计算机上罗技相关的软件。 1…

    2023-03-20
    000
  • jsp实现购物车功能总结

    原文: https://www.cnblogs.com/wang-meng/p/5854773.html 今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在…

    2023-03-14
    100
  • php连接mysql数据库四步

    PHP和MySQL是目前特别流行的一种Web应用开发方式,例如wordpress。印象中PHP支持使用很多种数据库,而且MySQL就有mysql、mysqli、pdo三种API可用。本文旨在从PHP数据库访问设计的思路为轴,简单的捋清这些关系。 原文:https://segmentfault.com/a/1190000005026781 PHP手册中《数据库…

    2023-03-16
    200
  • 图形用户界面操作系统借助于

    操作系统 现代操作系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。计算机操作系统是一个复杂的系统。 然而,程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有操作系统的细节,这样我们就不用再编写代码了,所以在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而…

    2023-03-21
    000
  • linuxshell编程期末常考题_shell编程100例

    shell是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,从而实现一些较为复杂的功能。 shell是用户使用Linux的桥梁,一个Linux维护人员的水平,往往就是靠对shell的理解来决定的! 今天给大家…

    2023-03-12
    300
  • udp协议和tcp协议在哪一层_tcp和udp协议

    你是否感觉 Http、Https、TCP、UDP这些协议很耳熟,经常听到但不知道是怎么回事;或是很了解,但让你解释又容易解释不清? 一起来看看他们之间的区别和联系吧~ 一、先有个基础的认知 HTTP和HTTPS是应用层协议,该层协议负责主机间数据传输; TCP和UDP是传输层协议,该层协议负责网络连接。 二、HTTP和HTTPS HTTPS = HTTP +…

    2023-03-12
    400
  • pascal程序

    1 编程语言的演变 ALGOL一开始的设计目标就是描述算法,连一个标准的I/O都没有定义,导致其在商业应用上受阻。 虽然在商业应用上没有成功,但ALGOL开创的思想,影响了我们现在所熟知的编程语言,成为很多编程语言的根。 2 程序设计思想的演化 1968年,荷兰学者E.W.Dijkstra提出了程序设计中常用的GOTO语句的三大危害:破坏了程序的静动一致性;…

    2023-03-18
    300
  • python爬虫有什么用处_python爬虫要学多久

    首先,Python语言是比较适合自学的,一方面Python语言的语法比较简单,另一方面Python语言的应用场景非常多,相关的开发案例也非常多。Python作为当前流行程度比较高的全场景编程语言,在未来的工业互联网时代会有大量的应用,而且与Java语言主要应用在IT互联网行业不同,Python语言在传统行业领域也有广泛的应用。 自学Python可以按照以下几…

    2023-03-10
    300
  • php四舍五入保留一位小数

    php中在处理带在多位小数的数字时,有时候要用到四舍五入的方法取这个数字的相似值。那么这篇博文就来介绍一下,php 中四舍五入的函数 round() php round() 函数 round():对于一个带有小数的数字进行四舍五入。 语法: round(x,prec)参数: x:(可选)可四舍五入处理的数字 prec:(可选)规定要保留的小数的位数,它可以是…

    2023-03-13
    600

发表回复

登录后才能评论
返回顶部
错说博客上线啦!