Linux-mysql的备份与恢复

数据库

备份

mysqldump(mysql自带备份功能)

- 锁表
- 备份特别慢,适用于数据量较小
- 不可以做增量备份
- 单线程
复制代码
```
-A, --all-databases 所有的库
-B 指定备份的库
—F 备份前刷新日志
--flush-privileges 刷新授权表
-p 密码
-u 用户
-P 端口
触发器
存储过程和存储函数
复制代码

备份

mysqldump -uroot -S /mydata/mysql/mysql.sock -A -p > mysql.sql
## 恢复一
直接在数据库里面source mysql.sql文件
## 恢复二
mysql -uroot -p < mysql.sql
```

xtrabackup(第三方备份工具)

- 多进程
- 支持增量备份
- 锁行

安装

复制代码
```
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm # 安装yum仓库
yum install -y percona-xtrabackup-24
--target-dir=name # 指定备份生成的目录
--backup 备份
--prepare 准备
--databases=name filtering by list of databases.
--databases-file=name 配置文件
```
复制代码

创建一个用户

复制代码
```
mysql> create user 'backup'@'localhost' identified by 'backup';
Query OK, 0 rows affected (0.00 sec)

mysql> grant reload,lock tables,process,replication client on *.* to 'backup'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

```
复制代码

备份

```
xtrabackup --backup --target-dir=/mydata/backup/base -ubackup -pbackup --socket=/mydata/mysql/mysql.sock
### 看得如下信息,代表成功
xtrabackup: Transaction log of lsn (5480853) to (5480862) was copied.
190902 09:25:09 completed OK!
```

恢复

复制代码
#### 准备文件

```
xtrabackup --prepare --target-dir=/mydata/backup/base
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 5482536
190902 09:28:12 completed OK!
```

#### 恢复文件

```
cd /mydata/backup/base
cp -rf hello /mydata/mysql/
chown mysql.mysql /mydata/mysql/hello/ -R
```

#### 恢复全部文件

```
xtrabackup --copy-back --target-dir=/mydata/backup/base
chown mysql.mysql * -R
```

### 增量备份

```
xtrabackup --backup --target-dir=/mydata/backup/t1 --incremental-basedir=/mydata/backup/base -uroot -p --socket=/mydata/mysql/mysql.sock
--incremental-dir 全备的路径
xtrabackup --backup --target-dir=/mydata/backup/t2 --incremental-basedir=/mydata/backup/t1 -uroot -p --socket=/mydata/mysql/mysql.sock
--incremental-basedir应该是上一次的增量备份目录
xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base
```

### 恢复(只能全部删除以后再恢复)

```
xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base
xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base --incremental-dir=/mydata/backup/t1
xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base --incremental-dir=/mydata/backup/t2
xtrabackup --copy-back --target-dir=/mydata/backup/base
chown mysql.mysql * -R
systemctl restart mysqld
```
#一句话总结:首先先备份。如果想恢复数据,首先先准备数据,再进行备份。
复制代码
posted @   佛祖让我来巡山  阅读(2703)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网

点击右上角即可分享
微信分享提示