阿里云mysql数据库备份还原
1、下载备份包
在rds的备份恢复中点击下载,在弹出的窗口中复制内网下载地址(前提是目标服务器与rds内网互通,否则请复制外网地址)
在目标服务器中执行如下命令进行下载:
wget -c '复制的地址' -O mysql-bin.001150.tar.gz
-c 参数使 wget 工具在连接中断的时候尝试断点续传。
-O 参数将下载的结果保存为指定的文件(建议使用 URL 中包含的文件名)。
2、解压备份文件
bash rds_backup_extract.sh -f /opt/project/xxxxx.tar.gz -C /home/data
rds_backup_extract.sh 可在阿里云中下载,也可在通过http://url.cn/4BtvG4t下载。
/opt/project/xxxxx' .tar.gz 为下载的数据库包路径,/home/data为要解压到的文件夹
3、安装Percona-XtraBackup 工具
Percona-XtraBackup安装,下载地址为:https://www.percona.com/downloads/XtraBackup/
也可以通过http://url.cn/4Btvndw进行下载
下载好rpm包后执行:rpm -ivh percona-xtrabackup-2.2.3-4982.el6.x86_64.rpm进行安装
出现错误的话要安装好依赖包
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
3、 恢复数据文件
innobackupex --defaults-file=/home/data/backup-my.cnf --apply-log /home/data
4、修改配置文件
对恢复后的backup-my.cnf配置文件进行一些修改
[mysqld]
#datadir为恢复的目录
datadir=/home/data
innodb_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1048576000
innodb_undo_directory=.
innodb_undo_tablespaces=0
max_connections=1000
innodb_file_per_table = on
skip_name_resolve = on
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server=utf8
init_connect='SET NAMES utf8'
5、 启动mysql服务
mysqld_safe --defaults-file=/home/data/backup-my.cnf --user=root --datadir=/home/data &
--defaults-file表示mysql初始化文件,第三步中--defaults-file设置的文件地址
--user 表示启动mysql服务时使用的系统用户,不是mysql数据库用户
--datadir表示数据库存在的路径,对应解压缩的数据库路径
&表示以后台进程的方式运行命令
6、 初始化还原库
一些密码初始化和授权的操作可参考 yum安装mysql数据库中的4、5步
可能出现的问题:
1、初始化数据库密码出问题
可尝试以下初始化操作
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
2、Column count of mysql.user is wrong
这能是当前mysql版本和需要恢复数据的mysql版本不一致导致的
解决方法:mysql_upgrade –u root –p '密码'
总结:
此种方式阿里云物理备份的还原方式,为整库还原,比较麻烦且耗时。
如无特别需要,也可通过逻辑备份进行还原
下载逻辑备份文件通过解压可得到还原的sql文件,如(platform.sql),然后执行
mysql -u root -p platformdb_back < ./platform.sql
-- platformdb_back为还原的目标数据库
还原后如需对数据库备份可以使用
mysqldump -u root -p platformdb_back > platform.sql