一:前期准备

至少需要两台主机

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             #不需要密码直接连接

MySQL备份到远程FTP代码 mysql 远程备份_MySQL备份到远程FTP代码

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                                                                                                                                               #结束

MySQL备份到远程FTP代码 mysql 远程备份_mysql_02

 

 

3.设置执行计划任务

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

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

 

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

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

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

MySQL备份到远程FTP代码 mysql 远程备份_增量备份_03

 

 

 

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

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

MySQL备份到远程FTP代码 mysql 远程备份_恢复数据_04

 

 

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

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

systemctlmysqld//启动服务

登陆mysql查看是否恢复