zoukankan      html  css  js  c++  java
  • mysql的远程备份 和其他备份方法

    一:前期准备

    至少需要两台主机

    192.168.175.200       vip

    192.168.175.250       node1

    做密钥否则不能拷贝过去

    命令:[root@vip ~]#cd /root/.ssh

    命令:[root@vip ~]#ssh-keygen

    #

    命令:[root@vip .ssh]#ssh-copy-id  192.168.175.250

    测试一下,命令:[root@vip .ssh]# ssh 192.168.175.250             #不需要密码直接连接

    1.另一台主机最好提前创建一个数据存放地

    命令:[root@node1 ~]# mkdir -p /data/rsyncdata/databak/

    2..备份脚本内容

    命令:[root@vip ~]# vim databak.sh

    #!/bin/bash
    date=$(date +%Y%m%d%H%M%S)                                                                                       #设置时间变量,括号内是设置时间的格式
    mysqldump -uroot -p'123456' -A > /root/$date-192.168.175.200.sql                                     #MySQL所有数据导出复制到/root/$date-192.168.175.200.sql文件中        注意:yum安装最好是用命令mysqldump的绝对路径而用tar包安装,可以不用                       
    if [ $? -eq 0 ];then                                                                                                                   #判断上次执行命令是否正确,正确为0,不正确非0
    echo "数据备份完成"                                                                                                               #正确执行,输出结果
    scp /root/$date-192.168.175.200.sql 192.168.175.250:/data/rsyncdata/databak/                 #将导出的文件远程复制到192.168.175.250主机上的/data/rsyncdata/databak/文件中
    sleep  4                                                                                                                                   #睡眠4秒
    echo "远程备份完成"                                                                                                                #输出结果
    rm -rf /root/$date-192.168.175.200.sql                                                                                   #删除本地主机导出的数据
    fi                                                                                                                                               #结束

    3.设置执行计划任务

    (1)先将脚本加执行权限(x)

    命令:[root@vip ~]# chmod +x databak.sh

    (2)周期性任务要用的命令是crontab,那么这里有个选项-e(edit)表示编辑输入

    命令:[root@vip ~]# crontab -e

    0 * * * * sh /root/databak.sh             #分时日月周的顺序,这是每小时执行一次脚本

    (3)编写完这个计划任务以后,还是要检查一下这个任务是否在启动

    命令:[root@vip ~]# ps -le | grep cron

    S表示确实是启动的,如果没有启动可以输入命令:/etc/rc.d/init.d/cron start就可以了

    XTRABAKUP工具         在线热备备份过程中不锁库表

    主要含两个插件:

    rpm -ivh libev-4.15-1.el6.rf.x86_64rpm

    yum -y install percona-xtrabackup-24-2.4.7-1.e17.x86_64.rpm

    --redo-only                              日志合并                                                                        --apply-log                               准备恢复数据

    --copy-back                              拷贝数据                                                                       --incremental                            增量备份

    --incremental-basedir                增量备份时指定上一次备份数据存储的目录名              --incremental-dir                       准备恢复数据时指定增量备份数据存储的目录名

    --export                                     导出表信息                                                                    import                                        导入表空间

    --host                                        主机名                                                                           --user                                       用户名

    --port                                         端口号                                                                           --password                               密码

    --databases                               数据库名                                                                       --no-timestamp                            不用日期命名备份文件存储的子目录名

       完全备份                              用户名                   密码         备份目录名

    例:innobackupex  -user       root     -password 123456          /book              --no-timestamp        完全备份

    完全恢复

    例:   先   innobackupex   --apply-log   /book         准备恢复数据

             后    innobackupex  --copy-back     /book          恢复数据

    恢复完后/var/lib/mysql目录要改归属人如: chown -R mysql:mysql /var/lib/mysql

    恢复单张表

    innobackupex  -user       root     -password 123456   --databases="db5"       /book              --no-timestamp             这是备份db5库的文件

    数据库里打这个命令:  alter   table   db5.b discard tablespace     删除表空间数据

    innobackupex   --apply-log   --export  /book       导出表信息

    cp  /book/db5/b.{cfg,exp,idb}    /var/lib/mysql/db5/     拷贝表信息到db5库下

    chown mysql:mysql  /var/lib/mysql/db5/b.*              改所有者和所属组

    alter   table   db5.b import  tablespace         导入表空间数据库

    rm -rf /var/lib/mysql/db5/b.cfg       b.exp       删除这两个文件

    增量备份与恢复

    innobackupex  -user       root     -password 123456          /lock              --no-timestamp       完全备份

                                                                                          增量备份         存放目录              增量备份时指定上一次备份数据存储的目录名       不用日期命名备份文件存储的子目录名

    innobackupex  -user       root     -password 123456     --incremental       /book                   --incremental-basedir=/lock                               --no-timestamp          注: 用--incremental-basedir=/lock这个命令就可以使这次备份的数据只备份上次没备份过的数据

    日志合并

    scp  /book   192.168.17.11:/opt            scp  /lock   192.168.17.11:/opt              把两个文件拷贝到准备恢复的电脑上

    systemctl  stop mysql   关闭数据库

    innobackupex   --apply-log   --redo-only  /opt/lock  准备恢复数据 

    innobackupex --apply-log --redo-only /opt/lock --incremental-dir=/opt/book  //合并日志

    innobackupex --copy-back /opt/lock     恢复文件

    chown  -R mysql:mysql /var/lib/mysql //修改所有者与组用户

     systemctl  start mysqld //启动服务        

    登陆mysql查看是否恢复

  • 相关阅读:
    MYSQL: MYSQLBINLOG命令查看日志文件
    JAVA MAIL 发送邮件(SSL加密方式,TSL加密方式)
    Spring和Email整合详解
    java 版百度网盘功能
    Spring @Conditional注解 详细讲解及示例
    spring注解之@Import注解的三种使用方式(转载)
    Redis protected-mode属性解读
    5
    4
    3
  • 原文地址:https://www.cnblogs.com/xiaolei123/p/12176325.html
Copyright © 2011-2022 走看看