阿里雲rds 備份和還原
轉發:https://www.cnblogs.com/lin1/p/8617764.html
轉發:https://help.aliyun.com/knowledge_detail/41817.html
1.阿里雲數據庫備份實例,恢復數據的時候需要將數據恢復到本地數據庫,是不能直接恢復到RDS上的。
2.需要在本地服務器上下載一個數據庫,盡量和RDS數據庫版本保持一致。(我現在用的是5.6的版本)
3.這里需要用到xtrabakcup工具進行數據恢復
1,下載5.6版本的數據庫
cd /usr/local/src/
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
2,解壓
mv /us/local/src/mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
3,創建數據庫用戶
useradd -s /sbin/nologin mysql
3,安裝xtrabakcup工具
獲取yum源
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
安裝xtrabackup需要依賴其他包(這里用的是阿里雲的epel源)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
安裝工具
yum install percona-xtrabackup
4,登錄到阿里雲的RDS控制台,點擊復制外網。
5,下載數據備份文件
wget -c '外網地址' -O /usr/local/src/db.tar.gz
(如果你用的是虛擬機,可能無法解析改外網地址。加個114的dns即可)
6,將下載的數據備份恢復到本地MySQL數據庫中
a,首先下載一個腳本
wget http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh
chmod a+x rds_backup.sh
b,解壓數據文件
mkdir -p /data/mysql
執行命令解壓數據文件
./rds_backup.sh -f <數據備份文件名>.tar.gz -C /data/mysql
c,恢復解壓好的備份文件
innobackupex --defaults-file=/data/mysql/backup-my.cnf --apply-log /data/mysql
出現如上圖,基本數據恢復完成了。
7,修改數據庫文件屬性
chown -R mysql:mysql /data/mysql
8,為防止數據庫版本問題,還是需要修改/data/mysql/backup-my.cnf的配置文件,將如下配置注釋掉。
9,啟動數據庫
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/backup-my.cnf --user=mysql --datadir=/data/mysql &
10,登錄數據庫
/usr/local/mysql/bin/mysql -uroot
上面基本完成數據的恢復。考慮到恢復完成后,表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;