恢復阿里雲RDS雲數據庫MySQL的備份文件到自建數據庫

雲數據庫MySQL版使用開源軟件Percona Xtrabackup對數據庫進行備份,因此您能夠使用該軟件將雲數據庫MySQL的備份文件恢復到自建數據庫中,本文將介紹詳細的操做步驟。html

關於雲數據庫MySQL版如何備份數據,請參見備份RDS數據mysql

前提條件

  • 本地MySQL數據庫安裝在64位的Linux系統中,且與雲數據庫MySQL版的版本相同。sql

    說明:因爲軟件限制,目前只支持將雲數據庫MySQL的備份文件恢復到安裝在Linux系統中的自建MySQL數據庫中。但在Linux下恢復的數據文件,能夠在Windows和Linux操做系統中正常使用。數據庫

  • 操做系統中已安裝數據恢復工具Percona XtraBackup。MySQL 5.6及以前的版本須要安裝 Percona XtraBackup 2.3。MySQL 5.7版本須要安裝 Percona XtraBackup 2.4。能夠從Percona XtraBackup官網下載安裝,安裝指導請參見官方文檔 Percona XtraBackup 2.3Percona XtraBackup 2.4.bash

  • 操做系統中已安裝數據備份文件解壓工具rds_backup_extract.sh。若未安裝,請點擊下載服務器

操做步驟

  1. 獲取數據備份文件下載地址,具體操做步驟以下。app

    1. 登陸RDS管理控制檯編輯器

    2. 選擇目標實例所在地域。工具

    3. 單擊目標實例的ID,進入基本信息頁面。字體

    4. 在左側導航欄中,選擇備份恢復,進入備份恢復頁面。

    5. 選擇數據備份標籤頁。

    6. 選擇查詢的時間範圍,而後單擊查詢。

    7. 在數據備份列表中,找到要下載的數據備份,並單擊其對應的下載,以下圖所示。

      下載數據備份

    8. 在實例備份文件下載窗口,單擊複製外網地址,獲取數據備份文件外網下載地址,以下圖所示。

      複製外網下載地址

  2. 下載數據備份文件,具體操做步驟以下。

    1. 登陸雲服務器ECS。

    2. 執行以下命令,下載數據備份文件。

       
      1. wget -c '<數據備份文件外網下載地址>' -O <自定義文件名>.tar.gz

      參數說明:

      • -c:啓用斷點續傳模式。

      • -O:將下載的結果保存爲指定的文件(建議使用URL中包含的文件名)。

        說明:若提示顯示100%進度,則表示文件下載完成。

  3. 將下載的數據備份恢復到本地MySQL數據庫中,具體操做步驟以下。

    1. 執行以下命令,解壓已下載的數據備份文件。

      說明:本文以自定義路徑/home/mysql/data爲例,您能夠根據實際狀況將其替換成實際路徑。

       
      1. bash rds_backup_extract.sh -f <數據備份文件名>.tar.gz -C /home/mysql/data  (若是數據庫比較大 , 能夠在 screen 裏執行)

      參數說明:

      • -f:指定要解壓的備份集文件。

      • -C:指定文件要解壓到的目錄。可選參數,若不指定就解壓到當前目錄。

    2. 執行以下命令,查詢解壓後生成的文件。

       
      1. ls -l /home/mysql/data

      命令執行成功後,系統會返回以下結果,其中藍色字體爲生成備份文件時RDS實例所包含的數據庫。

      查看解壓文件

    3. 執行以下命令,恢復解壓好的備份文件。

       
      1. innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data --use-memory=8G   (若是數據比較大, 能夠在screen 裏執行,設置內存大小加速恢復速度)

      若系統返回以下相似結果,則說明備份文件已成功恢復到本地數據庫。

      恢復成功

  4. 爲避免版本問題,需修改backup-my.cnf參數,具體操做步驟以下。

    1. 執行以下命令,以文本方式編輯backup-my.cnf文件。

       
      1. vi /home/mysql/data/backup-my.cnf
    2. 執行以下命令,註釋掉以下參數。

       
      1. #innodb_fast_checksum
      2. #innodb_page_size
      3. #innodb_log_block_size
    3. 按Esc鍵,而後輸入:wq進行保存並關閉編輯器。

  5. 執行以下命令,修改文件屬主,並肯定文件所屬爲MySQL用戶。

     
    1. chown -R mysql:mysql /home/mysql/data
  6. 執行以下命令,啓動MySQL進程。

     
    1. mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
  7. 執行以下命令,登陸MySQL數據庫以驗證進程啓動成功。

     
    1. mysql -uroot

    若系統返回以下結果,進程啓動成功,則說明已成功執行參數註釋和修改文件屬主。

    啓動成功

  8. 恢復完成後,表mysql.user中不包含在RDS實例中建立的用戶,須要新建。在新建用戶前,執行以下命令。

     
    1. delete from mysql.db where user<>’root and char_length(user)>0;delete from mysql.tables_priv where us

     

    實際遇到問題:

    mysql 啓動不起來 , 更改了 配置文件 
    
    # This MySQL options file was generated by innobackupex.
    
    # The MySQL server
    [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=1572864000
    #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

     

    mysql -uroot  直接登陸不了
    
    重置root 密碼也不行
    
    用原先rds的高權限帳戶登陸是能夠的  
相關文章
相關標籤/搜索