要把阿里云rds mysql数据库搬回ECS服务器,搜索官方帮助,可选两种方法
一是逻辑备份数据库,下载到本地后用mysql命令导入或使用source命令导入。
二是物理备份数据库,下载后解压恢复到本地服务器(但此方法只能恢复到linux服务器,不支持win系统)。
官方的教程不详细,故记录下此次操作。

选择物理备份的数据库进行恢复,过程如下:
1、从阿里云下载rds到外网是按流量收费的,故使用内网地址下载到ECS服务器较好。因客户的机子是win系统,所以先在rds上点击下载,复制内网地址,然后在win机子上打开浏览器进行下载,下载完成后,得到了hins24216484_data_20230216044728_qp.xb的备份文件。因此ECS机子性能一般,所以再次从ECS上下载文件到本地。
2、在本地安装VMWARE,再安装centos8,完成后安装了BT(在此选择相同版本的mysql5.6进行安装,否则要使用mysql源码编译安装)。
3、对于MySQL 5.7、5.6或5.5实例:下载及安装Percona XtraBackup 2.4。
yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum -y  install percona-xtrabackup-24  
安装qpress解压缩软件
yum -y  install qpress
安装完成后测试下
innobackupex -version
能正常返还即为成功
4、创建存放mysql的目录
mkdir -p /home/mysql/data
5、上传_data_20230216044728_qp.xb至/home目录并更名为h_qp.xb
6、解包
cat h_qp.xb | xbstream -x -v -C /home/mysql/data
7、解压
innobackupex --decompress --remove-original /home/mysql/data
8、执行备份还原命令
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
9、编辑backup-my.cnf
vi /home/mysql/data/backup-my.cnf
在[mysqld]段内增加:lower_case_table_names=1 并屏蔽其他行。再增加:skip-grant-tables
10、修改目录所属
chown -R mysql:mysql /home/mysql/data
11、停止原已启动的bt的mysql
service mysqld stop
12、启动mysql
/www/server/mysql/bin/mysqld --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data/ & 回车
13、登录mysql
/www/server/mysql/bin/mysql -uroot -p
无密码回车后登录,此时可以查看下数据库。
show databases;
14、修改密码
use mysql;
update user set password=PASSWORD("123654") where user='root';
FLUSH PRIVILEGES;
quit;
退出后杀掉启动的mysql(killall -9 mysqld),删掉/home/mysql/data/backup-my.cnf的skip-grant-tables,然后重新启动下。
/www/server/mysql/bin/mysql -uroot -p
这时会发现需要输入密码123654后登录。
15、导出数据库
a、停止数据库进程后拷贝出整个/home/mysql/data目录,放到win主机上的相应目录里(需先在win主机上安装好mysql5.6)
b、也可以用mysqldump方式导出数据库,再到win主机上导入数据库(此方式适用于主机上原本就运行了其他innodb类型的mysql程序,无法直接使用,只能新增进去)。
导出
/www/server/mysql/bin/mysqldump -u root -p -c --default-character-set=utf8 h > h.sql
在win主机上导入
mysql -uroot -p --default-character-set=utf8 h < d:\h.sql

此前,我是先尝试过使用逻辑备份数据库下载到本地来恢复,通过命令
mysql -f -uroot -p h.sql > test
或登录mysql后使用 source h.sql 来恢复,但在恢复一会儿后就显示连接不上数据库了,尝试调大连接超时参数等无效,遂放弃。然后再尝试物理备份数据库方式到本地恢复。本次要搬的数据库在36G,备份下来的sql文件也有12G多。想要打开修改都难。

参考官方教程
https://help.aliyun.com/document_detail/41817.html#section-ooe-3fz-r97

最后:mysql到本地使用最好还是改回MYISAM数据引擎方式,Innodb方式管理不是很方便,所以,在本地恢复数据库成功后,使用phpmyadmin 来运行转换语句,如:ALTER TABLE   pre_common_admincp_cmenu  ENGINE = MYISAM; 数据表的列表可以使用ll列出来取出,等全部转换完成,就可以把单独把数据库目录上传到数据库目录 data下使用了。


Tags: ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]