實現線上伺服器定時備份mysql/sqlserver資料庫,並且本地伺服器定時從線上伺服器拉取資料庫備份
阿新 • • 發佈:2018-12-12
一、備份線上伺服器的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檔案中)