男篮世界杯赌球:使用mydumper多线程备份MySQL数据

参数:mydumper:复制代码 代码如下:root@dd:~/mydumper-0.5.2# ./mydumper --helpUsage: mydumper [OPTION...] multi-threaded MySQL dumping

复制代码 代码如下:apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev g cmake .make

复制代码 代码如下:./mydumper -u root-p 123456 -h 192.168.220.252 -P 3306 -m -B test -T b,a,c,d,e,g,f,h,i -o /home/zhoujy/bak/

复制代码 代码如下:./mydumper -u root -p 123456 -h 192.168.200.25 -P 3306 -m -c -b --regex=tmp.* -B test -o /home/zhoujy/bak/

2:还原:还原到另一台服务器,先建立要还原的数据库(chushihua)

backup = os.system('')

myloader:复制代码 代码如下:root@dd:~/mydumper-0.5.2# ./myloader --helpUsage: myloader [OPTION...] multi-threaded MySQL loader

复制代码 代码如下:metadata:元数据 记录备份开始和结束时间,以及binlog日志文件位置。table data:每个表一个文件table schemas:表结构文件binary logs: 启用--binlogs选项后,二进制文件存放在binlog_snapshot目录下daemon mode:在这个模式下,有五个目录0,1,binlogs,binlog_snapshot,last_dump。备份目录是0和1,间隔备份,如果mydumper因某种原因失败而仍然有一个好的快照,当快照完成后,last_dump指向该备份。

mysqldump Cost Time :483smydumper Cost Time :337s

def mydumper_data(): t1 = time.time() backup = os.system('mydumper -u root -p 123456 -h 192.168.200.25 -P 3306 -B test -o /home/zhoujy/bak/') t2 = time.time() t = round(t2-t1) print "mydumper Cost Time %s" %t

复制代码 代码如下:1:轻量级C语言写的 2:执行速度比mysqldump快10倍 3:事务性和非事务性表一致的快照(适用于0.2.2以上版本) 4:快速的文件压缩 5:支持导出binlog 6:多线程恢复(适用于0.2.1以上版本) 7:以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本) 8:开源 (GNU GPLv3)

如上所示,备份文件已经是压缩的了,并且备份出了tmp.*匹配出来的所有表,二进制日志也被备份到了binlog_snapshot文件中,并且也是被压缩的。3)还原,表存在先删除:这里需要注意,使用该参数,备份目录里面需要有表结构的备份文件。

2)压缩备份文件,备份binlog,正则表达式备份表

drwx------ 2 zhoujy zhoujy 4.0K 2013-11-14 21:16 binlog_snapshot-rw-rw-r-- 1 zhoujy zhoujy 133 2013-11-14 21:16 metadata-rw-rw-r-- 1 zhoujy zhoujy 94K 2013-11-14 21:16 test.tmp_0808.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 75K 2013-11-14 21:16 test.tmp_0809.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 25K 2013-11-14 21:16 test.tmp_0813.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 208K 2013-11-14 21:16 test.tmp_0826.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 915 2013-11-14 21:16 test.tmp_0827.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 901 2013-11-14 21:16 test.tmp_0912.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 2.1K 2013-11-14 21:16 test.tmp_0916.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 622K 2013-11-14 21:16 test.tmp_0918_a.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 28M 2013-11-14 21:16 test.tmp_0918_ff.sql.gz

总结:从上面的测试分析中看出mydumper可以提升备份还原的效率,提升多少受限于磁盘的IO能力,在使用前做好磁盘IO的评估,大家可以尝试使用该工具。

从上面的时间来看,mydumper 确实提升了备份数据,还原也同理。

安装:解压后,有安装说明

Help Options: -?, --help Show help options

-- -------------------------------------------------- MYSQL_CONFIG = /usr/bin/mysql_config-- CMAKE_INSTALL_PREFIX = /usr/local-- BUILD_DOCS = ON-- RUN_CPPCHECK = OFF-- Change a values with: cmake -DVariable=Value-- -------------------------------------------------- -- Configuring done-- Generating done-- Build files have been written to: /root/mydumper-0.5.2root@dd:~/mydumper-0.5.2# makeScanning dependencies of target mydumper[ 20%] Building C object CMakeFiles/mydumper.dir/mydumper.c.o[ 40%] Building C object CMakeFiles/mydumper.dir/binlog.c.o[ 60%] Building C object CMakeFiles/mydumper.dir/server_detect.c.o[ 80%] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.oLinking C executable mydumper[ 80%] Built target mydumperScanning dependencies of target myloader[100%] Building C object CMakeFiles/myloader.dir/myloader.c.oLinking C executable myloader[100%] Built target myloader

1:备份复制代码 代码如下:./mydumper -u zjy -p ##### -h 192.168.220.245 -P 3306 -B chushihua -o /home/zhoujy/bak/

1:

复制代码 代码如下:./myloader -u root -p 123456 -h 192.168.200.25 -P 3307 -B chushihua -d /home/zhoujy/bak/

mysqldump:其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑。这样,mydumper能更好的完成备份任务。Mydumper主要特性:是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具,开发人员主要来自MySQL,Facebook,SkySQL公司。

if __name__ =='__main__': mysqldump_data() mydumper_data()

测试:测试基本用法

分析:mydumper把数据和表结构分开备份,并且把二进制日志备份出来单独放到一个文件中。

复制代码 代码如下:#!/usr/bin/env python#coding=utf-8import MySQLdbimport osimport sysimport time

def mysqldump_data(): t1 = time.time() backup = os.system('mysqldump --no-defaults -uroot -p123456 -h192.168.200.25 --default-character-set=utf8 test /home/zhoujy/test.bak') t2 = time.time() t = round(t2-t1) print "mysqldump Cost Time %s" %t

备份analyzedxy数据库到/home/zhoujy/bak/ 目录中,查看是否多线程:

复制代码 代码如下:wget download/mydumper-0.5.2.tar.gz

下载安装:环境:Ubuntu 12.04

更多的参数效果,请自己测试。最后测试:用mysqldump和mydumper进行对比测试。

上面显示确实是4个线程在还原。进一步测试:测试一些常用的参数1):备份指定表,并且不要导出表结构

Help Options: -?, --help Show help options

Application Options: -B, --database 需要备份的库 -T, --tables-list 需要备份的表,用逗号分隔 -o, --outputdir 输出文件的目录 -s, --statement-size 生成插入语句的字节数, 默认 1000000 -r, --rows 分裂成很多行块表 -c, --compress 压缩输出文件 -e, --build-empty-files 即使表没有数据,还是产生一个空文件 -x, --regex 正则表达式: 'db.table' -i, --ignore-engines 忽略的存储引擎,用逗号分隔 -m, --no-schemas 不导出表结构 -k, --no-locks 不执行共享读锁 警告:这将导致不一致的备份 -l, --long-query-guard 设置长查询时间,默认60秒 --kill-long-queries kill掉长时间执行的查询 -b, --binlogs 导出binlog -D, --daemon 启用守护进程模式 -I, --snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下 -L, --logfile 日志文件 -h, --host The host to connect to -u, --user Username with privileges to run the dump -p, --password User password -P, --port TCP/IP port to connect to -S, --socket UNIX domain socket file to use for connection -t, --threads 使用的线程数,默认4 -C, --compress-protocol 在mysql连接上使用压缩协议 -V, --version Show the program version and exit -v, --verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

上面显示确实是4个线程在备份,查看备份文件:

Application Options: -d, --directory 备份文件所在的目录 -q, --queries-per-transaction 每次执行查询数量, 默认1000 -o, --overwrite-tables 如果表存在则先删除。这里注意下,使用该参数,需要备份时候要备份表结构,不然会出问题 -B, --database 需要还原的数据库 -e, --enable-binlog 启用二进制恢复数据 -h, --host The host to connect to -u, --user Username with privileges to run the dump -p, --password User password -P, --port TCP/IP port to connect to -S, --socket UNIX domain socket file to use for connection -t, --threads 使用的线程数量,默认4 -C, --compress-protocol 连接上使用压缩协议 -V, --version Show the program version and exit -v, --verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

复制代码 代码如下:root@dd:~/mydumper-0.5.2#男篮世界杯赌球, cmake .-- The CXX compiler identification is GNU-- Check for working CXX compiler: /usr/bin/c -- Check for working CXX compiler: /usr/bin/c -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Using mysql-config: /usr/bin/mysql_config-- Found MySQL: /usr/include/mysql, /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so;/usr/lib/x86_64-linux-gnu/libpthread.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libm.so;/usr/lib/x86_64-linux-gnu/librt.so;/usr/lib/x86_64-linux-gnu/libdl.so

复制代码 代码如下:root@zhoujy:/home/zhoujy/bak# ls -lh-rw-r--r-- 1 root root 322 2013-11-14 17:59 chushihua.dba_hospital_all_name-schema.sql-rw-r--r-- 1 root root 16M 2013-11-14 17:59 chushihua.dba_hospital_all_name.sql-rw-r--r-- 1 root root 221 2013-11-14 17:59 chushihua.dba_hospital-schema.sql-rw-r--r-- 1 root root 658 2013-11-14 17:59 chushihua.dba_hospital.sql-rw-r--r-- 1 root root 198 2013-11-14 17:59 chushihua.dba_jobTitle-schema.sql-rw-r--r-- 1 root root 300 2013-11-14 17:59 chushihua.dba_jobTitle.sql-rw-r--r-- 1 root root 261 2013-11-14 17:59 chushihua.dba_locatedCity-schema.sql-rw-r--r-- 1 root root 202K 2013-11-14 17:59 chushihua.dba_locatedCity.sql

复制代码 代码如下:| 4937639 | zjy | 192.168.200.25:34781 | NULL| Query | 0 | NULL | show processlist || 4937677 | zjy | 192.168.200.25:34791 | NULL| Query | 10 | Writing to net | SELECT /*!40001 SQL_NO_CACHE */|| 4937678 | zjy | 192.168.200.25:34792 | NULL| Query | 5 | Writing to net | SELECT /*!40001 SQL_NO_CACHE */ || 4937679 | zjy | 192.168.200.25:34793 | NULL| Query | 10 | Writing to net | SELECT /*!40001 SQL_NO_CACHE */ || 4937680 | zjy | 192.168.200.25:34794 | NULL| Query | 10 | Writing to net | SELECT /*!40001 SQL_NO_CACHE */ |

2:

和备份一样查看是否多线程:

复制代码 代码如下:| 19 | root | | NULL | Query | 0 | init | show processlist|| 30 | root | | chushihua | Query | 5 | update| INSERT INTO || 31 | root | | chushihua | Query | 5 | update| INSERT INTO || 32 | root | | chushihua | Query | 5 | update| INSERT INTO || 33 | root | | chushihua | Query | 5 | update| INSERT INTO |

CMake Warning at docs/CMakeLists.txt:9 (message): Unable to find Sphinx documentation generator

mysqldump Cost Time :162smydumper Cost Time :61s

复制代码 代码如下:./myloader -u root -p 123456 -h 192.168.200.25 -P 3306 -o -B test -d /home/zhoujy/bak/

zhoujy@zhoujy:~/bak$ ls -lh-rw-rw-r-- 1 zhoujy zhoujy 3.4K 2013-11-14 20:57 test.a.sql-rw-rw-r-- 1 zhoujy zhoujy 1.6M 2013-11-14 20:57 test.b.sql-rw-rw-r-- 1 zhoujy zhoujy 7.8M 2013-11-14 20:57 test.c.sql-rw-rw-r-- 1 zhoujy zhoujy 1.7M 2013-11-14 20:57 test.d.sql-rw-rw-r-- 1 zhoujy zhoujy 303K 2013-11-14 20:57 test.e.sql-rw-rw-r-- 1 zhoujy zhoujy 517K 2013-11-14 20:57 test.f.sql-rw-rw-r-- 1 zhoujy zhoujy 646K 2013-11-14 20:57 test.g.sql-rw-rw-r-- 1 zhoujy zhoujy 394K 2013-11-14 20:57 test.h.sql-rw-rw-r-- 1 zhoujy zhoujy 34K 2013-11-14 20:57 test.i.sql-rw-rw-r-- 1 zhoujy zhoujy 75 2013-11-14 20:57 metadata

生成2个工具:mydumper,myloader

测试了2个数据库:

本文由美洲杯赌球发布于计算机教程,转载请注明出处:男篮世界杯赌球:使用mydumper多线程备份MySQL数据

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。