前言:
数据库的主要作用就是对数据进行保存和维护,所以备份数据是数据库管理中最常用的操作。为了防止数据库意外崩溃或硬件损伤而导致的数据丢失,
数据库系统提供了备份和恢复策略。
保证数据安全的最重要的一个措施就是定期的对数据库进行备份。这样即使发生了意外,也会把损失降到最低。
# 数据库备份分为物理备份和逻辑备份 #物理备份 物理备份是为了备份属于数据库的所有物理文件而复制的(如数据文件,控制文件,日志文件,可执行文件等). 操作系统将数据库文件保存到磁带或其他介质上.这对于在需要时将系统重新安装到较早的点是有用的. 物理文件(例如文本文件)作为单个文档存储在硬盘驱动器上.虽然数据库由许多复杂元素组成,但这些元素通常会聚合到服务器硬盘上的简单文件中.
这些文件可以像系统上的任何其他文件一样轻松备份. #逻辑备份 在逻辑备份中,您不会获取任何物理内容的副本,您只需将数据从数据文件中提取到转储文件中.(例如:使用导出) 在逻辑备份技术中,IMPORT / EXPORT实用程序用于创建数据库的备份.逻辑备份备份数据库的内容.可以使用逻辑备份将数据库还原到上次备份.
但是,与物理支持不同,它不应该用于创建操作系统备份副本,因为使用此方法进行恢复可以纠正损坏的数据文件.因此,在这些情况下,应首选物理备份. 逻辑数据库备份对于特定组件的粒度恢复至关重要.物理备份对于完整的灾难恢复方案非常有用.逻辑和物理数据库备份之间的选择应作为恢复点
目标的一部分.
mariadb 版本:
[root@localhost mysql]# mariadb -V mariadb Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) using readline 5.1
物理备份
查看数据库文件的路径
MariaDB [(none)]> show global variables like '%datadir%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.001 sec)
# 在这里每一个数据库都会创建以数据库名为文件夹的目录 # 每一个表都会在该目录下根据不同的数据库引擎类型创建不同的存储文件
将该目录下的文件备份,解压到相应文件夹下面
[root@localhost mysql]# tar -cvf /home/webroot/iasm.tar /var/lib/mysql/iasm [root@localhost webroot]# tar -xvf iasm.tar
逻辑备份
#本节主要介绍如何使用 mysqldump 命令备份数据库。mysqldump 命令执行时,可以将数据库中的数据备份成一个文本文件。数据表的结构和数据将存储在生成的文本文件中。 #使用 mysqldump 命令备份一个数据库的语法格式如下: mysqldump -u username -p dbname [tbname ...]> filename.sql #对上述语法参数说明如下: username:表示用户名称; dbname:表示需要备份的数据库名称; tbname:表示数据库中需要备份的数据表,可以指定多个数据表。省略该参数时,会备份整个数据库; 右箭头“>”:用来告诉 mysqldump 将备份数据表的定义和数据写入备份文件; filename.sql:表示备份文件的名称,文件名前面可以加绝对路径。通常将数据库备份成一个后缀名为.sql的文件。 # 注意:mysqldump 命令备份的文件并非一定要求后缀名为.sql,备份成其他格式的文件也是可以的。例如,后缀名为.txt的文件。通常情况下,建议备份成后缀名为.sql 的文件。
因为,后缀名为.sql的文件给人第一感觉就是与数据库有关的文件。 # 简单的导入导出 导出:mysqldump -uroot -p123456 zabbix>/opt/zabbix.sql; 导入:mysql -uroot -p123456 zabbix </opt/zabbix.sql; # 备份多个数据库 如果要使用 mysqldump 命令备份多个数据库,需要使用 --databases 参数。备份多个数据库的语法格式如下: mysqldump -u username -P --databases dbname1 dbname2 ... > filename.sql 加上“--databases”参数后,必须指定至少一个数据库名称,多个数据库名称之间用空格隔开。 #备份所有数据库 mysqldump 命令备份所有数据库的语法格式如下: mysqldump -u username -P --all-databases>filename.sql 使用“--all-databases”参数时,不需要指定数据库名称。