Code前端首页关于Code前端联系我们

备份mysql数据库的时候,备份数据库

terry 2年前 (2023-09-30) 阅读数 47 #Mysql
文章标签 Mysql

本文内容列表:

  • 1.如何使用mysqldump命令备份mysql数据库
  • 2.MySQL备份与恢复、非常规备份、全量备份、增量备份
  • 3. 如何备份整个mysql数据库
  • 4.如何备份和恢复mysql数据库
  • 5.如何备份MYSQL数据库?

如何使用mysqldump命令备份mysql数据库

作为一般规则,仅使用 --all-databases (-A) 会导致错误 1356,所以让我们看看它备份了什么。所以我才叫同事少一起看,上下看。我突然发现:1.在SQL备份文件中DROP mysql.proc; 2.然后创建新的mysql.proc; 3. LOCK TABLES 和 UNLOCK TABLES 之间没有备份 CREATE ROUTINE 数据吗?这不是与每次导入时给我一个全新的 mysql.proc 表而没有任何系统模式例程一样吗?这不是非常尴尬吗?

----`proc`表的表结构--

----`proc`表的数据转储-

真相在官方文档【sys-schema-usage】中揭晓官方文档明确告诉我们系统库不会被备份。但是当你使用mysqldump并运行--all-databases时,mysql.proc将被清除,sys将不再正常使用;这是一个BUG,仅存在于MySQL 5.7.x中!

1。 mysql_upgrade 安装或升级系统架构

此解决方法适合在 sys 库因 mysqldump 导入而损坏时使用。

注:mysql_upgrade在修复sys库的同时,也修复了mysql库和用户库表(期间锁定,速度一般)。意外损坏的可能性很小;使用mysql_upgrade时添加--upgrade-system-tables,否则将扫描用户数据库表。

2、全量备份时同时备份系统库

此方案适合需要恢复的数据库,可以在系统库不正常时使用;完整备份后,备份系统库的附加副本以进行修复。

注意:不适合用作主站和从站。

3。使用数据库进行全量备份

此方案适合全场景全量备份需求,100%安全。

4。使用开源 mysql-sys

如果数据库中的所有系统都被感染,它又会成为生产数据库。那么就只能用这个方法了;

mysql-sys:创建sys库的语句写在

中。将文件下载到本地,然后根据数据库版本执行以下命令。

MySQL备份与恢复、非常规备份、全量备份、增量备份

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

官方github测试数据库网址:

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

2:创建一个简单的测试数据库:

一个快速随机生成测试语言的网站:

选择要生成的sql和字段,然后点击生成!创造。

只需将生成的语句输入MySQL即可。

3:测试备份和恢复时使用的命令

删除数据库并运行测试(先备份)

验证恢复后数据库表数据是否完整。

使用复制整个数据存储目录

1:查看数据库的数据存储位置

有两种方式:

1):使用命令 show 数据库中的“datadir”等变量; check

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

Linux 下查看配置文件

2:复制目录下的目录或数据库名称

3:直接复制文件夹恢复时到数据库目录但是

mysqldump也可以称为全备份。

--databases 参数与 -B 相同,是一个库,您也可以省略。

1. 备份命令 mysqldump 格式

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

备份 testDatabase 数据库

2. 删除表备份 MySQL 数据库格式

MySQL备份数据库采用deleted-tables格式,允许备份覆盖现有数据库,而无需手动删除原始数据库。 ? B

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

同时备份 testDatabase 和员工数据库

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

--all- 数据库参数同-A

7. MySQL数据库恢复命令

1)不指定数据名恢复。默认创建原始数据库名称,并恢复所有数据库。

2) 指定要恢复的数据的名称。要恢复特定的单个数据库,您必须首先在该数据库中创建名称为 testDatabase 的数据库。

3)恢复压缩后的MySQL数据库

4)进入数据库,使用源导入

增量备份是备份数据库的bin-log,增量备份是基于整个数据库进行的体积。增量备份主要依赖mysql记录的bin-log。

1:检查bin-log是否开启

进入mysql,输入view命令。

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

如果没有启用,需要在配置文件中进行配置

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

输入 mysql 查看命令。

如下图,当前使用的是binlog.000022文件,所有操作都记录在该文件中。

查看当前测试数据库的myTable数据如下,

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

在命令终端执行命令

。日志文件从 binlog.000022 更改为 binlog.000023

目前相当于成功的备份。备份文件为最后一个日志文件binlog.000022。

4:删除数量并恢复日志数据

1)删除ABC行

查询没有ABC行。

2) 恢复数据行ABC

关闭mysql,在命令终端使用mysqlbinlog命令恢复binlog日志status.000022。

进入数据库再次查看数据。 ABC已重建。

增量备份完成。

如何备份整个mysql数据库

1。首先,打开mysql数据库软件,进入软件主界面。

2。然后在左侧的树中打开您的数据库。

3。然后单击要备份的数据库的名称。

4。图为打开数据库后的界面。

5。然后您需要单击转储 sql 文件的选项。

6。然后需要打开,选择保存文件的路径,然后选择保存。

7。单击“保存”,将sql格式的数据库文件备份到该路径。

如何备份和恢复mysql数据库

备份数据库

使用mysqldump命令备份数据库

恢复数据库

1.使用mysql命令恢复数据库

将game_backup.sql恢复到游戏数据库:

2.使用原生命令恢复数据库

如果数据库太大,建议使用原生命令

如何备份MYSQL数据库?

定期备份可以大大减少我们数据库崩溃带来的损失。 MySQL 中的数据备份有两种方法。一种是使用mysqldump,另一种是使用mysqlhotcopy、cp、tar或cpio等打包器直接复制数据库文件。 mysqldump 备份数据库的速度很慢,但它创建的文本文件很容易下载。使用mysqlhotcopy之类的程序进行备份速度很快,因为它直接作用于系统文件,并且需要在备份前后手动一致性数据库数据。

使用mysqldump备份数据库实际上是将数据库转储到一系列CREATE TABLE和INSERT语句中。通过这些语句我们可以重新生成数据库。 mysqldump的使用方法如下:

% mysqldump --opt testdb | gzip /data/backup/testdb.bak

#--opt 选项将优化转储过程,创建的备份将更小。管道操作会进行数据压缩

% mysqldump --opt testdb mytable1,mytable2 | gzip /data/backup/testdb_mytable.bak

#可以为数据库添加数据表名称,以仅导出指定的数据表。多个数据表可以用逗号

分隔——opt选项也可以激活--add-drop-table选项,该选项将被添加到备份文件中。在每个 CREATE TABLE 之前添加 DROP TABLE IF EXISTS 语句。这样可以轻松更新数据表,而不会出现“数据表已存在”错误。

您还可以使用mysqldump命令将数据库直接传输到另一台服务器,而无需生成备份副本。重复执行会定期更新远程数据库。

% mysqladmin -h 远程主机创建 testdb

% mysqldump --opt testdb | mysql -h remote_host testdb

另外,还可以通过ssh远程调用服务器上的程序,如:

% ssh remote_host mysqladmin create testdb

% mysqldump --opt testdb | ssh remote_host mysql testdb

通过直接复制系统文件的方式备份数据库。备份时,请确保没有人更改数据库。为此,最好停止服务器。如果无法关闭,请尝试以只读模式锁定相应的数据表。示例如下:

% cp -r db /backup/db #将db数据库备份到/backup/db目录下

% cp table_name.* /backup/db #只备份数据表table_name

% scp -r db remotehot:/usr/local/mysql/data #使用scp将数据库直接复制到远程服务器设备上,或者所有复制的数据表都是可传输类型的数据表。

使用mysqlhotcopy工具,这是一个Perl DBI脚本,可以在不停止服务器的情况下备份数据库。它的主要优点是:

直接复制文件,因此比mysqldump更快。

可自动完成数据锁定,备份时无需停止服务器。

可以刷新日志,以便同步备份和日志文件的检查点。

以下是使用该工具的示例:

% mysqlhotcopy db /bakcup/ #将db数据库备份到backup/db目录下,db目录会自动创建

使用BACKUP TABLE语句进行备份。该语句首次出现在MySQL 3.23.25版本中,仅适用于MyISAM数据表。用法如下:

mysql BACKUP TABLE mytable TO '/backup/db'; #将数据表mytable备份到目录/backup/db

要执行此语句,您必须对这些表具有FILE和SELECT权限,备份目录也必须可从服务器写入。执行该语句时,首先将内存中的数据写入磁盘,然后将各个数据表的.frm(表结构定义文件)和.MYD(数据)文件从数据目录复制到备份目录。它不会复制 .MYI(索引)文件,因为它可以用其他两个文件重建。备份BACKUP TABLE语句时,数据表按顺序锁定。同时备份多个数据表时,数据表可能会发生变化。因此,当备份0完成后,备份文件中的数据和当前数据表中的数据可能会有所不同。为了解决这个差异,我们可以将数据表锁定为只读模式,并在备份完成后解锁。例如:

mysql 锁定表 tb1 读,tb2 读;

mysql 备份表 tb1,tb2 到 'backup/db';

mysql 解锁表

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门