mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能运行在数据库目录所在的机器上.与mysqldump备份不同,mysqldump属于逻辑备份,备份时是执行的sql。

mysql5.7已经没有这个命令了,多用于mysql5.5之前。mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库或单个表,属于裸文件备份(物理备份),只能用于MyISAM引擎的数据库。本质是使用锁表语句,然后cp或scp。

一、CentOs 7 mysqlhotcopy 安装

[root@localhost ~]# yum install perl-DBD* -y

或者编译安装

yum install -y gcc
yum install -y perl-ExtUtils-MakeMaker perl-Devel-CheckLib perl-CPAN wget -i -c https://cpan.metacpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.047.tar.gz
tar zxvf DBD-mysql-4.047.tar.gz
cd DBD-mysql-4.047
perl Makefile.PL
make && make install

二、备份

[root@localhost ~]# /bin/mysqlhotcopy -u root -p '' --addtodest mysqlname /opt/sql_back/

三、还原

[root@localhost~]# cp -arp /opt/sql_back/mysqlname /var/lib/mysql/        --将备份的数据移到mysql数据根目录

四、备份脚本

1.添加定时执行。

#每一小时进行mysql的备份
* * * * /data/shell/mysql_hotbackup.sh

2. 备份脚本

#!/bin/bash

HOST="192.168.1.128"
USER="root"
PASSWORD="root"
BACKUP_PARENT_DIR="/data/backup/";
BACKUP_DIR_NAME="mysql_data" CURRENT_DIR=$(pwd)
CURRENT_DAY=$(date +%Y%m%d%H)
DELETE_DAY=$(date -d "2 days ago" +%Y%m%d) #这里面有两个参数,-A、-N,-A的含义是不去预读全部数据表信息,这样可以解决在数据表很多的时候卡死的问题
#-N,很简单,Don't write column names in results,获取的数据信息省去列名称
SHOW_DATABASES_CMD="mysql -h${HOST} -u${USER} -p${PASSWORD} --default-character-set=utf8 -N -e \"SHOW DATABASES\""
db_result=$(eval "$SHOW_DATABASES_CMD") #dump_data=./data.user.txt
#>$dump_data
#echo -e "$result" > $dump_data
##这里要额外注意,echo -e "$result" > $dump_data的时候一定要加上双引号,不让导出的数据会挤在一行 db_name_str=$(echo ${db_result} | sed 's/ /,/g' | sed 's/\n//g' | sed 's/-/@002d/g') OLD_IFS="$IFS"
IFS=","
db_name_array=($db_name_str)
IFS="$OLD_IFS" echo "Start MySql Hot Backup......";
echo ""
echo "" #进入备份目录
echo "cd ${BACKUP_PARENT_DIR}";
cd ${BACKUP_PARENT_DIR} #创建myql备份目录
echo ""
echo "mkdir MySql backup dir: ${BACKUP_DIR_NAME}"
mkdir -p ${BACKUP_DIR_NAME} #备份数据
echo ""
echo ""
backup_dir=$(cd "${BACKUP_PARENT_DIR}/${BACKUP_DIR_NAME}/"; pwd)
for db_name in ${db_name_array[@]}
do
###跳过热备份
if [ "$db_name"x = "information_schema"x ] || [ "$db_name"x = "mysql"x ] || [ "$db_name"x = "performance_schema"x ]; then
continue
fi echo "mysqlhotcopy -h ${HOST} -u ${USER} -p ${PASSWORD} --addtodest ${db_name} ${backup_dir}";
mysqlhotcopy -h ${HOST} -u ${USER} -p ${PASSWORD} --addtodest ${db_name} ${backup_dir}
done #压缩备份
echo ""
echo ""
echo "Current dir:$(pwd)"
echo ""
echo "Compress MySql backup data......"
echo "tar zcf ./mysql_data_${CURRENT_DAY}.tar.gz ${BACKUP_DIR_NAME}"
tar zcf "./mysql_data_${CURRENT_DAY}.tar.gz" ${BACKUP_DIR_NAME}
echo "" #删除之前的备份
delete_file="./mysql_data_${DELETE_DAY}*.tar.gz"
echo "Delete MySql backup data of two days ago: ${delete_file}"
if [ -d "$delete_file" ];
then
echo "不允许删除目录"
else
echo "rm -rf ${delete_file}"
rm -rf ${delete_file}
fi #回到当前目录
echo ""
echo "Return to source directory:${CURRENT_DIR}";
cd ${CURRENT_DIR} echo ""
echo ""
echo "MySql Hot Backup is Successfully !"; #https://blog.csdn.net/xfcy1990/article/details/52120581
#https://www.cnblogs.com/kissdodog/p/4174421.html
#https://www.cnblogs.com/fire909090/p/7202584.html
#https://blog.51cto.com/853056088/1952430
#https://www.cnblogs.com/jiayy/p/3766286.html

PS:

https://blog.csdn.net/xfcy1990/article/details/52120581
https://www.cnblogs.com/kissdodog/p/4174421.html
https://www.cnblogs.com/fire909090/p/7202584.html
https://blog.51cto.com/853056088/1952430
https://www.cnblogs.com/jiayy/p/3766286.html

MySQL 数据热备份的更多相关文章

  1. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  2. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  3. MySQL数据的主从复制、半同步复制和主主复制详解-转

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  4. Mysql的热备份[转载]

    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始 ...

  5. MySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码 这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.数据备份 1.使用 ...

  6. MySQL 数据备份与还原 转载

    MySQL 数据备份与还原 一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldum ...

  7. MySQL数据物理备份之xtrabackup

    percona-xtrabackup 它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份.它不暂停服务创建Innodb热备份: 为mysql ...

  8. MySQL数据备份概述

    MySQL备份类型 热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 物理备份与逻辑备份 (从对象来分) 物理备份 ...

  9. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

随机推荐

  1. PAT Basic 1007

    1007 素数对猜想 (20 分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“素数对猜想 ...

  2. JavaWeb之 JSP:自定义标签的创建和使用

    当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的java类, ...

  3. NLP 工具类库

    NLPIR http://www.nlpir.org/ HanLP https://github.com/hankcs Apache OpenNLP   https://opennlp.apache. ...

  4. MySQL创建用户的三种方法 (并授权)转

    前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名 ...

  5. Grok patterns 汇总

    S3_REQUEST_LINE (?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawreques ...

  6. [赶集网] 【MySql】赶集网mysql开发36条军规

    [赶集网] [MySql]赶集网mysql开发36条军规 (一)核心军规(1)不在数据库做运算   cpu计算务必移至业务层:(2)控制单表数据量   int型不超过1000w,含char则不超过50 ...

  7. SQL批量更新数据

    SQL批量更新数据 step1:导入Excel数据, 具体见百度.注意点:一列中含有float型数据和文本数据的时候,导入要将Excel中的表格属性改成文本,或在数字项目前加个单引号.   step2 ...

  8. 【linux】【tomcat】linux下定时重启tomcat

    步骤: 一.创建脚本文件,本脚本文件用于停止,重启tomcat运行的java进程,并设置脚本文件权限 1.新建脚本文件tomcat.sh [注意文件创建的路径] [查看当前路径的命令:   pwd] ...

  9. 【转】fiddler抓包HTTPS请求

    本文转自:http://blog.csdn.net/idlear/article/details/50999490 fiddler抓包HTTPS请求 跟着教程来,保证100%成功抓HTTPS包 教程开 ...

  10. python下的selenium和PhantomJS

    一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览 ...