RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
2022/1/7 19:08:53
本文主要是介绍RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
RH358配置MariaDB SQL数据库–创建和恢复MariaDB备份
本章节介绍如何在MariaDB中创建和恢复备份。在数据库操作中,是非常重要的一个内容,必须学会。
文章目录
- RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份
- 1. 创建MariaDB数据库备份
- 逻辑备份特点
- 物理备份特点
- 2. 执行逻辑备份
- 逻辑备份的有用选项
- 3. 执行物理备份
- 4. 恢复备份
- 恢复逻辑备份
- 恢复物理备份
- 5. 课本练习
- 明确库与表的内容
- 备份
- 删除表里内容
- 恢复
- 查询并验证
- 完成实验
- 总结
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恢复备份。
- 若喜欢小女子的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。
这篇关于RH358配置MariaDB SQL数据库--创建和恢复MariaDB备份的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-30mariadb修改Yum安装默认data路径
- 2022-07-312.二进制安装mariadb10.2.44
- 2022-07-12ubuntu20 安装mariadb,以及配置
- 2022-02-07MariaDB Spider 数据库分库分表实践
- 2022-01-15MariaDB 数据库下载
- 2021-12-21MariaDB 日期类型格式的长度问题
- 2021-10-22Ubuntu下联网安装MariaDB
- 2021-10-03Mariadb 主从配置教程
- 2021-08-11RH358学习笔记--4(配置MariaDB SQL学习)