You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
YltProject/操作文档/7、Mysql数据库下载与还原.md

156 lines
3.7 KiB

11 months ago
## 云数据库 $RDS$
12 months ago
11 months ago
> $RDS$为$5.7$版本,有自动备份设置,每天都会有一个新的备份生成。这个备份是物理备份。
12 months ago
11 months ago
下载的文件名称类似于:
12 months ago
12 months ago
```
11 months ago
hins25487844_data_20240730052418_qp.xb
hins25487844_data_20240813052415_qp.xb
12 months ago
```
12 months ago
11 months ago
> **[阿里云官方参考文档](https://www.alibabacloud.com/help/zh/rds/apsaradb-rds-for-mysql/restore-the-data-of-an-apsaradb-rds-for-mysql-instance-from-a-physical-backup-file-to-a-self-managed-mysql-database)**
12 months ago
11 months ago
#### 安装$Percona$ $XtraBackup$ 和 $qpress$
12 months ago
11 months ago
在自建库所在服务器中安装`Percona XtraBackup`和`qpress`后,再执行以下解压命令。若不安装,后续执行如下命令将失败。
12 months ago
11 months ago
> **[参考文档](https://www.jianshu.com/p/3af4c7cf70f7)**
12 months ago
11 months ago
```shell
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release enable-only tools release
yum install lz4 zstd -y
yum install percona-xtrabackup-80 -y
yum -y install qpress
12 months ago
11 months ago
# 检查安装的版本
xtrabackup --version
12 months ago
```
12 months ago
12 months ago
11 months ago
#### 上传备份文件到主机
12 months ago
```
11 months ago
cd /usr/local
12 months ago
```
11 months ago
因为备份文件太大,无法使用$rz$ $-be$,所以选择$sftp$上传
12 months ago
```
11 months ago
hins25487844_data_20240813052415_qp.xb
12 months ago
```
12 months ago
11 months ago
#### 前提条件
12 months ago
11 months ago
要执行恢复备份,必须满足以下条件:
12 months ago
11 months ago
- 备份集要完成**准备**。
12 months ago
11 months ago
- 数据目录**$datadir$必须为空**。
12 months ago
11 months ago
- 不能恢复到正在运行的$mysqld$实例的数据目录(除非导入部分备份),在执行恢复之前需要**关闭$MySQL$服务器**。
12 months ago
11 months ago
#### 还原
12 months ago
11 months ago
```shell
rm -rf /var/mysql_bkdata/ && mkdir /var/mysql_bkdata/ -p
12 months ago
11 months ago
# 解压
cat hins25487844_data_20240813052415_qp.xb | xbstream -x -v -C /var/mysql_bkdata/
12 months ago
11 months ago
innobackupex --decompress --remove-original /var/mysql_bkdata/
12 months ago
11 months ago
# 应用日志
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
12 months ago
11 months ago
# 修改数据库文件属性
chown -R mysql:mysql /var/mysql_bkdata
12 months ago
```
12 months ago
11 months ago
#### 编辑数据库配置文件
12 months ago
11 months ago
```shell
vi /etc/my.cnf
12 months ago
```
11 months ago
**内容如下:**
12 months ago
11 months ago
```shell
[mysqld]
user=mysql
basedir=/usr/local/mysql
#datadir=/data/mysql
datadir=/var/mysql_bkdata
server_id=1
port=22066
socket=/tmp/mysql.sock
12 months ago
11 months ago
lower_case_table_names=1
max_connections = 2048
max_connect_errors = 30
table_open_cache = 2048
open_files_limit = 16384
max_allowed_packet = 16M
read_buffer_size = 8M
read_rnd_buffer_size = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 16
query_cache_size = 128M
query_cache_limit = 4M
slow_query_log = 1
long_query_time = 2
innodb_file_per_table = 1
max_allowed_packet = 64M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 2G
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 170M
innodb_lock_wait_timeout = 60
#sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql]
socket=/tmp/mysql.sock
```
12 months ago
11 months ago
#### 启动
12 months ago
11 months ago
```shell
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_bkdata/ &
12 months ago
```
11 months ago
#### 登录数据库
12 months ago
11 months ago
```shell
/usr/local/mysql/bin/mysql -uroot
```
12 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
**上面基本完成数据的恢复。考虑到恢复完成后表mysql.user中不包含在RDS实例中创建的用户需要新建。在新建用户前执行如下命令**
12 months ago
11 months ago
**delete from mysql.db where user<>'root' and char_length(user)>0;**
12 months ago
11 months ago
**delete from mysql.tables_priv where user<>'root' and char_length(user)>0;**
12 months ago
11 months ago
**flush privileges;**