:上一片myloder搞崩溃,为什么百度的博文都是抄袭一模一样的,哎烦!

这一片文章我们来介绍物理备份工具xtracebackup!

首先是安装可以percona官网下载安装,下载rpm包直接yum安装即可!

  -y percona-xtrabackup--.-.el6.x86_64.rpm[root@test2 ~]# xtrabackup -vxtrabackup version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)#

XtraceBackup是由知名数据库软件服务企业Percona提供的一款热备工具,除了能够支持最为常见的MyISAM,INNODB引擎对象外,还支持XtraDB引擎。

查看percona的安装文件:

[root@test2 ~]# rpm -ql percona-xtrabackup--.-/usr/bin//usr/bin//usr/bin//usr/bin//usr/bin//usr/bin/ /usr/share/doc/percona-xtrabackup--./usr/share/doc/percona-xtrabackup--.//usr/share//man1/innobackupex./usr/share//man1/xbcrypt./usr/share//man1/xbstream./usr/share//man1/xtrabackup..gz

 

XtraceBackup备份有以下几个优点:

l  备份集高效,完整,可用。

l  备份任务执行过程中不会有阻塞任务

l  节省磁盘空间,降低网络带宽占用

l  备份集自动验证机制

l  恢复更快

xtrabackup必须在MySQL服务端执行(但是创建的备份集不一定是保存在本地),特别是通过innobackupex命令创建备份集时,由于操作需要连接数据库获取信息,因此还要指定的连接参数(用户名,密码),而且连接所使用的的用户,必须拥有正确的操作权限。

特别提醒:

percona官方在文档中说要在之后的版本中放弃innobackupex工具,推荐使用xtracebackupex工具,但是截至目前为止,我们公司线上环境的备份还是使用的innobackupex。因此这里我们首先介绍innobackupex的备份使用,然后再介绍xtracebackup的使用。

xtraceback2.4.x的官方文档地址:CLICK HEERE

innobackupex的备份与恢复

innobackupex的参数有很多,仅通过实例来讲解经常使用的,若需要某些参数可以查看官方文档!

一个完全备份

[root@test3 ~]# innobackupex --user=root --password=  /data/backup/          #备份很简单,/data/backup/为备份的目录 :: ::  version_check Connecting to MySQL server with DSN  as  :: :: ::, position  :: [] Writing backup- :: []        ... :: [ :: []        ...) to ( :: completed OK!

innobackupex会在备份目录下面创建以当前时间点命名的备份文件如下:

[root@test3 ~]# cd /data/backup/--28_18----28_18--/--28_18--]# -
backup-my.cnf: 为当前数据库配置文件的备份!
:当前备份文件对应的二进制日志文件和position位置,做PIT恢复时使用。[root@test3 2018-11-28_18-50-47]# uuid = 85662dd9-f2fb-11e8-a47c-fa336351fc00                #当前数据库的UUIDname = tool_name = innobackupex                                   #包含备份的工具,备份的命令,备份工具的版本,MySQL的版本tool_command = --user=root --password=... /data/backup/tool_version = 2.4.4ibbackup_version = 2.4.4server_version = 5.7.22-logstart_time = 2018-11-28 18:50:47                           #备份的开始时间end_time = 2018-11-28 18:51:12                             #备份的结束时间lock_time = 0binlog_pos = filename 'test3-bin.000001', position '21818'       #二进制日志的位置innodb_from_lsn = 0innodb_to_lsn = 13741543749                                      #刷新到lsn的位置partial = Nincremental = N                                                  #增量备份format = filecompact = N                                        compressed = Nencrypted = N[root@test3 2018-11-28_18-50-47]# cat         #包含checkpoint的信息,以及备份方式backup_type = full-backupedfrom_lsn = 0to_lsn = 13741543749last_lsn = 13741543758compact = 0recover_binlog_info = 0
xtrabackup_logfile:【未知】

执行恢复

恢复分为两个步骤:

准备恢复:所谓准备恢复,就是要为恢复做准备。就是说备份集没办法直接拿来用,因为这中间可能存在未提交或未回滚的事务,数据文件不一致,所以需要一个队备份集的准备过程。

[root@test3 ~]# innobackupex --apply-log /data/backup/2018-11-28_18-50-47/        #准备阶段的命令   181128 19:16:57 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully.           At the end of a successful apply-log run innobackupex           prints "completed OK!".innobackupex version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)xtrabackup: cd to /data/backup/2018-11-28_18-50-47xtrabackup: This target seems to be not prepared yet.InnoDB: Number of pools: 1.....InnoDB: 5.7.13 started; log sequence number 13741544981xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 13741545378181128 19:17:02 completed OK!

执行恢复:innobackupex提供了--copy-back参数,就是将指定的备份集,恢复到指定的路径下面(这个指定的路径是配置文件中datadir指定的路径)!

[root@test3 ~]# service mysqld stop       #首先停掉数据库Shutting down MySQL.... SUCCESS! [root@test3 ~]# rm -fr /data/mysql/*      #情况datadir指定的目录,若是线上环境,确保一定备份过[root@test3 ~]# innobackupex --copy-back /data/backup/2018-11-28_18-50-47/     #备份命令181128 19:20:58 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully.           At the end of a successful copy-back run innobackupex           prints "completed OK!".innobackupex version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)......181128 19:21:30 [01] Copying ./xtrabackup_info to /data/mysql/xtrabackup_info181128 19:21:30 [01]        ...done181128 19:21:30 [01] Copying ./xtrabackup_binlog_pos_innodb to /data/mysql/xtrabackup_binlog_pos_innodb181128 19:21:30 [01]        ...done181128 19:21:30 [01] Copying ./xtrabackup_galera_info to /data/mysql/xtrabackup_galera_info181128 19:21:30 [01]        ...done181128 19:21:30 [01] Copying ./ibtmp1 to /data/mysql/ibtmp1181128 19:21:30 [01]        ...done181128 19:21:30 completed OK!        #恢复完成

数据库恢复之后,启动数据库:

[root@test3 ~]# chown -R mysql:mysql /data/mysql/[root@test3 ~]# service mysqld startStarting MySQL.. SUCCESS!

至此一个完全备份的数据恢复工作完成!

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录,我们可以自定义备份集的名字如下:

[root@test3 ~]# innobackupex --user=root --password=123456 --no-timestamp /data/backup/test_`date +%F`  #指定备份集的名字[root@test3 ~]# cd /data/backup/[root@test3 backup]# ls           #查看备份集 test_2018-11-28[root@test3 backup]#

有时候因为socket文件不在默认位置,可以使用--socket指定位置:

[root@test2 ~]# innobackupex --user=root --password="7abec53701c3eefb" --no-timestamp /data/backup/testdb181128 19:40:10 innobackupex: Starting the backup operationIMPORTANT: Please check that the backup run completes successfully.           At the end of a successful backup run innobackupex           prints "completed OK!".181128 19:40:10  version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' as 'root'  (using password: YES).181128 19:40:10  version_check Connected to MySQL server181128 19:40:10  version_check Executing a version check against the server...181128 19:40:10  version_check Done.181128 19:40:10 Connecting to MySQL server host: localhost, user: root, password: set, port: 0, socket: (null)Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).[root@test2 ~]# innobackupex --user=root --password="7abec53701c3eefb" --no-timestamp --socket=/var/lib/mysql/mysql.sock  data/backup/testdb

 增量备份与恢复

增量备份时与全备一起结合使用的,因此这里我们会说明一个全部的过程。

1:首先对目前的数据库做一个全备

[root@test3 ~]# innobackupex --user=root --password= --no-timestamp /data/backup/full_backup[root@test3 ~]# cd /data/backup/[root@test3 backup]# ls                   #全部备份的文件full_backup

2:对数据做一些修改,如下

mysql> use sbtest;              #创建了一张表,然后插入了两条记录Database changedmysql> create table tb3(a varchar(5), sysTime datetime);Query OK, 0 rows affected (0.02 sec)mysql> insert into tb3 select "aa", now();Query OK, 1 row affected (0.01 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> insert into tb3 select "bb", now();Query OK, 1 row affected (0.01 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> select * from tb3;+------+---------------------+| a    | sysTime             |+------+---------------------+| aa   | 2018-11-29 09:14:00 || bb   | 2018-11-29 09:14:11 |+------+---------------------+2 rows in set (0.00 sec)

3:开始增量备份

[root@test3 backup]# innobackupex --user=root --password= --no-timestamp --incremental /data/backup/incre1 --incremental-basedir=/data/backup/full_backup
--no-timestamp: 上面已经说过,自己定义备份集的名字
--incremental /data/backup/incre1 :参数说明这次备份时一个增量备份,后面的路径指定增量备份的目录
--incremental-basedir=/data/backup/full_backup :增量备份时基于全备的,这个参数就是说明本次的增量备份时基于那次的全备,指向全备的目录文件

查看增量备份的文件记录:

[root@test3 incre1]# cat xtrabackup_checkpointsbackup_type = incremental                 #备份类型from_lsn = 13741583205                    #需要说明增量备份只能INNODB,xtrack存储引擎,备份是基于lsn的改变的! to_lsn = 13741590096last_lsn = 13741590105compact = 0recover_binlog_info = 0

备份完成之后,我们需要恢复操作,记得上面恢复第一步是什么?准备数据,也就是redo已经提交的事务,回滚未提交的事务。增量备份也是这样,但是操作有些不同。

把全备文件备份一下,把数据库二进制日志也保存一下:【这一步为了二进制增备恢复做准备

[root@test3 backup]# cp -r  full_backup full_backup_bak[root@test3 backup]# cp /data/mysql/test3-bin.000001 /data/backup/[root@test3 backup]# lsfull_backup  full_backup_bak  incre1  test3-bin.000001

恢复操作:

准备数据

~]# innobackupex  --apply-log --redo-only --use-memory=1G /data/backup/full_backup--use-memory=1G #表示使用的内存大小第二步:把增量备份在全备上面回放,也就是把增量备份附加到全备上。 innobackupex --apply-log --redo-only /data/backup/full_backup --incremental-dir=/data/backup/incre1:1:准备全部备份,保证文件的一致性。2:把所有的增量备份附加到全备备份上。如果有多个增量备份,则每一个增量备份文件都要执行附加操作。但是要注意顺序,可以查看增量备份的文件 根据lsn来确定文件的顺序

开始恢复

[root@test3 ~~]#  -fr /data/mysql

特别提示:

若有多个增量备份,则每一个增量备份都要重放到全备的文件中,一定要注意重放增量备份时候的顺序,可以在xtrabackup_checkpoints文件中根据lsn的大小来判断文件的顺序。

利用二进制日志做增量恢复

上面innobackupex的增量恢复,有点不方便,若是要恢复到某个时间点,显得有点无能为力了!但是二进制日志可以,二进制日志可以恢复指定时间点。

在上面的插入数据中,我们插入两条数据,但是一个要求,我们只要恢复到2018-11-29 09:14:00的数据,也就是插入的第二条数据不需要了!

我们上面备份了全备和二进制日志,现在就可以使用了!

基于全备恢复所有的数据,然后根据二进制日志把数据库恢复到我们要的时间点!

#执行全部备份的恢复
[root@test3 ~  innobackupex  --apply-log /data/backup/[root@test3 ~~]#   -fr /data/mysql/~]#  innobackupex --copy-back /data/backup/~]#   -~]#   -R mysql:mysql /data/mysql/~!~]# mysql -uroot - is .-, , Oracle and// or   help. Type  to >> sec)

 #执行基于二进制时间点的恢复

innobackupex备份的是,命令结束的时候的全部数据文件,可以在如下文件查看全备的时间信息:

#[root@test3 mysql]# = e44e6a70-f373-11e8-a5cd-=== --user=root --password=... --no-timestamp /data/backup/= .= .= .-= -- ::= -- ::= = filename , position = = === ===-bin.

导出要恢复时间段的二进制日志文件:

我们要截取的日志时间段是从 全备结束 到 2018-11-29 09:14:00 这个时间点的文件。全备结束时间点作为起始点,起始点有两种确定方式,第一种上面文件中

的end_time指定的时间点;第二种二进制日志的position位置。这两种方式都可以。

 

[root@test3 mysql]# cd /data/backup/[root@test3 backup]# mysqlbinlog --start-datetime="2018-11-29 09:12:51" --stop-datetime="2018-11-29 09:14:00" test3-bin.000001 > /root/bak.sql
--start-datetime : 指定起始的时间点。--stop-datetime:   指定结束的时间点。--start-position:  指定二进制日志开始日志点。--stop-position :  指定二进制日志结束的日志点。上面四个参数可以配合使用

 

然后把上面导出sql文件导入到MySQL服务中。

mysql> set sql_log_bin=0;          #导入时,若文件较大会产生很多二进制日志文件,可以先把二进制日志文件关闭,mysql> source bak.sql;             #导入文件,可以使用mysql直接导入mysql> set sql_log_bin=1;           #导入完成之后,开启二进制日志文件

查看数据:

mysql> use sbtest;   #完了演砸了,但是数据库已经存在了,说明这种方法是正确的!Database changedmysql> select * from tb3;Empty set (0.01 sec)mysql> show tables;+------------------+| Tables_in_sbtest |+------------------+| tb3              |+------------------+1 row in set (0.00 sec)

查看一下二进制日志:

[root@test3 backup]# mysqlbinlog test3-bin.000001.......#181129  9:13:47 server id 5  end_log_pos 1973 CRC32 0xcad0188f     Query    thread_id=13    exec_time=0    error_code=0SET TIMESTAMP=1543454027/*!*/;create table tb3(a varchar(5), sysTime datetime)/*!*/;# at 1973        #用时间截取的时候很可能是截取到了这个时间点就停止了,因此只有tb3这个表,没有后面的插入的第一条数据,因此我们选择用日志点截取数据#181129  9:14:00 server id 5  end_log_pos 2038 CRC32 0x670a3d93     Anonymous_GTID    last_committed=9    sequence_number=10    rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;# at 2038#181129  9:14:00 server id 5  end_log_pos 2120 CRC32 0x6a82446d     Query    thread_id=13    exec_time=0    error_code=0SET TIMESTAMP=1543454040/*!*/;BEGIN/*!*/;# at 2120#181129  9:14:00 server id 5  end_log_pos 2172 CRC32 0x7c9e9e8c     Table_map: `sbtest`.`tb3` mapped to number 117# at 2172#181129  9:14:00 server id 5  end_log_pos 2216 CRC32 0xda4461be     Write_rows: table id 117 flags: STMT_END_FBINLOG 'WD3/WxMFAAAANAAAAHwIAAAAAHUAAAAAAAEABnNidGVzdAADdGIzAAIPEgMFAAADjJ6efA==WD3/Wx4FAAAALAAAAKgIAAAAAHUAAAAAAAEAAgAC//wCYWGZoXqTgL5hRNo='/*!*/;# at 2216#181129  9:14:00 server id 5  end_log_pos 2247 CRC32 0x3b63c077     Xid = 92COMMIT/*!*/;# at 2247            #选择这个日志点#181129  9:14:11 server id 5  end_log_pos 2312 CRC32 0xbd634458     Anonymous_GTID    last_committed=10    sequence_number=11    rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;# at 2312#181129  9:14:11 server id 5  end_log_pos 2394 CRC32 0xb5eba130     Query    thread_id=13    exec_time=0    error_code=0SET TIMESTAMP=1543454051/*!*/;BEGIN/*!*/;# at 2394#181129  9:14:11 server id 5  end_log_pos 2446 CRC32 0xfcaf0343     Table_map: `sbtest`.`tb3` mapped to number 117# at 2446#181129  9:14:11 server id 5  end_log_pos 2490 CRC32 0x080cd871     Write_rows: table id 117 flags: STMT_END_FBINLOG 'Yz3/WxMFAAAANAAAAI4JAAAAAHUAAAAAAAEABnNidGVzdAADdGIzAAIPEgMFAAADQwOv/A==Yz3/Wx4FAAAALAAAALoJAAAAAHUAAAAAAAEAAgAC//wCYmKZoXqTi3HYDAg='/*!*/;# at 2490#181129  9:14:11 server id 5  end_log_pos 2521 CRC32 0x14fd7636     Xid = 93COMMIT/*!*/;SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;DELIMITER ;# End of log file/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

 

用日志点重新导入一下

mysqlbinlog --start-position=1227 --stop-position=2247 test3-bin.000001 > /root/bak.sql  #截取二进制日志

导入数据,查看数据:

mysql> source bak.sql;mysql>>+------------------+| Tables_in_sbtest |+------------------+| tb3              |+------------------+ row  set (>  *+------+---------------------+| a    | sysTime             |+------+---------------------+| aa   | -- :: |+------+---------------------+ row  set ( sec)

 

 

增量备份有两种方法,一个是利用innobackupex的方式进行增量备份另一个是利用二进制日志进行增量备份;建议使用二进制日志增量备份!

我们公司的备份策略时,每一天凌晨全部备份,然后备份当天的二进制日志文件,这样就可以把数据恢复到任何一个时间点!

流压缩

上面备份的数据比较少,并没有考虑磁盘空间问题。下面我们来备份一个大库!

[root@test2 mariadb]# du -sh47G    .#datadir的数据文件时47G,好吧也不是太大,能说明问题了!

查看备份之后的文件大小:

[root@test2 ~] innobackupex --user=root --password= --no-timestamp --socket=/var/lib/mysql/mysql.sock  /test/backup/testdb[root@test2 ~]# cd /test/backup/[root@test2 backup]# lstestdb[root@test2 backup]# du -sh     #可以看到备份的文件也是47G47G    .[root@test2 backup]# #innobackupex是逻辑备份,就是拷贝数据,因此备份文件和源文件的大小相差不大

引入流压缩:

[root@test2 backup]# innobackupex --user=root --password= --no-timestamp --socket=/var/lib/mysql/mysql.sock --stream= /tmp | -> testdb..gz--stram=tar  : 指定标准输出格式,一种是tar,另一种是xbstream;xbstream是xtraceback提供的,解压的时候需要专用命令处理,考虑通用性,选择用tar!/tmp         : 流格式标准输出,临时存放于/tmp目录下面| gzip ->    : 通过管道把流格式输出传给gzip进行压缩#压缩备份完之后,查看一下压缩之后文件的大小:[root@test2 backup]# ll -h testdb.tar.gz -rw-r--r-- 1 root root  Nov 29 11:27 testdb.tar.gz压缩之前文件是47个G未压缩的备份文件是47个G,压缩之后备份文件是18个G。

之前的使用流压缩备份出来的命令,解压时必须带上 “-i” 参数!

[root@test3 backup]#  -ixvf testdb..gz -C db/        !-C :直接把解压的文件放到指定的目录中,在恢复时,我们可以直接放到datadir指定的目录当中、[root@test3 backup]# tar -zxvf testdb.tar.gz -C db/        #!percona优化了很多参数

文件解压之后,然后需要准备文件也就是需要使用--apply-log选项,之后进行恢复就可以了!恢复过程可以参照上面的恢复过程!

percona还有一种压缩方式,官方文档给出的就是这种压缩方式:CLICK HERE!

~]# innobackupex --user=root --password= --socket= --no-timestamp --compress --compress-threads=  /test/backup/compress_db
--compress:开启压缩--compress-threads=

在xtraceback2.1.4之前需要使用一个简短的shell来解压备份出来的文件,在2.1.4之后可以使用如下命令解压!

[root@test2 backup]# innobackupex --decompress /test/backup/compress_db/    181129 13:55:50 innobackupex: Starting the decrypt and decompress operationIMPORTANT: Please check that the decrypt and decompress run completes successfully.           At the end of a successful decrypt and decompress run innobackupex           prints "completed OK!".innobackupex version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)181129 13:55:50 [01] decompressing ./ibdata1.qpsh: qpress: command not foundcat: write error: Broken pipeError: thread 0 failed.[root@test2 backup]# yum install -y qpressLoaded plugins: fastestmirrorSetting up Install ProcessLoading mirror speeds from cached hostfilebase                                                                                                                                                 | 3.7 kB     00:00     epel                                                                                                                                                 | 4.4 kB     00:00     mariadb                                                                                                                                              | 2.9 kB     00:00     zabbix                                                                                                                                               | 2.9 kB     00:00     No package qpress available.       #这里报错了没有qpress这个命令,这个命令需要从percona官网下载!网络有点渣,随后补上!Error: Nothing to do

compress压缩备份之后的数据是23个G,而流压缩备份是18个G,源文件大小是47个G!根据存储来说建议使用流压缩吧!

 

#备份指定的库,而不是全部的库!

#!/bin/bash#在备份指定库时,可以使用--include参数,也可以使用--tables-file参数,把指定的库写在文件中User="root"Hostip=x.x.x.xPasswd="x.x.x.x.x.x"Tbname="fi_repayplan.fi_reapyplan,fi_repayplan.fi_reapyplan_bank_once,fi_repayplan.fi_reapyplan_boc,fi_repayplan.fi_reapyplan_ccb,fi_repayplan.fi_reapyplan_irr,fi_repayplan.fi_reapyplan_irrmoney,fi_repayplan.fi_reapyplan_money,fi_repayplan.fi_reapyplan_once,fi_repayplan.fi_reapyplan_oncemoney"innobackupex --user=${User} --password=${Passwd} --host=${Hostip} --no-timestamp --include=${Tbname} --stream=tar /tmp | gzip > /data/fi_repayplan-`date +%F`.tar.gz

备份指定的库

 

#一个用于恢复的脚步

#!/bin/badh#Auth: wangxz#需要把要解压的文件作为脚本执行的参数#例如:sh huifu.sh xxx_2017-07-08_03-01-01.tar.gzDB_DIR=/data/mariadbDB_PORT=`netstat -lntp |grep 3306 | wc -l`PROCESS_NUM=`ps aux |grep mysql |wc -l`recover_log=/tmp/recover.logprint_str() ##打印说明信息{    echo -e "------------\e[0;31;1m $1 \e[0m-------------------"        sleep 1}check_ok()  ##一个检测函数{    if [ $? != 0 ]; then        print_str "Some error has happened"        exit    else        sleep 1    fi}##检测是否给出要解压的文件if [ $# !=  1 ]; then    print_str "Please give a tar file"    exitfi if [ $DB_PORT == 1 ] && [ $PROCESS_NUM == 3 ]; then    print_str "It's stopping the mysql service"    service mysql stop >> $recover_log    check_ok    sleep 3fiif [ $DB_PORT == 0 ] && [ $PROCESS_NUM == 1 ]; then    print_str "The mysql service is not running!"fi###清楚datadir目录print_str "Delete the datadir"rm -fr $DB_DIR/*check_oksleep 3###解压数据库print_str "Start Uncompress the backup file"tar -ixvf $1 -C $DB_DIR/>> $recover_logcheck_oksleep 3 ###准备数据库备份print_str "apply log the datadir"innobackupex --apply-log $DB_DIR  >> $recover_logcheck_oksleep 3###修改权限chown -R mysql:mysql $DB_DIRsleep 3###启动数据库service mysql start >>$recover_logcheck_ok###检测是否启动成功PROCESSLIST=`ps aux |grep mysql |wc -l`PORT_NUM=`netstat -lntp |grep 3306 | wc -l`if [ $PROCESSLIST -gt 1 ] && [ $PORT_NUM -le 1 ]; then    print_str "the mysql service has started successfully!"    rm -fr $recover_log    check_ok    print_str "The log was deleted successfully!"else    print_str  "Some unexcept things has happened"fi

恢复脚本

 

©著作权归作者所有:来自51CTO博客作者Jack_jason的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. MySQL备份与恢复-mysqldump备份与恢复
  2. mysql备份与恢复-xtracebackup
  3. rsync 备份服务搭建(完成)
  4. rsync实时备份备份服务搭建和使用指南
  5. 备份实战案例1
  6. 备份实战案例2
  7. 【DG】怎么使用Data Pump备份物理备库
  8. 【ASM】ASMCMD 磁盘元数据的备份与恢复实践
  9. SQL Server简单恢复模型

随机推荐

  1. android 防止键盘弹出的简单方法
  2. Monkey
  3. Android 屏幕常亮
  4. android indication
  5. Android中实现Gallery 点击放大
  6. Android UI开发第十七篇――Android Frag
  7. Android 深入研究LBS(基于位置的服务)
  8. AndroidManifest.xml 系统找不到指定的文
  9. Android Studio将so打包jar供其他项目引
  10. Android之Loader理解