服务器数据库备份到另外一个服务器的数据库


数据库备份
1、在 CentOS7 中安装 rsync
yum -y install rsync
2、用密钥实现免密登录
由于需要使用命令行传输文件,不方便输入密码,所以在服务器 A 中配置 ssh 免密登录,配置成功后,服务器 A 登录服务器 B 时就不需要输入密码就可以登录了。
(1)生成公钥
在服务器 A 中输入命令:
ssh-keygen
该命令会生成一个公钥,执行命令后,在 ~/.ssh/ 会出现两个新文件:
生成公钥
(2)将公钥传输到服务器 B 中
在服务器 A 中输入命令:
ssh-copy-id root@B服务器ip

或者

ssh-copy-id -i ~/.ssh/id_rsa.pub root@B服务器ip

需要注意文件夹的用户权限以及所有者,如果是用root免密登陆,服务器a .ssh文件夹权限700 所有者root 服务b .shh的authorized_keys文件权限600 所有者root(本人被蒙了两天,萌新一个)
从此以后,在服务器 A 中使用 ssh 方式登录服务器 B 就不需要输入密码了。
3、在服务器 A 中书写脚本 backup.sh
这个脚本主要的作用是将要备份的数据导出为一个 SQL 脚本,并将这个脚本传输到服务器 B 的指定目录中:
#!/bin/bash
# 将 woods数据库 导出为一个 SQL 脚本
mysqldump -h服务器A的IP -u用户名 -p密码 woods > /etc/backup/sql/woods`date +%Y%m%d%H%M%S`.sql
# 同步目录(传输新增文件到服务器的B的指定目录)
rsync -arv --delete /etc/backup/sql/ root@服务器B的IP:/etc/backup/sql/

保存之前建议set  ff=unix
这个脚本做了两个操作:
将 woods数据库 导出为一个 SQL 脚本,这个脚本的命名带上了当前时间。
会将服务器A的 /etc/backup/sql/ 目录与服务器 B 的 /etc/backup/sql/ 目录进行同步。
4、将 backup.sh 加上可执行权限
在服务器 A 中输入命令:

//chmod 744 /usr/local/backup.sh
chmod 744 /home/backup/local/backup.sh

5、测试 backup.sh 是否达到预期的效果
  在服务器 A 中输入命令:

  sh /usr/local/backup.sh
  执行完毕后,查看是否已经生成了备份文件:

  是否已经生成了备份文件

6、添加定时任务
  输入命令:

  crontab -e
  在打开的文件中加入如下内容:

  0 1 * * * sh /usr/local/backup.sh
  这个意思是每天凌晨 1 点执行脚本。关于 crontab 表达式的更多内容就不在这里说了,感兴趣的可以自己去搜索引擎搜索 crontab 表达式自行学习。

(二)、在服务器 B 上需要进行的操作
  注意:以下命令全部在服务器 B 上进行。

  1、书写脚本 reduction.sh
  这个脚本的作用是执行从服务器 A 中传入过来的 SQL 脚本:

  #!/bin/bash
  # 找到当天的备份文件的位置并存入到变量 woods_file
  woods_file=$(find /etc/backup/sql -name woods`date +%Y%m%d*`)

  # 一个 if 判断,意思是如果变量 woods_file 字符串不为空,就执行 then 后面的命令
  if [ -n $woods_file ]
    then
    echo $woods_file
    # 执行查找到的 MySQL 脚本
    mysql -hlocalhost -u数据库用户名 -p数据库密码 数据库名< $woods_file

  fi

  保存之前建议set ff=unix
  注意,MySQL 一定已经有你要备份的数据库,mysqldump 导出的 SQL 脚本没有带创建数据库的命令,所以没有就要先自行创建。

2、测试 reduction.sh 是否达到预期效果
  sh /usr/local/reduction.sh
  执行脚本,查看数据库的内容是否已经变化为备份文件的内容,如果没有发生变化,请根据报错提示,进行排查。

3、设置定时任务
  设置定时任务定期执行脚本 reduction.sh

  输入命令:

  crontab -e
  在打开的文件中加入如下内容:

  30 1 * * * sh /usr/local/reduction.sh
  这个意思是每天凌晨 1 点 30 分执行脚本。

该文章引用自:https://segmentfault.com/a/1190000022525635


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM