Linux下还原阿里云rds数据到自建数据库
vm虚拟机下/home
分区空间还原/root
linux(centos7) home目录磁盘空间转移到root下
查看分区
df -h |
备份分区
按实际需要情况进行
tar cvf /tmp/home.tar /home |
停止分区
yum install psmisc -y |
执行当前命令后ssh控制台可能出现闪断,重连即可!
fuser -km /home/ |
备注:截图命令缺失
xfs_growfs /dev/mapper/centos-root
卸载分区
umount /home |
删除分区所在的lv(逻辑卷)
(centos-home和centos-root 系统可能不一样)
lvremove /dev/mapper/centos-home |
扩展/root
所在的lv
lvextend -L +100G /dev/mapper/centos-root |
扩展/root
文件系统
xfs_growfs /dev/mapper/centos-root |
进行检查
df -Th |
若需要还原/home
目录分区
还原/home
分区,我没有实际执行命令,以下内容来源自参考博客。
重新创建/home
的lv
创建时计算好剩余的磁盘容量,建议比剩余小1G左右
lvcreate -L 10G -n /dev/mapper/centos-home |
创建文件系统
yum -y install xfsprogs -y |
mkfs.xfs /dev/mapper/centos-home |
挂载系统
mount /dev/mapper/centos-home |
home文件恢复
tar xvf /tmp/home.tar -C /home/ |
完成可进行检查
df -Th |
阿里云RDS恢复自建数据库
RDS MySQL物理备份用XtraBackup恢复到自建数据库_云数据库 RDS(RDS)-阿里云帮助中心
准备工作
备份解压路径
上述命令的$USER:$USER表示从环境变量中获取当前用户及用户组,无需修改
sudo mkdir /var/mysql_bkdata |
创建数据库数据目录
sudo mkdir /var/mysql_newdata |
安装工具
安装备份恢复工具Percona XtraBackup
MySQL 5.7、5.6或5.5实例,下载并安装Percona XtraBackup 2.4
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm |
yum localinstall -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm |
安装解压工具qpress
## 下载可执行文件的tar包 |
下载备份文件
题主已下载rds的物理备份文件到本地
下载压缩文件格式:
tar.gz
tar -izxvf /root/hins20149963_data_20240619085620.tar.gz -C /var/mysql_bkdata/ |
恢复备份文件到自建数据库
恢复数据库前,请先停止自建数据库服务
在关闭自建redis实例后,需要执行
ps -ef | grep mysql
检查下,是否mysql_safe
进程存活,存在则kill -9 pid
,否则上述启动进程无效!
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/ |
修改自建数据库的数据目录(datadir)
vim /etc/my.cnf |
修改datadir参数
datadir=/var/mysql_newdata |
恢复数据
sudo innobackupex –defaults-file=/etc/my.cnf –copy-back /var/mysql_bkdata/
由于题主虚拟机磁盘空间不足够大,命令做调整
--move-back
,使用move
命令后文件会移动,旧目录依然存在。
sudo innobackupex --defaults-file=/etc/my.cnf --move-back /var/mysql_bkdata/ |
启动数据库
(可选)查看当前rds的实例参数
lower_case_table_names
等于1
,则需要进行如下步骤
vim /etc/my.cnf |
lower_case_table_names=1 |
数据目录授权
chown -R mysql:mysql /var/mysql_newdata |
启动mysql进程
mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata & |
重置root密码(可选)
题主这里是懒的去找之前阿里云rds已建用户账户信息,选择直接重置root密码
vim /etc/my.cnf |
添加如下配置
skip-grant-tables |
重启mysql服务
service mysql restart; |
登录mysql(回车进入)
mysql -uroot -p |
由于恢复的mysql数据库用户root
无localhost
记录,于是将host为127.0.0.1
的用户记录修改%
任意ip可登录
update user set host ='%' where user='root' and host = '127.0.0.1'; |
将/etc/my.cnf
配置文件还原
#skip-grant-tables |
重启mysql服务
service mysql restart; |
skip-grant-tables
模式下,无法创建新用户,此步骤可跳过!
创建用户并授权命令
CREATE USER 'root'@'%' IDENTIFIED BY '123456'; |
grant all privileges on *.* to 'root'@'%' identified by '123456'; |
grant all privileges on *.* to 'root'@'%' identified by '123456'; |