阿里云RDS 数据迁移备份本地数据库

RDS MySQL物理备份文件恢复到自建数据库

方案准备

RDS Mysql 可适用版本存储类型系列需要插件
mysql.5.7 5.7 5.5本地SSD高可用版Percona XtraBackup 2.4
mysql8.0本地SSD高可用版Percona XtraBackup 8.0

ps:本次实例以mysql5.7为例

注意事项

RDS实例中的表未通过TDE加密

​ 实例中如果存在加密过的表,会导致恢复过程出错,在下载备份文件前,对已加密的表执行解密操作

​ 可在RDS控制台目标实例数据安全性 > TDE页面查看TDE开启状态

Mysql自建库版本与RDS Mysql版本必须相同

自建库所在服务器中必须根据不同Mysql实例安装对应版本的Percona XtraBackup

安装Mysql

##首先安装wget命令
yum install -y wget

##下载Mysql的yum源配置
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

##安装Mysql的yum源
yum -y install mysql57-community-release-el7-11.noarch.rpm

##使用yum方式安装Mysql5.7
yum -y install mysql-server --nogpgcheck --nogpgcheck

##启动mysql
systemctl start mysqld.service
systemctl enable mysqld.service

##找到mysql的默认密码
cat /var/log/mysqld.log | grep password
2022-11-02T15:01:52.976608Z 1 [Note] A temporary password is generated for root@localhost: !Th7<vMBA2w_
ps:其中默认密码是: !Th7<vMBA2w_

##登录mysql
mysql -uroot -p' !Th7<vMBA2w_'

##修改mysql密码
alter user user() identified by 'Qj123.com';

##刷新配置
grant all privileges on . to 'root'@'%' identified by 'Qj123.com' with grant option; flush privileges; 

Mysql的其他配置

##修改Mysql的默认密码策略 - 可设置简单密码
set global validate_password_policy=0;
set global validate_password_length=1;
flush privileges;

##设置简单密码
alter user 'root'@'localhost' identified by '123456';
grant all privileges on . to 'root'@'%' identified by '123456' with grant option;
flush privileges;

安装Percona XtraBackup2.4

##安装配置工具 percona-release
 yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
 
##如果安装不成功可手动安装
 wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
 rpm -ivh percona-release-latest.noarch.rpm
 
##测试存储库
yum list | grep percona

##启用存储库
percona-release enable-only tools release

##如果Percona XtraBackup打算与 上游 MySQL 服务器,你只需要启用仓库:
.toolspercona-release enable-only tools

##安装 Percona XtraBackup:
yum install percona-xtrabackup-24

##Percona 测试存储库yum¶
Percona从我们的测试存储库提供预发布版本。要订阅 测试存储库,您需要在 /etc/yum.repos.d/percona-release.repo.为此,请将两者设置为 (请注意,此文件中有 3 个部分:发布、测试 和实验 - 在这种情况下,它是需要的第二部分 正在更新)。percona-testing-$basearchpercona-testing-noarchenabled = 1

##为了能够进行压缩备份,安装软件包:qpress
yum install qpress -y

##使用下载的rpm包安装Percona XtraBackup
 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/\
binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

##本地安装rpm包
 yum localinstall percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

##PS:卸载 Percona XtraBackup:   
yum remove percona-xtrabackup

自建库安装qpress解压工具

## 下载可执行文件的tar包
wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar"

## 解压下载的tar包,取出可执行文件
tar xvf qpress-11-linux-x64.tar

## 设置qpress文件的执行权限
sudo chmod 775 qpress

## 拷贝qpress到/usr/bin中
cp qpress /usr/bin

下载备份

在Linux服务器上,执行如下命令下载物理备份

-  wget -c ‘http://…’ -o test_qp.xb

test_qp.xb是另存的文件名

解压和恢复备份

##在本地服务器上创建一个目录 用于存放解压后的文件
mkdir  -p /mysql/data

##解压压缩包 - 根据压缩包后缀选择解压命令

ps:解压压缩包命令

备份文件类型解压命令
tar 压缩包 (.tar.gz 后缀)tar -izxvf test1.tar.gz -C /mysql/data
xbstream 压缩包(.xb.gz 后缀)gzip -d -c test.xb.gz | xbstream -x -v -C /mysql/data
xbstream 文件包(_qp.xb 后缀)解包:cat test_qp.xb | xbstream -x -v -C /mysql/data 解压:innobackupex --decompress --remove-original /mysql/data
xbstream qpress压缩包(_xb.qp后缀)qpress -do test_xb.qp | xbstream -x -v -C /mysql/data
##查看解压生成后的文件
ls -l /mysql/data

ps:会自动生成一个backup-my.cnf文件

##恢复解压好的备份文件   - -mysql5.6/5.7
innobackupex --defaults-file=/mysql/data/backup-my.cnf --apply-log /mysql/data

##恢复解压好的备份文件   - -mysql8.0
## xtrabackup工具备份前的准备操作
xtrabackup --prepare --target-dir=/mysql/data
## 执行备份还原命令
xtrabackup --datadir=/var/lib/mysql --copy-back --target-dir=/mysql/data

ps:参数含义

参数含义
–defaults-file通过传入文件设置MySQL默认选项。备份集解压后会有backup-my.cnf 一般传入该文件
–apply-log应用此目录下的事务日志文件xtrabackup_logfile到备份集解压后的路径中。
–preparextrabackup工具备份前的准备命令,与后续备份恢复有关。
–datadir源数据库数据所在路径。与MySQL服务的位置有关。
–target-dir备份集解压后的路径。

若系统返回如下类似结果,则说明备份文件已成功恢复到自建数据库:

img

常见报错

​ 若系统返回xtrabackup: Unknown error 3613,请将Percona XtraBackup更新到最新版本后再次尝试

​ 若系统返回如下报错,可以用rm -rf /var/lib/mysql/*命令清空文件夹内文件,然后用chown -R mysql:mysql /var/lib/mysql修改权限。

文件夹不为空

启动Mysql

ps:为了避免版本问题,需修改backup-my.cnf文件

##编辑backup-my.cnf
vi /tmp/backup.cnf
#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#innodb_encrypt_algorithm
#rds_encrypt_data
#redo_log_version
#master_key_id
#server_uuid
#innodb_log_checksum_algorithm=strict_crc32
#redo_log_version=1

lower_case_table_names=1
skip-grant-tables

##修改文件属性
chown -R mysql:mysql /mysql/data

##启动mysql进程
mysqld --defaults-file=/mysql/data/backup-my.cnf --user=mysql --datadir=/var/lib/mysql &

启动错误常见报错

**错误一:**
请添加图片描述

解决方案:

windows 下,将原来的mysql data目录下文件 全部拷贝成原来的 ,启动mysql 失败

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

尝试网上其他方法未果;可采用下面的方法;

查看mysql 启动失败原因方法:

1 mysqld -remove

2 mysqld -install

3 mysqld --console

解决如图问题方法:

删除data 目录下 所有 id_logfile 重启mysql 解决问题;

**错误2:**

请添加图片描述

出现原因:系统中已有mysql启动进程

解决方案:

杀掉原有mysql进程 重启mysql进程

关于内存扩容

扩容原因:因原有阿里云数据压缩后存放于本地,待解压后 本地空间不足 需扩容再解压

  1. 查看已分配的磁盘使用情况:准备为它扩容请添加图片描述

  2. 查看全部磁盘(包括已分配与未分配的磁盘使用情况)请添加图片描述

  3. 可以发现dev这块磁盘总量21.5G,现在为sdb扩容

  4. fdisk /dev/sdb请添加图片描述

  5. 对新增的磁盘处理

  6. 输入partprobe 让系统识别新增的分区

  7. 创建物理卷,使用pvcreate /dev/sdb1请添加图片描述

  8. 使用vgextend命令进行动态扩展请添加图片描述

  9. 将空闲的磁盘拓展到分区

  10. 重新识别分区 - xfs_growfs /dev/mapper/centos-root

  11. 确认服务器空间 - df -h请添加图片描述

关于开放防火墙

systemctl unmask firewalld 执行命令,即可实现取消服务的锁定

systemctl mask firewalld # 下次需要锁定该服务时执行

systemctl start firewalld.service #启动防火墙

systemctl stop firewalld.service #停止防火墙

systemctl reload firewalld.service #重载配置

systemctl restart firewalld.service #重启服务

systemctl status firewalld.service #显示服务的状态

systemctl enable firewalld.service #在开机时启用服务

systemctl disable firewalld.service #在开机时禁用服务

systemctl is-enabled firewalld.service #查看服务是否开机启动

systemctl list-unit-files #查看当前开机启动状态的服务列表

systemctl list-unit-files|grep enabled 查看以允许开机自启的服务

systemctl --failed #查看启动失败的服务列表

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
这个问题涉及到两个方面的内容,一个是如何读取阿里云物联网平台数据,另一个是如何读写阿里云RDS数据库。下面我分别进行解答: 1. 如何读取阿里云物联网平台数据阿里云物联网平台提供了多种接入方式,包括 MQTT、HTTP、CoAP 等。其中 MQTT 是最常用的一种接入方式,也是阿里云物联网平台官方推荐的接入方式。在 MATLAB 中,可以使用 MATLAB 自带的 mqtt 函数库来实现 MQTT 协议的订阅和发布。 首先需要在阿里云物联网平台上创建一个设备,获取到设备的三元组信息(ProductKey、DeviceName 和 DeviceSecret)。然后使用 mqtt 函数库连接到阿里云物联网平台的 MQTT 服务器,并订阅设备的 Topic,就可以收到设备上报的数据了。具体的代码如下: ```matlab % 阿里云物联网平台 MQTT 服务器地址 broker = 'tcp://xxxxx.iot-as-mqtt.cn-shanghai.aliyuncs.com'; % 设备三元组信息 productKey = 'xxxxxxxxxxxxx'; deviceName = 'xxxxxxxxxxxxx'; deviceSecret = 'xxxxxxxxxxxxx'; % MQTT 连接选项 options = mqttv5_options('UserName', productKey + '/' + deviceName, ... 'Password', mqtt_password(productKey, deviceName, deviceSecret), ... 'CleanSession', true, ... 'ConnectTimeout', 30); % MQTT 订阅选项 subscription = mqttv5_subscription(topic, 1); % 连接 MQTT 服务器并订阅 Topic client = mqttv5(broker, options); subscribe(client, subscription); % 循环获取设备上报的数据 while true message = receive(client); data = message.Payload; % 处理数据 ... end % 断开 MQTT 连接 unsubscribe(client, subscription); disconnect(client); ``` 2. 如何读写阿里云RDS数据库阿里云RDS是一种云数据库服务,支持多种数据库类型,包括 MySQL、SQL Server、PostgreSQL、PPAS 等。在 MATLAB 中,可以使用 MATLAB 自带的 Database Toolbox 函数库来连接阿里云RDS数据库,并进行数据的读写操作。 首先需要在阿里云RDS上创建一个数据库实例,并开通相应的数据库服务。然后使用 Database Toolbox 函数库连接到阿里云RDS数据库,并执行 SQL 查询语句或更新操作即可。具体的代码如下: ```matlab % 阿里云RDS数据库连接选项 driver = 'com.mysql.jdbc.Driver'; url = 'jdbc:mysql://xxxxxxxxxxxx.rds.aliyuncs.com:3306/xxxxxxxxxxxx'; username = 'xxxxxxxxxxxx'; password = 'xxxxxxxxxxxx'; % 连接阿里云RDS数据库 conn = database('xxxxxxxxxxxx', username, password, driver, url); % 执行 SQL 查询语句 query = 'SELECT * FROM xxxxxxxxxxxx'; curs = exec(conn, query); data = fetch(curs); % 执行 SQL 更新操作 query = 'UPDATE xxxxxxxxxxxx SET xxxxxxxxxxxx = xxxxxxxxxxxx WHERE xxxxxxxxxxxx = xxxxxxxxxxxx'; curs = exec(conn, query); % 关闭数据库连接 close(curs); close(conn); ``` 以上是在MATLAB中读取阿里云物联网平台数据并读写阿里云RDS数据库的基本操作,具体实现还需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路跑码码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值