基于ssh key认证,mysqldump的远程mysql备份方案

首先假设,数据库服务器为A,用来远程存放备份的服务器为B

为了避免SSH输入密码,第一步,先设置SSH的key认证
1.(openssh).在A服务器用openssh生成一堆密钥

ssh-keygen -d

passphrase留空,否则又要输入密码
会生成~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub文件。设置属性

chmod 600 ~/.ssh/id_rsa

把~/.ssh/id_rsa.pub文件的内容复制后添加到B服务器用户目录~/.ssh/authorized文件里,设置属性

chmod 600 ~/.ssh/authorized

1.(puttygen).或者用puttygen来生成密钥对,用菜单上的Conversions,Export OpenSSH Key来导出OpenSSH格式的私钥,保存为id_rsa,放到A服务器用户目录~/.ssh/下,设置属性

chmod 600 ~/.ssh/id_rsa

公钥在puttygen最上面那一堆最长的字符串就是,复制后添加到B服务器用户目录~/.ssh/authorized文件里,同样设置属性

chmod 600 ~/.ssh/authorized

2.在数据库服务器执行以下脚本就可以备份

#!/bin/bash
SQLFILE=$(date "+%Y%m%d%H%M%S")".sql"
mysqldump -udbuser -pdbpass dbname > $SQLFILE
gzip $SQLFILE
scp $SQLFILE".gz" remoteuser@remoteip:~/

如果本地不保存,直接备份到B服务器

#!/bin/bash
mysqldump -udbuser -pdbpass dbname|gzip -c|ssh remoteuser@remoteip 'cat > ~/'`date "+%Y%m%d%H%M%S"`'.sql.gz'

其中dbuser是数据库用户名,dbpass是数据库密码,dbname是数据库名,remoteuser是远程B服务器的用户名,remoteip是远程B服务器的IP

3.最后把shell脚本放到crontab里,就可以定时备份了

基于ssh key认证,mysqldump的远程mysql备份方案》上有1条评论

  1. Pingback引用通告: shell脚本实现远程mysqldump备份mysql数据 | fanzn.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注