赞
踩
1、宕下来的文件,一定是qp.xb的文件,如果不是qp.xb文件,该恢复文档不适合
2、准备linux系统,centos最好
3、centos 基础环境准备完之后安装必须要的恢复软件【基本按照官方文档即可】
官网:RDS MySQL的物理备份如何恢复到自建数据库_云数据库 RDS-阿里云帮助中心
安装Qpress
- #下载qoress 包,解压给予权限
- wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar"
- tar xvf qpress-11-linux-x64.tar
- chmod 775 qpress
- cp qpress /usr/bin
获取xtrabackup
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
网盘地址:
链接:https://pan.baidu.com/s/1t57i7YtaTQg3LRVdPd0W6A
提取码:5ju4
安装xtrabackup、mysql【mysql安装之后无需启动】
- #安装xtrabackup
- yum install -y percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
- #安装mysql5.7系列
- wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
- yum -y install mysql57-community-release-el7-10.noarch.rpm
- yum -y install mysql-community-server
- # rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 如果报错,需要重新导入秘钥后再安装mysql-community-server
Mysql5.7网盘地址:
链接:https://pan.baidu.com/s/1j5W5qklQjxdLe1dXNXHJZQ
提取码:xa2a
数据恢复:
- #将8p47w1251_qp.xb文件放置/opt目录下
- cd /opt
- #创建/home/mysql/data/文件夹
- mkdir -p /home/mysql/data
- #使用xbstream处理qp.xb文件
- cat 8p47w1251_qp.xb | xbstream -x -v -C /home/mysql/data
- #进入/home/mysql/data进行解压【跟着官网教程走】 显示 completed OK! 即正常
- cd /home/mysql/data/
- innobackupex --decompress --remove-original /home/mysql/data
- innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
- chown -R mysql:mysql /home/mysql/data
修改mysql配置文件
- vim /home/mysql/data/backup-my.cnf
- #添加如下参数
- lower_case_table_names=1
- #注释如下不支持的参数:
- innodb_checksum_algorithm=crc32
- innodb_log_checksum_algorithm=strict_crc32
- innodb_data_file_path=ibdata1:200M:autoextend
- innodb_log_files_in_group=2
- innodb_log_file_size=1572864000
- innodb_fast_checksum=false
- innodb_page_size=16384
- innodb_log_block_size=512
- innodb_undo_directory=./
- innodb_undo_tablespaces=0
- server_id=1291154917
- redo_log_version=1
- server_uuid=dbd99726-2585-11eb-9ae1-78aa82d27dc0
- master_key_id=0
- innodb_encrypt_algorithm=AES_256_CBC
启动mysql【知道数据库账号密码】
- #知道数据库账号、密码时
- mysqld --user=mysql --datadir=/home/mysql/data &
-
- #登陆
- mysql -u xxx -p
-
启动mysql【不知道数据库账号密码】
- #不知道数据库账号、密码时
- mysqld --user=mysql --datadir=/home/mysql/data --skip-grant-tables &
- #登陆,直接敲msyql 回车即可进入
- msyql
启动参数中加入 --skip-grant-tables启动数据库即可,使用root用户,可不需要密码直接登陆数据,但此时修改密码会由于触发器没有删除造成无法修改,“Unknown trigger has an error in its body: 'Unknown system variable 'maintain_user”;
- mysql> select trigger_schema,trigger_name from information_schema.triggers;
- +----------------+----------------------------+
- | trigger_schema | trigger_name |
- +----------------+----------------------------+
- | sys | sys_config_insert_set_user |
- | sys | sys_config_update_set_user |
- +----------------+----------------------------+
- 2 rows in set (0.03 sec)
- mysql> drop trigger sys.sys_config_insert_set_user;
- Query OK, 0 rows affected (0.06 sec)
-
- mysql> drop trigger sys.sys_config_update_set_user;
- Query OK, 0 rows affected (0.02 sec)
所以在启动前处理触发器
- #查找触发器文件,并删除/移动
- find /home/mysql/data/ -iname *.trg
- /home/mysql/data/mysql/proxies_priv.TRG
- /home/mysql/data/mysql/user.TRG
-
- mv /home/mysql/data/mysql/user.TRG /home/mysql/data/mysql/user.TRG.back
- mv /home/mysql/data/mysql/proxies_priv.TRG /home/mysql/data/mysql/proxies_priv.TRG.back
退出mysql,重启mysql后【启动参数加--skip-grant-tables】,进入
- [root@localhost ~]# mysql
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 4
- Server version: 5.7.30 MySQL Community Server (GPL)
-
- Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
-
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- mysql> use mysql;
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
-
- Database changed
- mysql> update mysql.user set authentication_string = password('新的密码') where user='用户名' and host='%';
- Query OK, 1 row affected, 1 warning (0.02 sec)
- Rows matched: 1 Changed: 1 Warnings: 1
-
- mysql> flush privileges;
- Query OK, 0 rows affected (0.00 sec)
退出,重启mysql【启动参数去掉--skip-grant-tables】,使用用户密码登录
mysql -u xxx -p
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。