实现线上服务器定时备份mysql/sqlserver数据库,并且本地服务器定时从线上服务器拉取数据库备份

一、备份线上服务器的mysql、sqlserver数据库


1、centos的linux服务器:**.***.**.88(为了方便以root身份登录)

      需要备份的两个数据库分别是mysql数据库下的test_mysql库,和sqlserver数据库下的test_sqlserver库


2、为了方便,这里用root身份在根目录下,创建数据库备份存放目录: 

    root@dev:/#  mkdir /sqlserver_backup/
    root@dev:/#  mkdir /mysql_backup/

3、用root身份创建.sh脚本文件:backup_mydb.sh

    root@dev:/#  vi /home/common-tools/shell/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身份创建(线上数据库备份)对应的两个本地存放目录:

    root@dev:/#  mkdir -p db_bcp/sqlserver_bcp
    root@dev:/#  mkdir -p db_bcp/mysql_bcp 

3、用root身份创建.sh脚本文件:scp_sqlserver.sh、scp_mysql.sh(看自己需要可以将两个文件合为一个文件):

    root@dev:/#  vi home/common-tools/shell/scp_sqlserver.sh

    scp root@**.***.**.88:/sqlserver_backup/sqlserver_`date '+%m-%d-%Y'`.bak /db_bcp/sqlserver_bcp  

 

    root@dev:/#  vi home/common-tools/shell/scp_mysql.sh

    scp root@**.***.**.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文件中即可)                                                                                

3、scp在传输文件的时候实际上有可能会中断

4、以上只是简单地实现了单个库的备份(而非单个表的备份),技术粗浅不喜勿喷。

  


 

猜你喜欢

转载自blog.csdn.net/dreamy1024/article/details/82885250