mysql数据备份与恢复的几种方式,mysql中mysqlhotc
分类:数据库

mysqlhotcopy 是MySQL的热备工具,详细请看手册 ,为了安全起见大家给热备分配个客商: grant select, reload, lock tables on *.* to 'hotcopy'@'localhost' identified by '123456'; 假设大家只想热备此中的风姿洒脱某个数据就有相当大概率用到正则了,使用 mysqlhotcopy --help能够看来它帮助的选项,此中有:--regexp 这么些正则是和数据库名相称的,例如:备份以abc初阶的库,能够动用: mysqlhotcopy --flushlog -u='hotcopy' -p='123456' --regexp= ^abc /home/bak 备份以[a-d]初步的库,能够运用: mysqlhotcopy --flushlog -u='hotcopy' -p='123456' --regexp=^[a-d] /home/bak 尽管想备份有些数据库中的有些表的话,有希望要用到以下情势: 备份test库以abc开端的表: mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./^abc/ /home/bak 备份test库除abc此前的表: mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./~^abc/ /home/bak 备份test库以abc_a,abc_b,abc_c,abc_d,abc_e,......,abc_w开头的表: mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./^/ /home/bak

在mysql中备份数据库有mysqldump与mysqlhotcopy常用方法,可是mysqldump是mysql安装好后可径直行使的,页mysqlhotcopy须求安装perl援救,因为mysqlhotcopy是prel语言写的.

mysql数据库备份或苏醒大家常用的就是常用有直接拷贝数据库备份,mysqldump数据库备份与mysqlhotcopy数据库备份常用方法,上边大家联合来探视。

1安装。mysql已经设置好,在/usr/local/mysql目录下

mysqldump 命令格局

 代码如下

备份IP为192.168.1.100某个库:

复制代码

 代码如下

yum -y install perl perl-DBI

复制代码

wget

D:/APM/APMServ5.2.6/MySQL5.1/bin>
mysqldump -h 192.168.1.100 -u root -p ucenter >d:/sql/uc_20130306.sql
Enter password: ****

tar zxvf  DBD-mysql-3.0002.tar.gz

备份有些库下的某部表:

cd DBD-mysql-3.0002

 代码如下

perl Makefile.PL  –mysql_config=/usr/local/mysql/bin/mysql_config

复制代码

make

mysqldump -u root -p密码 dbname tablename>d:/test.sql

make test

备份全库:

make install

 代码如下

2备份某些数据库

复制代码

 代码如下

mysqldump -u root -p密码 –all-databases >d:/test.sql

复制代码

备份dbname 数据库的构造:
mysqldump -u root -p -d –add-drop-table dbname >d:/sql/a.sql
注脚:-d 未有数量 –add-drop-table 在种种create语句在此之前增添多少个drop table
导入数据库:

mkdir -p /data/word/
/usr/local/mysql/bin/mysqlhotcopy –user=root –password=123456  word /data/word

 代码如下

能够打包,假若打包名字为word.tar.gz

复制代码

3恢复

D:/APM/APMServ5.2.6/MySQL5.1/bin>
mysql –u root –p [dbname] < backup.sql

停止mysql数据库

参数表明:

 

Dbname参数表示数据库名称。该参数可选,能够内定数量库名,也足以不钦定。钦赐数据库名时,表示还原该数据库下的表。
不点名数据库名时,表示恢复特定的三个数据库

改善权限。运行mysql

mysqlhotcopy

例,mysqlhotcopy binlog 完毕mysql增量备份

它直接拷贝文件,所以它比mysqldump快。

mysqlhotcopy只是简短的缓存写入和文件复制的历程,占用能源和备份速度比mysqldump快非常多过多。极其相符大的数据库,它使用LOCK TABLES、FLUSH TABLES和cp或scp来极快备份数据库。它是备份数据库或单个表的最快的渠道,只可以运转在数据库目录所在的机械上。

可自动完成数据锁定专业,备份时不用闭馆服务器。

注意:mysqlhotcopy只支持MyISAM 引擎。

能刷新日志,使备份文件和日志文件的检查点能保持同步。

  1. 设置注重包

备份:mysqlhotcopy 援救二次性拷贝四个数据库,同一时间还支持正则表达。以下是多少个例证:

mysqlhotcopy是perl语言写的,因而须求设置perl的连续几日mysql的驱动:

 代码如下

 代码如下

复制代码

复制代码

/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root

# yum install perl-DBI.x86_64 
# yum install perl-DBD-MySQL.x86_64

testdb   /tmp (把数据库目录 testdb 拷贝到 /tmp 下)

2 mysqlhotcopy常用参数: 

/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root

-–allowold 要是目的存在不脱离(加上一个_old后缀重新命名它)
-–addtodest 增量备份,新的备份自动覆盖掉原?淼氖?荩?喽杂?llowold
-–checkpoint=db_name.tbl_name 在钦点的数据库,表中插入检查点条款。
-–debug 启用调节和测量试验输出。
-–dryrun,-n 报告动作而不施行它们。
-–flushlog 全数表锁定后刷新日志。
-–keepold 完毕后不删除以前(重新命名的)的目的。
-–method=command 复制方法(cp或scp)。
-–noindices 备份中不满含整个目录文件。这样使备份更加小、更加快。能够在后来用myisamchk -rq重新营造索引。
-–user=user_name,-u user_name 当连接服务器时使用的MySQL顾客名。
-–password=password,-p password 当连接服务器时使用的密码。请在乎该接收的密码值是不行选的,不象其余MySQL程序。
-–port=port_num,-P port_num 当连接本地服务器时使用的TCP/IP端口号。
-–quiet,-q 除了出现谬误时保持沉默。
-–regexp=expr 复制全部数据库名相称给出的正则表明式的数据库。
-–socket=path,-S path 用于连接的Unix套接字文件。
-–suffix=str 所复制的数额库名的后缀。
-–tmpdir=path 一时目录(替代/tmp)。
–resetmaster 全部表锁定后reset二进制日志
–resetslave 全部表锁定后reset master.info
–record_log_pos=db.table 钦点记录slave和master消息的表

testdb_1 testdb_2 testdb_n  /tmp

  1. 创制记录slave和master音讯的表

/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root

 代码如下

testdb./regex/  /tmp

复制代码

 

CREATE TABLE `mysqlhotcopy_log_pos` (
 `host` varchar(60) NOT NULL,
 `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `log_file` varchar(32) DEFAULT NULL,
 `log_pos` int(11) DEFAULT NULL,
 `master_host` varchar(60) DEFAULT NULL,
 `master_log_file` varchar(32) DEFAULT NULL,
 `master_log_pos` int(11) DEFAULT NULL,
 `relay_log_file` varchar(32) DEFAULT NULL,
 `relog_log_pos` int(11) DEFAULT NULL,
 PRIMARY KEY (`host`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

回复:mysqlhotcopy 备份出来的是整套数据库目录,使用时得以间接拷贝到 mysqld 钦定的 datadir (在这里间是 /usr/local/mysql/data/)目录下就可以,同期要专心权限的主题素材,如下例:

 

 代码如下

留意:mysqlhotcopy脚本未有记录relay_log_file和relog_log_pos值,同期,也不会把这几个音讯写入到文件。后边记录relay log和pos值音信和写入到文件是因小编改了mysqlhotcopy脚本内容。

复制代码

  1. 专项使用客商权限

cp -rf testdb /usr/local/mysql/data/

 代码如下

chown -大切诺基 nobody:nobody /usr/local/mysql/data/ (将 testdb 目录的属主改成 mysqld 运维顾客)

复制代码

从来复制

grant select, reload, lock tables on *.* to 'mysqlbackup'@'localhost' identified by 'www.bKjia.c0m'; 
grant select, delete, update, insert on mysql.mysqlhotcopy_log_pos to 'mysqlbackup'@'localhost' identified by 'www.bKjia.c0m';

windows系统下:直接复制很简短我们先停了mysql数据库,然后再复制出来就能够了

  1. 正则使用

linux系统中:

假设只想热备个中的一片段数据就有十分的大概率用到正则了.

 ①查找数据库文件贮存地点,MySql文件的后缀有三种情势*.MYD、*.MYI、*.frm;

5.1 数据库名匹配,比方:备份以ttlsa开头的库,可以行使:

 

 代码如下

 代码如下

复制代码

复制代码

# mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.bKjia.c0m' --regexp= ^ttlsa /backup/mysqlback

   find / -name *.MYD

备份以[a-f]初阶的库,能够行使:

      ②跻身数据仓库储存款和储蓄文件目录;

 代码如下

 代码如下

复制代码

复制代码

# mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.bKjia.c0m' --regexp=^[a-f] /backup/mysqlback

    cd /opt/lanmp/mysql-5.1.63/win/data/

5.2 备份某些数据库中的有个别表:

    ③使用copy命令把具有数据拷出去;

备份ttlsa_com库以user伊始的表:

 代码如下

 代码如下

复制代码

复制代码

    copy mysql /home

# mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.bKjia.c0m' ttlsa_com./^user/ /backup/mysqlback

    ④那时候只需将这个数据库文件调换到sql文件,那也是那篇随笔里自个儿要讲的首要,假使要求的时候再将sql文件用命令导入就能够;

备份ttlsa_com库除user_log早先的表:

    ⑤新建叁个数据库命名称叫mysqlbak,将刚刚拷出来的公文夹拷入新数据库的data文件夹;

 代码如下

 代码如下

复制代码

复制代码

# mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.bKjia.c0m' ttlsa_com./~^user_log/ /backup/mysqlback

    find / -name mysqlbak

备份ttlsa_com库以user_0,user_1,user_2……,user_9起头的表:

    cd /home/mysql
    copy * /www/wdlinux/mysql-5.1.63/var/mysqlbak/

 代码如下

    ⑥那时候就曾经得以见见新数据库mysqlbak里的数量了,跟原数据库mysql里的数量是同等的;

mysql数据备份与恢复的几种方式,mysql中mysqlhotcopy备份使用说明。复制代码

    ⑦使用命令导出数据库文件就能够。

# mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.bKjia.c0m' ttlsa_com./^(user_[0-9])/ /backup/mysqlback

 代码如下

 

复制代码

  1. 记录slave和master信息

    mysqldump -uroot -p mysqlbak > /home/mysql.sql

 代码如下

    ⑧那home文件夹下的文书mysql.sql文件正是易导入的数据库文件

复制代码

...

# perl ./mysqlhotcopy -u mysqlbackup -p www.bKjia.c0m -S /tmp/mysql.sock --record_log_pos=mysql.mysqlhotcopy_log_pos --keepold --record_log_pos2file --flushlog --regexp="[a-zA-Z0-9_-]" /backup/mysqlback/mysqlhotcopy_20131114_041307

注意:–record_log_pos2file参数是自己订正mysqlhotcopy加的。

7. 增量备份达成

基于6地点的master、slave音讯记录,来兑现增量备份。

 代码如下

复制代码

# mysqlbinlog --start-position=POS BIN_LOG_mysql数据备份与恢复的几种方式,mysql中mysqlhotcopy备份使用说明。FILE

8. 归纳备份脚本

 代码如下

复制代码

#!/bin/bash
 
mysqlhotcopy="/usr/local/mysql/bin/mysqlhotcopy2"
user="mysqlbackup"
password="www.bKjia.c0m"
socket="/tmp/mysql.sock"
 
backupdir="/backup/mysqlback"
datadir="mysqlhotcopy_`date %Y%m%d_%I%M%S`"
echo $datadir
target="$backupdir/$datadir"
retention_days_local="5"
 
status=($(mysql -u$user -p${password} -S $socket -e "show slave statusG" --skip-column-names | egrep  "Slave_IO_Running|Slave_SQL_Running" | awk '{print $2}'))
 
if [ "${status[0]}" == "Yes" ] && [ "${status[1]}" == "Yes" ]; then
   mkdir -p $target
   $mysqlhotcopy -u $user -p $password -S $socket  --record_log_pos=mysql.mysqlhotcopy_log_pos --keepold --record_log_pos2file --flushlog --regexp="[a-zA-Z0-9_-]" $target
   find $backupdir -name "^mysqlhotcopy_*_*" -type d -mtime ${retention_days_local} |  xargs rm -rf
else
  echo "slave error"
fi

 

与mysqldump比较:

1、前边二个是多少个高效文件意义上的COPY,后面一个是一个数据库端的SQL语句集结。
  2、前面多个只好运转在数据库目录所在的机器上,后面一个能够用在长途客商端,可是备份的文书也许封存在服务器上。
  3、相仿的地点都是在线推行 LOCK TABLES 以致 UNLOCK TABLES
  4、前边三个恢复生机只须求COPY备份文件到源目录覆盖就能够,前者要求导入SQL文件到原库中。(source 或 mysql < bakfile.sql)
  5、前面一个只适用于 MyISAM 引擎,而后则则可同一时候使用于MyISAM引擎和InodDB引擎.
  6、前面一个在接受前必得安装perl-DBD-mysql包,而后人则不须求.

tar zxvf  word.tar.gz

 

...

本文由澳门新萄京发布于数据库,转载请注明出处:mysql数据备份与恢复的几种方式,mysql中mysqlhotc

上一篇:澳门新萄京MYSQL创建数据库时候直接指定编码和排 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 澳门新萄京:MySQL配置文件详解,innodb重要参数
    澳门新萄京:MySQL配置文件详解,innodb重要参数
    1. innodb_lock_wait_timeout 官方网址说:从5.7.18发端不在二进制包中提供my-default.cnf文件。参谋:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html I assume the MyS
  • 澳门新萄京ProxySQL初体验
    澳门新萄京ProxySQL初体验
      Preface       Aswe all know,it's a common sense that separate reading and writingoperations can immensely increse the performance of MySQLdatabase.Especially the query operations by executing sel
  • 行使SqlServer中的float类型时意识的标题,及应用思
    行使SqlServer中的float类型时意识的标题,及应用思
      摘要: 下文陈述使用roundsql函数,对数值型数据开展舍入操作 实施意况:sqlserver 二零一零 numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,
  • SQL函数大全,常用系统函数
    SQL函数大全,常用系统函数
    摘要:下文收集了sqlserver函数教程,为每一个函数都进行了相关举例说明, 系统函数用于获取有关计算机系统、用户、数据库和数据库对象的信息。系统函
  • SQL内外左右交叉连接,交叉连接
    SQL内外左右交叉连接,交叉连接
    在查询多少个表时,大家平常会用“连接查询”。连接是关周全据库模型的首要特色,也是它有别于于其余种类数据库管理种类的一个注脚。   SQL左右连接