服務器數據庫備份到另外一個服務器的數據庫


數據庫備份
1、在 CentOS7 中安裝 rsync
yum -y install rsync
2、用密鑰實現免密登錄
由於需要使用命令行傳輸文件,不方便輸入密碼,所以在服務器 A 中配置 ssh 免密登錄,配置成功后,服務器 A 登錄服務器 B 時就不需要輸入密碼就可以登錄了。
(1)生成公鑰
在服務器 A 中輸入命令:
ssh-keygen
該命令會生成一個公鑰,執行命令后,在 ~/.ssh/ 會出現兩個新文件:
生成公鑰
(2)將公鑰傳輸到服務器 B 中
在服務器 A 中輸入命令:
ssh-copy-id root@B服務器ip

或者

ssh-copy-id -i ~/.ssh/id_rsa.pub root@B服務器ip

需要注意文件夾的用戶權限以及所有者,如果是用root免密登陸,服務器a .ssh文件夾權限700 所有者root 服務b .shh的authorized_keys文件權限600 所有者root(本人被蒙了兩天,萌新一個)
從此以后,在服務器 A 中使用 ssh 方式登錄服務器 B 就不需要輸入密碼了。
3、在服務器 A 中書寫腳本 backup.sh
這個腳本主要的作用是將要備份的數據導出為一個 SQL 腳本,並將這個腳本傳輸到服務器 B 的指定目錄中:
#!/bin/bash
# 將 woods數據庫 導出為一個 SQL 腳本
mysqldump -h服務器A的IP -u用戶名 -p密碼 woods > /etc/backup/sql/woods`date +%Y%m%d%H%M%S`.sql
# 同步目錄(傳輸新增文件到服務器的B的指定目錄)
rsync -arv --delete /etc/backup/sql/ root@服務器B的IP:/etc/backup/sql/

保存之前建議set  ff=unix
這個腳本做了兩個操作:
將 woods數據庫 導出為一個 SQL 腳本,這個腳本的命名帶上了當前時間。
會將服務器A的 /etc/backup/sql/ 目錄與服務器 B 的 /etc/backup/sql/ 目錄進行同步。
4、將 backup.sh 加上可執行權限
在服務器 A 中輸入命令:

//chmod 744 /usr/local/backup.sh
chmod 744 /home/backup/local/backup.sh

5、測試 backup.sh 是否達到預期的效果
  在服務器 A 中輸入命令:

  sh /usr/local/backup.sh
  執行完畢后,查看是否已經生成了備份文件:

  是否已經生成了備份文件

6、添加定時任務
  輸入命令:

  crontab -e
  在打開的文件中加入如下內容:

  0 1 * * * sh /usr/local/backup.sh
  這個意思是每天凌晨 1 點執行腳本。關於 crontab 表達式的更多內容就不在這里說了,感興趣的可以自己去搜索引擎搜索 crontab 表達式自行學習。

(二)、在服務器 B 上需要進行的操作
  注意:以下命令全部在服務器 B 上進行。

  1、書寫腳本 reduction.sh
  這個腳本的作用是執行從服務器 A 中傳入過來的 SQL 腳本:

  #!/bin/bash
  # 找到當天的備份文件的位置並存入到變量 woods_file
  woods_file=$(find /etc/backup/sql -name woods`date +%Y%m%d*`)

  # 一個 if 判斷,意思是如果變量 woods_file 字符串不為空,就執行 then 后面的命令
  if [ -n $woods_file ]
    then
    echo $woods_file
    # 執行查找到的 MySQL 腳本
    mysql -hlocalhost -u數據庫用戶名 -p數據庫密碼 數據庫名< $woods_file

  fi

  保存之前建議set ff=unix
  注意,MySQL 一定已經有你要備份的數據庫,mysqldump 導出的 SQL 腳本沒有帶創建數據庫的命令,所以沒有就要先自行創建。

2、測試 reduction.sh 是否達到預期效果
  sh /usr/local/reduction.sh
  執行腳本,查看數據庫的內容是否已經變化為備份文件的內容,如果沒有發生變化,請根據報錯提示,進行排查。

3、設置定時任務
  設置定時任務定期執行腳本 reduction.sh

  輸入命令:

  crontab -e
  在打開的文件中加入如下內容:

  30 1 * * * sh /usr/local/reduction.sh
  這個意思是每天凌晨 1 點 30 分執行腳本。

該文章引用自:https://segmentfault.com/a/1190000022525635


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM