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

恢复云数据库MySQL的备份文件到自建数据库
注:已经在本地阿里云服务器部署
系统:使用的阿里云CentOS release 6.8 (Final)

注:先把默认的mysql清理
然后去官网下载
我使用的mysql版本如下:
mysql-community-server-5.6.40-2.el6.x86_64
centos6安装mysql的yum源
wget https://repo.mysql.com//mysql80-community-release-el6-1.noarch.rpm
然后rpm -ivh
注:这个yum源默认是安装mysql8.0的 一把是安装最新稳定版的 mysql
但是yum源里面 还一堆的其他版本••比如

如果需要centos7的 mysql的其他版本的 yum源 请直接去官网找到社区版•下面是地址:
https://dev.mysql.com/downloads/mysql/

安装恢复RDS的工具,说明一下 阿里云是使用xtrabackup全量备份的所以需要下载percona-xtrabackup
Y um install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install percona-xtrabackup

下载RDS上的全量备份数据
wget -c 'http://rdsbak-hzi-v2.oss-cn-hangzhou-internal.aliyuncs.com/custins5649549/hins4451627_data_20180605231947.tar.gz?OSSAccessKeyId=LTAITfQ7krsrEwRn&Expires=1528360515&Signature=8FAk7VbnzmGdY7SdD4S2Uq70x3w%3D' -o mysql.test.tar.gz
注 -c是断开续传下载 -O是追加到一个tar文件里面••••这里是大写字母O

将下载的数据备份恢复到本地MySQL数据库中,具体操作步骤如下
执行如下命令,解压已下载的数据备份文件。
说明:本文以自定义路径/home/mysql/data为例,您可以根据实际情况将其替换成实际路径。
bash rds_backup_extract.sh -f mysql.test.tar.gz -C /home/mysql/data

参数说明:
 -f:指定要解压的备份集文件。
 -C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。

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

  1. innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
    注:这个backup-my.cnf文件是解压以后自带的•••需要注释掉几个 RDS参数•••因为阿里云二次开发过
    官方的mysql也没这些参数 要不然起不来

为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。
i. 执行如下命令,以文本方式编辑backup-my.cnf文件。
vi /home/mysql/data/backup-my.cnf
ii. 执行如下命令,注释掉如下参数。

#innodb_fast_checksum

  1. #innodb_page_size
  2. #innodb_log_block_size

#rds_encrypt_data=false
#innodb_encrypt_algorithm=aes_128_ecb
#innodb_log_checksum_algorithm=innodb

我发现要注释这6个参数•••••••

附上整个配置
Cat backup-my.cnf
[mysqld]
innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
#innodb_fast_checksum=false
#innodb_page_size=16384
#innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0
#rds_encrypt_data=false
#innodb_encrypt_algorithm=aes_128_ecb

  1. 执行如下命令,修改文件属主,并确定文件所属为MySQL用户。
    chown -R mysql:mysql /home/mysql/data
  2. 执行如下命令,启动MySQL进程。
    mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
  3. 执行如下命令,登录MySQL数据库以验证进程启动成功。

我这边重启了2次••所有有 2个mysql-binlog日志,这是还没恢复RDS的增量日志•的截图

mysql -uroot
这个mysql登录是没有密码的•••直接可以进去

我这里测试 确实只有 默认的 root用户了•••

恢复完成后,表mysql.user中不包含在RDS实例中创建的用户,需要新建。在新建用户前,执行如下命令。
mysql> 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;

注意这里需要不报错••有可能引号有问题 改改。阿里云说了 这一串是必须的•••

mysql> create database zabbix;
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456';
注:这样才能创建新用户 ••要不然会报错••••如果还报错•••会提示需要••mysql_upgrade恢复

退出mysql,直接执行下面命令就ok了•••
mysql_upgrade
就会ok

mysql> grant all privileges on . to 'root'@'%' identified by '123456';
mysql> flush privileges;

增量恢复步骤:
先下载和恢复全被••找到binlog所在实例编号•这个全备时间点以后的binlog相同的编号 全部要下载 我下面有 6个binlog日志都需要恢复•••••

确定需要开始增量应用 binlog 的位点
[root@paopao-php-dev data]# cat xtrabackup_binlog_info
mysql-bin.000197 93011 22c9970f-4782-11e8-afd1-702084fbc72e:1-22285363

mysql-bin.000197 是应用的起始 binlog 文件, 93011 是开始位点(start position)

1.从控制台下载相同 “备份所在实例编号” 的恢复所需 binlog 文件。在本例中,增量恢复涉及到
我这里涉及到6个还一个binlog是一样的

2.下载后使用 tar 命令解压
tar xvpf mysql-bin 这6个文件都要解压

3通过 mysqlbinlog 命令分析 mysql-bin.000202 文件内容,确定增量恢复到的时间点。

mysqlbinlog -v --base64-output=decode-rows mysql-bin.000202 > 202.log

vi 202.log

请用户自行根据情况确定要恢复到的时间

确定时间点后,进行增量恢复
mysqlbinlog mysql-bin.000688 mysql-bin.000689 --start-position=93011 --stop-datetime="16-05-16 18:05:03" | mysql -uroot -pyour_password -P3306 -hyour_host_ip

-p 参数和 your_password 间不要有空格, your_password 请自行替换为实际密码

-h 参数后请指定非 127.0.0.1 的主机 IP

mysqlbinlog 命令格式:

mysqlbinlog binlog_file1 binlog_file2 ... binlog_filen --start-position=xxxx --stop-datetime="YY-mm-dd hh:mm:ss" | mysql -uroot -pyour_password -Pmysql_port -hyour_host_ip

mysqlbinlog 其他可以使用的参数

--database db_name 指定仅增量恢复指定数据库 db_name 的数据

--start-position 指定开始恢复的 binlog 位点,该位点应存在于指定的第一个 binlog 文件。

--stop-position 指定恢复到的 binlog 位点,该位点应存在于指定的最后一个 binlog 文件。

--start-datetime 指定开始恢复的时间点(从第一个等于或大于该时间点的 binlog 事件开始)。

以本地时间时区为准,格式为 MySQL 可以接受的时间格式,比如"2016-05-16 08:01:05" 或 "16-05-16 08:01:05"。

--stop-datetime 指定停止恢复的时间点(在第一个等于或大于该时间点的 binlog 事件停止)。

以本地时间时区为准,格式为 MySQL 可以接受的时间格式,比如"2016-05-16 08:01:05" 或 "16-05-16 08:01:05"。

mysqlbinlog mysql-bin.000197 mysql-bin.000198 mysql-bin.000200 mysql-bin.0002000 mysql-bin.000201 mysql-bin.000202 --start-position=93011 --stop-datetime="2018-06-11 10:30:49" | mysql -uroot -p123456 -P3306 -h172.16.214.123
多个binlog日志老报错••ERROR 2006 (HY000) at line 59225: MySQL server has gone away

解决报错:
1.直接去mysql里面设置这个上传的参数 改成 500M•临时生效
mysql> set global max_allowed_packet=10241024500

2.持久生效需要在配置文件添加参数,但是需要重启mysql生效
max_allowed_packet = 500M

#我现在是一个一个的bilog上传 可能设置很大 可以一起上传 •我还没测试一起上传多个binlog日志

转载于:https://blog.51cto.com/7304817/2128374

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下步骤将 MySQL 数据库备份文件恢复到原始状态: 1. 创建一个新的数据库,命名为你想要的名称,比如 "sample_db"。 2. 将备份文件转移到服务器上并解压缩。如果备份文件是 .sql 格式,则可以使用以下命令: ``` $ tar -xzvf backup_file.tar.gz ``` 3. 进入解压后的备份文件所在的目录。 4. 执行以下命令将备份文件中的数据恢复到新创建的数据库中: ``` $ mysql -u [username] -p [database_name] < backup_file.sql ``` 其中,[username] 是 MySQL 数据库的用户名,[database_name] 是新创建的数据库名称,backup_file.sql 是备份文件的名称。 5. 在命令提示符下输入 MySQL 登录密码。 6. 数据库恢复完成后,可以通过以下命令连接到新创建的数据库: ``` $ mysql -u [username] -p [database_name] ``` 7. 在命令提示符下输入 MySQL 登录密码。 现在,你已经成功将 MySQL 数据库备份文件恢复到原始状态,并且可以开始使用它了。 ### 回答2: 要将MySQL数据库恢复到原始状态,可以使用备份文件进行操作。以下是恢复数据库的步骤: 1. 查找备份文件:首先需要查找并定位要恢复数据库备份文件备份文件通常是通过数据库管理工具或者命令行工具创建的。可以根据备份文件的位置和名称,在文件系统中找到它。 2. 停止MySQL服务器:在恢复数据库之前,需要停止MySQL服务器的运行。可以使用命令行工具或数据库管理工具来停止MySQL服务器。 3. 将备份文件复制到指定位置:将查找到的备份文件复制到MySQL服务器所指定的备份文件目录中。这个目录通常是MySQL安装目录下的"data"文件夹。 4. 启动MySQL服务器:将备份文件复制到正确的位置后,可以重新启动MySQL服务器。同样地,可以使用命令行工具或数据库管理工具来启动MySQL服务器。 5. 恢复数据库:一旦MySQL服务器重新启动,可以使用备份文件恢复数据库。可以使用命令行工具或数据库管理工具来执行恢复操作。具体的恢复命令会因备份文件的格式而有所不同。 完成以上步骤后,MySQL数据库恢复备份文件所代表的原始状态。可以通过执行查询操作或其他数据库操作验证数据库是否已成功恢复。需要注意的是,在执行数据库恢复操作之前,建议先进行数据备份,以防止意外数据丢失。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值