RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份

RH358配置MariaDB SQL数据库–创建和恢复MariaDB备份

本章节介绍如何在MariaDB中创建和恢复备份。在数据库操作中,是非常重要的一个内容,必须学会。

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

1. 创建MariaDB数据库备份

有两种方式备份MariaDB:

  • 逻辑备份,将信息导出为文本文件,其中包含重建数据库所需的SQL命令。

  • 物理备份,它复制包含数据库内容的原始数据库目录和文件。

每种备份都有其优缺点。

逻辑备份特点

  • 通过查询数据库来检索数据库结构。

  • 逻辑备份具有高度可移植性,在某些情况下可以恢复到另一个数据库提供者(如PostgreSQL)。

  • 备份比较慢,因为服务器必须访问数据库信息并将其转换为逻辑格式。

  • 在服务器在线时执行。

  • 备份不包括日志或配置文件。

物理备份特点

  • 由数据库目录和文件夹的原始副本组成。

  • 输出更紧凑。

  • 备份可以包括日志和配置文件。

  • 只能移植到其他具有类似硬件和软件的机器上。

  • 比逻辑备份更快。

  • 应在服务器脱机时执行,或在数据库中的所有表都被锁定时执行,以防止在备份期间发生更改。

2. 执行逻辑备份

使用mysqldump命令执行逻辑备份:

[root@host ~]# mysqldump -u root -p inventory > /backup/inventory.dump

​ 选择要备份的数据库 输出的备份文件

**注意:**要在逻辑上备份所有数据库,请使用–all-databases选项:

[root@host ~]# mysqldump -u root -p --all-databases > /backup/mariadb.dump

这种类型的备份包括mysql数据库,其中包括所有user信息。

逻辑备份的输出是一系列SQL语句。作为一个例子,下面是一个mysql数据库的转储代码片段:

LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y'
,'N','N','N','N','N','N','N','N','','','','',0,0,0,0,'',''),('localhost.localdomai
n','','','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N'
,'N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'',''),('localh
ost','mobius','*84BB5DF4823DA319BBF86C99624479A198E6EEE9','N','N','N','N','N','N
','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N
','N','N','N','','','','',0,0,0,0,'','');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;

注意,mobius的加密密码很容易看到,所以要注意这种备份的存储。在逻辑备份期间,当从各个表中读取它们时,将对它们进行锁定和解锁。

**重要:**运行mysqldump时连接的MariaDB用户必须有足够的权限查看数据库服务器上的数据库。当运行mysqldump时,连接的MariaDB用户至少需要SELECT权限用于转储表,SHOW VIEW权限用于转储视图,TRIGGER权限用于转储触发器。

逻辑备份的有用选项

选项 描述
–add-drop-table 在每个CREATE TABLE语句之前添加一个DROP TABLE语句。
–no-data 只转储数据库结构,不转储内容。
–lock-all-tables 在复制完成之前,不能在数据库的任何位置插入新记录。这个选项对于确保备份完整性非常重要。
–add-drop-database 在每个CREATE DATABASE语句之前添加一个DROP DATABASE语句。

3. 执行物理备份

mariabackup工具是由AppStream存储库中的mariadb-backup包提供的。mariabackup工具对MariaDB服务器执行完全物理在线备份。

确保安装了mariadb-backup包(安装mariadb-server包时默认安装):

[root@host ~]# yum install mariadb-backup

创建存放备份文件的目标目录。如果是全量备份,则目标目录必须为空。

[root@host ~]# mkdir -p /var/mariadb/backup/

执行备份:

[root@host ~]# mariabackup --backup --target-dir /var/mariadb/backup/ --user root --password redhat
[00] 2020-06-08 21:13:15 >> log scanned up to (1721365)
[00] 2020-06-08 21:13:15 Executing UNLOCK TABLES
[00] 2020-06-08 21:13:15 All tables unlocked
[00] 2020-06-08 21:13:15 Copying ib_buffer_pool to /var/mariadb/backup/
ib_buffer_pool
[00] 2020-06-08 21:13:15 ...done
[00] 2020-06-08 21:13:15 Backup created in directory '/var/mariadb/backup/'
[00] 2020-06-08 21:13:15 Writing backup-my.cnf
[00] 2020-06-08 21:13:15 ...done
[00] 2020-06-08 21:13:15 Writing xtrabackup_info
[00] 2020-06-08 21:13:15 ...done
[00] 2020-06-08 21:13:15 Redo log (from LSN 1721356 to 1721365) was copied.
[00] 2020-06-08 21:13:15 completed OK!

# 确认备份目录内容:
[root@host ~]# ls -F /var/mariadb/backup/
aria_log.00000001 ib_buffer_pool inventory/ xtrabackup_checkpoints
aria_log_control ibdata1 mysql/ xtrabackup_info
backup-my.cnf ib_logfile0 performance_schema/

**注意:**在命令行上会公开用户名和密码,另一种替代方法是在/etc/my.cnf.d目录中创建一个凭据文件,以存储执行备份的用户的身份验证信息。

[root@host ~]# cat /etc/my.cnf.d/mariabackup.cnf
[xtrabackup]
user=root
password=redhat

使用MariaDB根用户执行备份的替代方法是在MariaDB中创建一个具有RELOAD、LOCK TABLES和REPLICATION CLIENT特权的用户。

4. 恢复备份

在还原备份时,它会用备份的内容覆盖数据库服务器的内容。如果数据库中的数据比备份中的数据更新,则会丢失数据。

恢复逻辑备份

使用mysql命令从备份文件执行逻辑恢复:

[root@host ~]# mysql -u root -p inventory < /backup/mariadb.dump

​ 选择要恢复的数据库 备份文件

恢复物理备份

使用mariabackup工具与以下选项之一执行从备份的物理恢复:

–copy-back 保留原有备份文件。

–move-back将备份文件移动到数据目录下,然后删除原有的备份文件。

# 确保mariadb服务已停止:
[root@host ~]# systemctl stop mariadb

# 确定数据目录的位置,并确保它为空:
[root@host ~]# grep '^datadir' /etc/my.cnf.d/mariadb-server.cnf
datadir=/var/lib/mysql
[root@host ~]# rm -rf /var/lib/mysql/*

# 使用mariabackup恢复备份文件:
[root@host ~]# mariabackup --copy-back --target-dir=/var/mariadb/backup/
.....
[00] 2020-06-08 22:26:08 completed OK!

# 确保数据文件的用户和组所有权设置为mysql:
[root@host ~]# chown -R mysql:mysql /var/lib/mysql/

# 启动mariadb服务:
[root@host ~]# systemctl start mariadb

5. 课本练习

[student@workstation ~]$ lab database-backups start

明确库与表的内容

[student@servera ~]$ mysql -u root -p
Enter password: redhat
MariaDB [(none)]> USE inventory;
MariaDB [inventory]> SELECT * FROM product;
+----+-------------------+---------+-------+-------------+-----------------+
| id | name | price | stock | id_category | id_manufacturer |
+----+-------------------+---------+-------+-------------+-----------------+
| 1 | ThinkServer TS140 | 539.88 | 20 | 2 | 4 |
| 2 | ThinkServer RD630 | 2379.14 | 20 | 2 | 4 |
| 3 | RT-AC68U | 219.99 | 10 | 1 | 3 |
| 4 | X110 64GB | 73.84 | 100 | 3 | 1 |
+----+-------------------+---------+-------+-------------+-----------------+
4 rows in set (0.000 sec)
MariaDB [inventory]> exit
Bye

备份

[student@servera ~]$ mysqldump -u root -p inventory > inventory-backup.sql
Enter password: redhat
[student@servera ~]$

删除表里内容

[student@servera ~]$ mysql -u root -p
Enter password: redhat
MariaDB [(none)]> USE inventory;
MariaDB [(inventory)]> DELETE FROM product WHERE id=1;
Query OK, 1 row affected (0.005 sec)
MariaDB [inventory]> SELECT * FROM product;
+----+-------------------+---------+-------+-------------+-----------------+
| id | name | price | stock | id_category | id_manufacturer |
+----+-------------------+---------+-------+-------------+-----------------+
| 2 | ThinkServer RD630 | 2379.14 | 20 | 2 | 4 |
| 3 | RT-AC68U | 219.99 | 10 | 1 | 3 |
| 4 | X110 64GB | 73.84 | 100 | 3 | 1 |
+----+-------------------+---------+-------+-------------+-----------------+
3 rows in set (0.000 sec)
MariaDB [inventory]> exit
Bye

恢复

[student@servera ~]$ mysql -u root -p inventory < inventory-backup.sql
Enter password: redhat

查询并验证

[student@servera ~]$ mysql -u root -p
Enter password: redhat
MariaDB [(none)]> USE inventory;
Query OK, 1 row affected (0.005 sec)
MariaDB [inventory]> SELECT * FROM product;
+----+-------------------+---------+-------+-------------+-----------------+
| id | name | price | stock | id_category | id_manufacturer |
+----+-------------------+---------+-------+-------------+-----------------+
| 1 | ThinkServer TS140 | 539.88 | 20 | 2 | 4 |
| 2 | ThinkServer RD630 | 2379.14 | 20 | 2 | 4 |
| 3 | RT-AC68U | 219.99 | 10 | 1 | 3 |
| 4 | X110 64GB | 73.84 | 100 | 3 | 1 |
+----+-------------------+---------+-------+-------------+-----------------+
4 rows in set (0.000 sec)
MariaDB [inventory]> exit
Bye

完成实验

[student@workstation ~]$ lab database-backups finish

总结

  • 介绍逻辑备份和物理备份。
  • 介绍如何在MariaDB中创建数据库备份,包括逻辑备份和物理备份。
  • 介绍如何在MariaDB恢复备份。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

目录
相关文章
|
10天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
36 11
|
24天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
23天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
153 12
|
1月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
1月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
1月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
SQL 数据库
sqlSQL2008如何创建定时作业(代理服务)(转)
SQL2008如何创建定时作业?此方法也适应于Sql Server2005数据库,有兴趣的可以来看下! 1.打开【SQL Server Management Studio】,在【对象资源管理器】列表中选择【SQL Server 代理】; --2.
937 0
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")