恢复云数据库MySQL的备份文件到自建数据库

前提条件:

本地MySQL数据库安装在64位的Linux系统中,且与云数据库MySQL版的版本相同。

操作系统中已安装数据恢复工具Percona XtraBackup 2.2.9或以上版本

请从Percona XtraBackup官网下载:https://www.percona.com/downloads/XtraBackup/LATEST/

percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm 是rpm包安装快速

# yum localinstall percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm

操作系统中已安装数据备份文件解压工具rds_backup_extract.sh

下载地址:http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh?spm=a2c4g.11186623.2.6.Ng5QVG&file=rds_backup_extract.sh

操作步骤:

在阿里云RDS管理控制台,在数据备份列表中,找到要下载的数据备份,并单击其对应的下载。

具体操作步骤如下:

执行如下命令,下载数据备份文件

wget -c '<数据备份文件外网下载地址>' -O <自定义文件名>.tar.gz

-c:启用断点续传模式。

-O:将下载的结果保存为指定的文件(建议使用URL中包含的文件名)。

将下载的数据备份恢复到本地MySQL数据库中,具体操作步骤如下:

执行如下命令,解压已下载的数据备份文件。

说明:本文以自定义路径/home/mysql/data为例,您可以根据实际情况将其替换成实际路径。

1.bash rds_backup_extract.sh -f <数据备份文件名>.tar.gz -C /home/mysql/data

-f:指定要解压的备份集文件。

C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录

# bash rds_backup_extract.sh -f hins2642811_data_20180227013214.tar.gz -C data

2.执行如下命令,查询解压后生成的文件。

# ls -l data/

3.执行如下命令,恢复解压好的备份文件。

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

# innobackupex --defaults-file=data/backup-my.cnf --apply-log data

4.为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。

执行如下命令,以文本方式编辑backup-my.cnf文件。

# vi /home/mysql/data/backup-my.cnf

执行如下命令,注释掉如下参数。

#innodb_fast_checksum

#innodb_page_size

#innodb_log_block_size

如果报错这两个也注释

# innodb_checksum_algorithm=innodb

# innodb_log_checksum_algorithm=innodb

# innodb_undo_directory=.

# innodb_undo_tablespaces=0

# rds_encrypt_data=false

# innodb_encrypt_algorithm=aes_128_ecb

按Esc键,然后输入:wq进行保存并关闭编辑器。

=============================================================

安装mysql-server

下载地址:https://dev.mysql.com/downloads/mysql/

mysql 5.6 下载地址:

https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-server-5.6.39-1.el6.x86_64.rpm

mysql 5.7 下载地址:

https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.21-1.el6.x86_64.rpm

这个版本是: Server version: 5.1.73

# yum -y install mysql-server mysql-develop mysql

升级mysql版本:

# yum -y remove mysql-server mysql-develop mysql

# yum localinstall MySQL-server-5.6.39-1.el6.x86_64.rpm

报错:file /usr/share/mysql/charsets/dec8.xml from install of MySQL-server-5.6.39-1.el6.x86_64

conflicts with file from package mysql-libs-5.1.73-8.el6_8.x86_64

看到“conflicts”,是产生冲突了,文件“/usr/share/mysql/charsets/*”

需要MySQL-server-5.6.19-1.linux_glibc2.5.x86_64版本的,而系统已经存在mysql-libs-5.1.73-8.el6_8.x86_64版本的!

解决办法:

执行以下命令,删除mysql-libs-5.1.73-8.el6_8.x86_64:

# yum -y remove mysql-libs-5.1.73*

再执行以下命令安装MySQL:

# yum localinstall MySQL-server-5.6.39-1.el6.x86_64.rpm

安装成功了。

安装mysql客户端:

下载地址:https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-client-5.6.39-1.el6.x86_64.rpm

# yum -y localinstall MySQL-client-5.6.39-1.el6.x86_64.rpm

=============================================================

5.执行如下命令,修改文件属主,并确定文件所属为MySQL用户。

chown -R mysql:mysql /home/mysql/data

# chown -R mysql:mysql data

6.执行如下命令,启动MySQL进程。

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

# mysqld_safe --defaults-file=/opt/data/backup-my.cnf --user=mysql --datadir=/opt/data &

7.执行如下命令,登录MySQL数据库以验证进程启动成功。

mysql -uroot

8.恢复完成后,表mysql.user中不包含在RDS实例中创建的用户,需要新建。在新建用户前,执行如下命令

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;

9.创建用户:

报错:mysql> grant all on *.* to [email protected]"%" identified by "xiaoyeyun";

ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found

42. Created with MySQL 50518, now running 50639.

Please use mysql_upgrade to fix this error.

按照问题描述执行修复:

mysql_upgrade mysql -h 192.168.1.2 -u xxx -p

# mysql_upgrade mysql

创建用户成功。

mysql> grant all on *.* to [email protected]"%" identified by "xiaoyeyun";

Query OK, 0 rows affected (0.00 sec)

mysql> select  user,host from mysql.user;

+-----------+-----------+

| user      | host      |

+-----------+-----------+

| xiaoyeyun | %         |

| root      | 127.0.0.1 |

| root      | ::1       |

| root      | localhost |

+-----------+-----------+

4 rows in set (0.00 sec)

mysql>

原文地址:http://blog.51cto.com/wangqh/2073840

时间: 2024-11-08 11:58:40

恢复云数据库MySQL的备份文件到自建数据库的相关文章

数据库MySQL的语句规范和操作数据库的各命令行

MySQL语句的规范 1.关键字与函数名称全部大写 2.数据库名称.表名称.字段名称全部小写 3.SQL语句必须以分号结尾 在cmd中用命令行操作数据库 首先打开MySQL -u代表账号 -p代表密码 --prompt \h是指将提示符改成localhost 将提示符改成更详细的信息 创建一个数据库,查看版本和查看目前有的数据库表 创建一个名为t2的数据库,并设置编码格式为gbk,如果以后想修改该数据库的编码,不需要删除重新建,只需要修改编码格式即可,下图也有展示 删除t1数据库,并查看现有的数

关系型数据库--mysql 5.5.20 32位 数据库的安装

第二项是utf 编码格式 第三项可以自己选择GBK Enable root access from remote machins 选中是可以远程访问mysql服务端 安装结束.

mysql远程连接只显示部分数据库问题

项目变更了环境,数据库换了环境,所以用navicat连接数据库,结果只能看到部分数据库 表示很奇怪,难道我的ip被禁止了吗,进入服务器查看连接用户权限 1.首先查看服务器先能看到的数据库 mysql> show databases; 2.看看此数据库用户和对应ip情况 mysql> select host,user from mysql.user; 3.查看当前用户 mysql> select current_user(); 4.查看当前用户权限 mysql> show grant

数据库 : Mysql 1 - 日常应用

#登录MYSQL数据库 MYSQL -u root -p #显示所有数据库 SHOW databases; #显示当前数据库与应用程序间进行了多少条连接 SHOW processlist; #使用某一数据库 USE database; #显示所有表 SHOW tables; #表结构描述 describe DESC table; #筛选表数据 #选择哪些列 SELECT prod_name, prod_price #从哪个表选 FROM products #选择的列做出什么筛选匹配 WHERE

【传智播客郑州校区】数据库MYSQL笔记详解

第1章 数据库1.1 数据库概述l 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作.l 什么是数据库管理系统数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中表内的数据.l 常见的数据库管理系统MYSQL :开源

云数据库MySQL版快速上手教程

课程介绍 MySQL 是全球最受欢迎的开源数据库,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用场景. 本课程主要介绍云数据库 MySQL 版的使用.数据迁移.备份恢复.性能优化等方法. 云数据库 MySQL 版详情:https://www.aliyun.com/product/rds/mysql 课程目标 掌握云数据库MySQL版的基本使用方法 适合人群 DBA 运维 课程列表 课时1:云数据库 M

云应用开发之新浪SAE读写云端数据库MySQL

本博文为前篇博文新浪云应用SAE日志查看的延续. 在读写云数据库MySQL之前,须要说明的是,在新浪云平台上使用数据库时.该平台默认会为每个应用单独新建一个数据库database实例.在该实例中再创建各种我们须要的表tables.当然,通过设置能够让多个应用共享同一个数据库实例. 以下为应用加入数据库服务步骤. 一.通过控制台初始化MySQL 1.在新浪云控制台左側数据库服务子项下进入共享型MySQL 2.然后出现页面 3.点击初始化MySQLbutton出现页面 4.点击第一个方框(通过第二个

阿里云服务器数据库mysql连不上解决方法

有时启或无缘无故的就会出来数据库连不上的问题. 1.重启服务器 2.出现了mysql未连接上, 3.重新启动mysql,出现502 4.执行/etc/init.d/php-fpm start,出现数据库无法连接 5.执行service mysqld restart,重启数据库 如果 =====nginx错===== 重启nginx后丢失nginx.pid,如何重新启动nginx /alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/c

强制 InnoDB 恢复,启动 MySQL 数据库

要调查数据库页面损坏,您可以使用从数据库转储表 SELECT ... INTO OUTFILE.通常,以这种方式获得的大多数数据是完整的.严重损坏可能导致语句或 后台操作崩溃或断言,甚至导致前滚恢复崩溃.在这种情况下,您可以使用该 选项强制启动存储引擎,同时防止后台操作运行,以便您可以转储表.例如,您可以在重新启动服务器之前将以下行添加到选项文件的部分: SELECT * FROM tbl_nameInnoDBInnoDBinnodb_force_recoveryInnoDB[mysqld] [