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脚本文件
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、以上只是简单地实现了单个库的备份(而非单个表的备份),技术粗浅不喜勿喷。