恢复云数据库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:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。
执行如下命令,恢复解压好的备份文件
为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。
i. 执行如下命令,以文本方式编辑backup-my.cnf文件。
vi /home/mysql/data/backup-my.cnf
ii. 执行如下命令,注释掉如下参数。
#innodb_fast_checksum
#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
我这边重启了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
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
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