[转]RDS备份文件恢复到自建数据库

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

 

【目录】

1. 概述与快速恢复手册

1.1 概述

1.2 软件说明

 

2. step by step说明

2.1 下载备份文件

2.2 解压

2.3 恢复数据文件

2.4 配置文件修改

2.5 修改文件属主

2.6 启动数据库

 

3. 其他问题

 

1. 概述与软件说明

1.1   概述

RDS MySQL 使用开源软件 percona-Xtrabackup 对 MySQL 数据库进行备份。需要下载该软件,然后使用该软件进行恢复。

1.2   软件说明

解压软件

RDS的备份文件是一个压缩包,需要先解压出来,才能恢复,这里下载解压工具 rds_backup_extract (sh文件),目前只支持64位linux系统。

软件使用方式 sh rds_backup_extract -f backup.tar.gz/back.xb.gz  -C directory

-f 参数后面跟要解压的备份集文件

-C 参数后面跟要解压到的目录,-C 参数是可选的,如果不指定就解压到当前目录,如 sh rds_backup_extract -f backup.tar.gz

注:需要通过 bash 来执行 rds_backup_extract 脚本文件。

恢复软件

恢复软件请下载官方的 Percona-XtraBackup【下载地址:https://www.percona.com/downloads/XtraBackup/】,官方提供各种平台的安装包,请根据自己的需要下载。RDS 备份使用的版本是 2.2.9,建议您下载 2.2.9 或更新的版本使用。想要了解工具原理的可以参考官方文档

 

2. step by step说明

2.1 管理控制台中下载备份文件

在RDS控制台中的备份与恢复->备份列表,选择一个备份文件进行下载,如下图

 

下载文件成功后,将备份文件上传至linux系统,上传成功后在Linux系统上检测,如下图:

 

2.2 解压备份文件

解压备份文件前,要先下载好解压工具 rds_backup_extract

1.  解压备份文件

执行命令:sh rds_backup_extract -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data  如下图:

查询解压后生成的文件,其中蓝色字体的目录文件为备份生成时RDS存在的数据库

2.3 恢复数据文件

解压备份文件前,要先安装好 [Percona-XtraBackup]

 

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.4/binary/tarball/percona-xtrabackup-2.3.4-Linux-x86_64.tar.gz
ls
tar xvfz percona-xtrabackup-2.3.4-Linux-x86_64.tar.gz
ls
cd percona-xtrabackup-2.3.4-Linux-x86_64

( http://www.percona.com/downloads/XtraBackup/) 工具。

innobackupex –defaults-file=/home/mysql/data/backup-my.cnf –apply-log /home/mysql/data

这一步最后如果看到类似如下输出,显示 completed OK,表示执行成功:

2.4 配置文件修改

由于存在的版本问题,请将解压文件backup-my.cnf中的innodb_fast_checksum,innodb_page_size ,innodb_log_block_size 注释掉,如下图:

2.5 修改文件属主

执行chown -R mysql:mysql /home/mysql/data ,并检查文件所属为mysql用户

2.6 启动mysqld进程并且登录验证

启动mysqld进程,并验证启动成功

mysqld_safe –defaults-file=/home/mysql/data/backup-my.cnf –user=mysql –datadir=/home/mysql/data &

客户端登录mysql验证

注意:

1. 恢复完成后,mysql.user中是不包含rds中的用户的;需要新建;

2. 新建用户前请执行如下sql:

delete from mysql.db where user<>’root’ and char_length(user)>0;

delete from mysql.tables_priv where user<>’root’ and char_length(user)>0;
flush privileges;

即可.

 

3. 其他问题

因为软件限制,目前恢复只支持Linux下进行。Linux下恢复的数据文件,无论Windows、Linux下,MySQL都可以正常使用.

CentOS 6.x 下如何用 Yum全新安装MySQL 5.5

1.先安装Webtatic的RPM包

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
2.安装mysql客户端和服务端
yum install mysql55w mysql55w-server

3.设为服务自启动

chkconfig –levels 235 mysqld on
service mysqld start

如果遇到错误:Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist, 一般可能通过以下方式解决

chown -R mysql /var/lib/mysql
chgrp -R mysql /var/lib/mysql

开发了厦门公共自行车站点查询App

在厦门,现在公共自行车很方便。但是有个问题,热闹地段,比如思北,经常租不到自行车,要么自行车骑到站点后,发现车位满了。所以自己写了一个App,用来实时查询自行车站点的位置以及可供租借的车辆数,可供还车的车位数,甚至哪几个车位有机械故障。

前后花了近五个小时,API数据是自行车官网站点下抓取的。iOS只用了UITableView, 和一个DetailController.预览更改

IMG_0888

IMG_0891 IMG_0893 IMG_0890

解决nginx 错误问题upstream timed out (110: Connection timed out) while reading upstream, client:…

最近公司的服务器在访问量不大的情况下经常出现如下报错:

upstream timed out (110: Connection timed out) while reading upstream, client:

用的是php-fpm 和nginx的服务器。Google了一下,修改了php-fpm的www.conf, 其中一个参数是:

request_terminate_timeout=30s

另外,php.ini里有个参数也要调整一下:

max_execution_time=30

改完重启服务,问题解决。

service php-fpm restart

nginx -s reload

 

Redis默认安装配置文件可能存在未授权访问风险

本人前几天安装了一台测试机器做Redis服务, redis.conf是默认的。发现系统的ssh key目录有一个是被注入的公钥,导致系统被入侵。其实官方已经有明显提示风险了。怪自己没仔细看文档,大体是这样的。

一、漏洞描述和危害 

Redis因配置不当可以未授权访问,被攻击者恶意利用。
攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据。

攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

二、已确认被成功利用的软件及系统  

对公网开放,且未启用认证的redis服务器。

三、建议修复方案

1、指定redis服务使用的网卡 (需要重启redis才能生效)
在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问Redis。

2、设置访问密码 (需要重启redis才能生效)
在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。

3、修改Redis服务运行账号
请以较低权限账号运行Redis服务,且禁用该账号的登录权限。可以限制攻击者往磁盘写入文件,但是Redis数据还是能被黑客访问到,或者被黑客恶意删除。

4、设置防火墙策略

如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。