1. 程式人生 > >實現線上伺服器定時備份mysql/sqlserver資料庫,並且本地伺服器定時從線上伺服器拉取資料庫備份

實現線上伺服器定時備份mysql/sqlserver資料庫,並且本地伺服器定時從線上伺服器拉取資料庫備份

一、備份線上伺服器的mysql、sqlserver資料庫

1、centos伺服器:**.***.**.88(為了方便以root身份登入)       兩個資料庫:   test_mysql    test_sqlserver 2、用root身份建立資料庫備份存放目錄: 

    mkdir /sqlserver_backup/
    mkdir /mysql_backup/

3、用root身份建立.sh指令碼檔案backup_mydb.sh:

    vi /home/common-tools/backup_mydb.sh

4、backup_mydb.sh指令碼檔案程式碼如下:

    sqlcmd -S **.***.**.88 -U user -P password -Q "backup database test_sqlserver to disk='/sqlserver_backup/sqlserver_`date '+%m-%d-%Y'`.bak'"
    mysqldump -uuser -ppassword test_mysql | gzip > /mysql_bakcup/mysql_`date '+%m-%d-%Y'`.sql.gz

5、用root身份配置cron定時任務:    

    30 2 * * * /bin/bash /home/common-tools/shell/backup_mydb.sh >>/tmp/backup_mydb.log 2>&1
    每天凌晨2:30分定時執行backup_mydb.sh指令碼檔案

二、從線上伺服器拷貝mysql、sqlserver資料庫備份檔案到本地伺服器

1、本地伺服器:192.168.0.20(為了方便以root身份登入)

2、用root身份建立需要拷貝的(線上資料庫備份)本地存放目錄:

    mkdir -p db_bcp/sqlserver_bcp
    mkdir -p db_bcp/mysql_bcp 

3、用root身份建立.sh指令碼檔案scp_sqlserver.sh、scp_mysql.sh:

    [email protected]:/#  vi home/common-tools/shell/scp_sqlserver.sh

    scp [email protected]**.***.**.88:/sqlserver_backup/sqlserver_`date '+%m-%d-%Y'`.bak /db_bcp/sqlserver_bcp  
    [email protected]:/#  vi home/common-tools/shell/scp_mysql.sh

    scp 
[email protected]
**.***.**.88:/mysql_backup/mysql_`date '+%m-%d-%Y'`.sql.gz /db_bcp/mysql_bcp   

4、用root身份配置cron定時任務:    

    45 2 * * * /bin/bash /home/common-tools/shell/scp_sqlserver.sh >/tmp/scp_sqlserver.log 2>&1
    55 2 * * * /bin/bash /home/common-tools/shell/scp_mysql.sh >/tmp/scp_mysql.log 2>&1

    說明:

1、對於線上資料庫備份指令碼程式碼,我將其存在同一個.sh指令碼檔案;而在本地拷貝線上資料庫備份的時候,我分成了兩個.sh指令碼檔案且分開記載日誌記錄(個人習慣); 2、為了避免scp命令需要輸入密碼,還需要配置ssh公鑰/私鑰  (用ssh-keygen -t rsa命令可以在本地生成公鑰/私鑰檔案,再將id_rsa.pub的程式碼新增到線上伺服器 ~/.ssh/authorized_keys檔案中)