linux上 mysql数据库备份与还原 (xtrabackup工具安装与使用)

由于我安装的mysql5.7是最新的版本,而一些老的xtrabackup版本已经不兼容,所以在这里我下载最新的xtrabackup工具

注:我这里没有应用全备和整备,而是用了部分备份,即一个数据库的备份和恢复

注  这是远程备份,备份到指定服务器


环境:  centos7

           mysql 5.7

          xtrabackup 2.4.9

         远程连接主机免密码登录 ,  
         在运行服务器上执行   ssh-keygen
         一路回车,还是不要添加密码的好,这时候可以注意一下公钥,秘钥保存位置  
         把公钥放到备份的服务器上 ssh-copy-id root@192.168.1.1  
        (注意:这两台linux必须能ping通) 


一 .安装最新版的xtrabackup

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz

tar zxvf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz

cd percona-xtrabackup-2.4.9-Linux-x86_64

cp bin/innobackupex /usr/bin

cp bin/xtrabackup* /usr/bin

yum install perl-DBI -y

yum install perl-DBD-MySQL -y

yum install perl-Time-HiRes -y

yum install perl-IO-Socket-SSL –y

yum install perl-TermReadKey.x86_64 –y

yum install -y perl-Digest-MD5

 wget https://www.percona.com/downloads/percona-toolkit/2.2.16/RPM/percona-toolkit-2.2.16-1.noarch.rpm

rpm -ivh percona-toolkit-2.2.16-1.noarch.rpm

 安装测试是否成功  xtrabackup -version

二.在运行服务器上.创建shell脚本,存放备份数据库相关内容

   cd /home

   vim mysql_data.sh

   添加如下内容:

# vim  mysql_xtr.sh
#!/bin/sh 
INNOBACKUPEX_PATH=innobackupex  #INNOBACKUPEX的命令
INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX_PATH  #INNOBACKUPEX的命令路径,自己查找
MY_CNF=/etc/my.cnf   #mysql的配置文件,自己查找
MYSQL=/usr/bin/mysql
BACKUP_DIR=/home/longrang # 备份的主目录
DB_NAME=database        #要备份的数据库名字
DB_USER=root          #数据库登录名
DB_PASS=root           #数据库登陆密码
DAYS=5                #每次备份保存的时间
# logfiledate=backup.`date +%Y%m%d%H%M`.txt 日志文件
DATE=`date +%Y%m%d%H%M`        #当前时间
TAR_SQL="mysqldata_bak_$DATE.tar.gz"
Host=192.168.1.1    #远程备份主机地址
User=root      #远程备份主机用户
# 检查执行环境

if [ ! -x $INNOBACKUPEXFULL ]; then
 error "$INNOBACKUPEXFULL未安装或未链接到/usr/bin."
fi

$INNOBACKUPEXFULL --defaults-file=$MY_CNF  --user=$DB_USER --password=$DB_PASS  --databases=$DB_NAME --stream=tar /. | ssh $User@$Host \ "gzip >$BACKUP_DIR/$TAR_SQL"

   3.将脚本文件设置成可执行文件类型

      chmod +x /home/mysql_xtr.sh

     可测试脚本是否能运行,两种方法:  

            1.  cd   /home
                ./mysql_xtr.sh

             2. bash –x /home/mysql_xtr.sh

     4.添加计划任务(每天一点三十备份)

             crontab -e

             30 1 * * *  /home/mysql_xtr.sh   

      5.重启定时服务

        service crond restart

三 在备份服务器上

     1.在备份服务器上创建备份目录  (此测试生成目录放在home下)
         cd  /home

        mkdir  longrang           注:此路径必须和上面脚本中的备份路径一致

       2.在home目录下创建删除五天外的备份文件脚本

        vim dele.sh

       添加如下内容:

DAYS=5
BACKUP_DIR=/home/longrang    #(这个文件和上面备份的文件一致)
#删除过期的文件
find $BACKUP_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \;        #删>除5天前的备份文件(注意:{} \;中间有空格)

    3. 将脚本文件设置成可执行文件类型:

        chmod +x /home/dele.sh

     4. 检测是否已安装crontab

          执行 crontab -e 命令如果报 command not found,就表明没有安装.

           安装命令 #   yum install -y vixie-cron

      5.添加计划任务   (每天一点三十执行)

         crontab -e 

        30 1 * * *  /home/dele.sh

       6.重启定时任务

         service crond restart

     四 xtrabackup 部分备份恢复

        在备份主机上操作

        1.先解压缩(必须带i命令)到指定文件夹

        tar  ixvf  xtra.tar  -C  /home/longlong

        2.准备部分备份

        innobackupex --apply-log --export /home/longlong

       3.恢复部分备份

            1. 停止MySQL:service mysqld stop
            2. 将第二步准备过的文件拷贝到/var/lib/mysql下:\cp /home/longlong/* /var/lib/mysql -rf
            3. 给文件赋权:chown -R mysql:mysql /var/lib/mysql/
            4 启动MySQL:service mysqld start

      测试一下,你就知道.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值