Linux下mydumper报错libmysqlclient.so_16 not defined怎么办?

以上由提供
当前位置:
> 详细页面
Linux系统如何安装和使用supportconfig工具
时间: 16:02作者:qipeng
上一页1共4页
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
系统教程栏目
热门系统教程
在笔记本电脑早已普及到会议室的这个年代,商务人士拿笔记...
热门系统下载
最新系统教程
热门软件下载
Copyright&2011 系统之家(www.xitongzhijia.net) 版权所有 闽ICP备号-1
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
如侵犯到您的权益,请及时通知我们,我们会及时处理。MySQL多线程备份工具:mydumper
Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。分别来自MySQL,Facebook,SkySQL公司。目前已经在有一些大型产品业务上测试并使用了Mydumper。分稳定版和开发版两种,目前最新稳定版是0.2.3和最新开发版是0.5.1。恢复时可使用myloader工具。
Mydumper主要特性:
轻量级C语言写的代码
比mysqldump接近快10倍的速度
事务性和非事务性表一致的快照(适用于0.22+)
快速的文件压缩(File compression on-the-fly)
支持导出binlog
多线程恢复( 0.2.1+)
可以用守护进程的工作方式,定时的扫描和输出连续的二进制日志
开源 (GNU GPLv3)
项目主页:
mydumper工作步骤:
wget http://launchpadlibrarian.net//mydumper-0.5.1.tar.gz
我在CentOS 6.0上测试的,安装前
#yum install glib2-devel mysql-devel zlib-devel pcre-devel
#apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev //Ubuntu/Debian用户
#tar -xzvf mydumper-0.5.1.tar.gz
#cd mydumper-0.5.1
#make install
# mydumper -u root -p 123456 -P 3307 -B test_innodb -o /backup/database/export-
[root@localhost export-]# ls
metadata test_innodb.t_innodb-schema.sql test_innodb.t_innodb.sql
[root@localhost export-]# cat metadata
Started dump at:
SHOW MASTER STATUS:
Log: mysql-bin.000019
Finished dump at:
# myloader -u root -p 123456 -P 3307 -d /backup/database/export-/ &overwrite-tables
mydumper主要参数:
&host, -h 连接的mysql服务器
&user, -u 用户备份的连接用户
&password, -p
&port, -P 连接端口
&socket, -S 连接socket文件
&database, -B 需要备份的数据库
&table-list, -T 需要备份的表,用,分隔
&outputdir, -o 输出的目录
&build-empty-files ,-e 如果表数据是空,还是产生一个空文件,默认无数据则只有表结构文件
&regex, -x 支持正则表达式,如mydumper &regex &^(?!(mysql|test))&
&ignore-engines, -i 忽略的存储引擎
&no-schemas, -m 不导出表结构
&long-query-guard 长查询,默认60s,超过则通过mydumper
&kill-long-queries, -k 可以设置kill长查询
&verbose, -v 0 = silent, 1 = errors, 2 = warnings, 3 = info,默认是2
&binlogs, -b 导出binlog
&daemon, -D 启用守护进程模式
&snapshot-interval, -I dump快照间隔时间,默认60s
&logfile, -L mysqldumper日志输出,一般在Daemon模式下使用
myloader 大多参数和mydumper一样
&directory, -d 要还原的数据目录
&overwrite-tables, -o Drop any existing tables when restoring schemas
好文,顶一下
文章真差,踩一下
------分隔线----------------------------
把开源带在你的身边-精美linux小纪念品
初级应用->
高级应用-> |
编程开发->页面导航:
→ 正文内容 mydumper备份MySQL
使用mydumper多线程备份MySQL数据库
MySQL在备份方面包含了自身的mysqldump工具,但其只支持单线程工作,这就使得它无法迅速的备份数据。而 mydumper作为一个实用工具,能够良好支持多线程工作,这使得它在处理速度方面十倍于传统的
mysqldump:其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑。这样,mydumper能更好的完成备份任务。Mydumper主要特性:是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具,开发人员主要来自MySQL,Facebook,SkySQL公司。
代码如下:1:轻量级C语言写的&&& 2:执行速度比mysqldump快10倍&&& 3:事务性和非事务性表一致的快照(适用于0.2.2以上版本)&&& 4:快速的文件压缩&&& 5:支持导出binlog&&& 6:多线程恢复(适用于0.2.1以上版本)&&& 7:以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)&&& 8:开源 (GNU GPLv3)
下载安装:环境:Ubuntu 12.04
代码如下:wget https://launchpad.net/mydumper/0.5/0.5.2/+download/mydumper-0.5.2.tar.gz
安装:解压后,有安装说明
代码如下:apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev g++cmake .make
代码如下: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./usr/lib/x86_64-linux-gnu/libpthread./usr/lib/x86_64-linux-gnu/libz./usr/lib/x86_64-linux-gnu/libm./usr/lib/x86_64-linux-gnu/librt./usr/lib/x86_64-linux-gnu/libdl.so
CMake Warning at docs/CMakeLists.txt:9 (message):& Unable to find Sphinx documentation generator
-- -------------------------------------------------- MYSQL_CONFIG = /usr/bin/mysql_config-- CMAKE_INSTALL_PREFIX = /usr/local-- BUILD_DOCS = ON-- RUN_CPPCHECK = OFF-- Change a values with: cmake -D&Variable&=&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
生成2个工具:mydumper(备份),myloader(导入)
参数:mydumper: 代码如下:root@dd:~/mydumper-0.5.2# ./mydumper --helpUsage:& mydumper [OPTION...] multi-threaded MySQL dumping
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
myloader: 代码如下:root@dd:~/mydumper-0.5.2# ./myloader --helpUsage:& myloader [OPTION...] multi-threaded MySQL loader
Help Options:& -?, --help&&&&&&&&&&&&&&&&&&&&&&& Show help options
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
测试:测试基本用法
1:备份 代码如下:./mydumper -u zjy -p ##### -h 192.168.220.245 -P 3306 -B chushihua -o /home/zhoujy/bak/
备份analyzedxy数据库到/home/zhoujy/bak/ 目录中,查看是否多线程:
代码如下:| 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 */ |
上面显示确实是4个线程(默认)在备份,查看备份文件:
代码如下:root@zhoujy:/home/zhoujy/bak# ls -lh-rw-r--r-- 1 root root& 322
17:59 chushihua.dba_hospital_all_name-schema.sql-rw-r--r-- 1 root root& 16M
17:59 chushihua.dba_hospital_all_name.sql-rw-r--r-- 1 root root& 221
17:59 chushihua.dba_hospital-schema.sql-rw-r--r-- 1 root root& 658
17:59 chushihua.dba_hospital.sql-rw-r--r-- 1 root root& 198
17:59 chushihua.dba_jobTitle-schema.sql-rw-r--r-- 1 root root& 300
17:59 chushihua.dba_jobTitle.sql-rw-r--r-- 1 root root& 261
17:59 chushihua.dba_locatedCity-schema.sql-rw-r--r-- 1 root root 202K
17:59 chushihua.dba_locatedCity.sql
分析:mydumper把数据和表结构分开备份,并且把二进制日志备份出来单独放到一个文件中。
代码如下: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指向该备份。
2:还原:还原到另一台服务器,先建立要还原的数据库(chushihua)
代码如下:./myloader -u root -p 123456 -h 192.168.200.25 -P 3307 -B chushihua -d /home/zhoujy/bak/
和备份一样查看是否多线程:
代码如下:| 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&&&&&& |
上面显示确实是4个线程(默认)在还原。进一步测试:测试一些常用的参数1):备份指定表(-T),并且不要导出表结构(-m)
代码如下:./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/
zhoujy@zhoujy:~/bak$ ls -lh-rw-rw-r-- 1 zhoujy zhoujy 3.4K
20:57 test.a.sql-rw-rw-r-- 1 zhoujy zhoujy 1.6M
20:57 test.b.sql-rw-rw-r-- 1 zhoujy zhoujy 7.8M
20:57 test.c.sql-rw-rw-r-- 1 zhoujy zhoujy 1.7M
20:57 test.d.sql-rw-rw-r-- 1 zhoujy zhoujy 303K
20:57 test.e.sql-rw-rw-r-- 1 zhoujy zhoujy 517K
20:57 test.f.sql-rw-rw-r-- 1 zhoujy zhoujy 646K
20:57 test.g.sql-rw-rw-r-- 1 zhoujy zhoujy 394K
20:57 test.h.sql-rw-rw-r-- 1 zhoujy zhoujy& 34K
20:57 test.i.sql-rw-rw-r-- 1 zhoujy zhoujy&& 75
20:57 metadata
&2)压缩备份文件(-c),备份binlog(-b),正则表达式备份表(-x)
& 代码如下:&./mydumper -u root -p 123456 -h 192.168.200.25 -P 3306 -m -c -b --regex=tmp.* -B test& -o /home/zhoujy/bak/
drwx------ 2 zhoujy zhoujy 4.0K
21:16 binlog_snapshot-rw-rw-r-- 1 zhoujy zhoujy& 133
21:16 metadata-rw-rw-r-- 1 zhoujy zhoujy& 94K
21:16 test.tmp_0808.sql.gz-rw-rw-r-- 1 zhoujy zhoujy& 75K
21:16 test.tmp_0809.sql.gz-rw-rw-r-- 1 zhoujy zhoujy& 25K
21:16 test.tmp_0813.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 208K
21:16 test.tmp_0826.sql.gz-rw-rw-r-- 1 zhoujy zhoujy& 915
21:16 test.tmp_0827.sql.gz-rw-rw-r-- 1 zhoujy zhoujy& 901
21:16 test.tmp_0912.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 2.1K
21:16 test.tmp_0916.sql.gz-rw-rw-r-- 1 zhoujy zhoujy 622K
21:16 test.tmp_0918_a.sql.gz-rw-rw-r-- 1 zhoujy zhoujy& 28M
21:16 test.tmp_0918_ff.sql.gz&
如上所示,备份文件已经是压缩的了(用gzip -d 解压),并且备份出了tmp.*匹配出来的所有表,二进制日志也被备份到了binlog_snapshot文件中,并且也是被压缩的。3)还原,表存在先删除(-o):这里需要注意,使用该参数,备份目录里面需要有表结构的备份文件。
代码如下:./myloader -u root -p 123456 -h 192.168.200.25 -P 3306 -o -B test -d /home/zhoujy/bak/
更多的参数效果,请自己测试。最后测试:用mysqldump和mydumper进行对比测试。
代码如下:#!/usr/bin/env python#coding=utf-8import MySQLdbimport osimport sysimport time
backup = os.system('')
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
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
if __name__ =='__main__':&&& mysqldump_data()&&& mydumper_data()
测试了2个数据库:
mysqldump Cost Time :162smydumper Cost Time :61s
mysqldump Cost Time :483smydumper Cost Time :337s
从上面的时间来看,mydumper 确实提升了备份数据,还原也同理。
总结:从上面的测试分析中看出mydumper可以提升备份还原的效率,提升多少受限于磁盘的IO能力,在使用前做好磁盘IO的评估,大家可以尝试使用该工具。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910

我要回帖

更多关于 libmysqlclient.so.15 的文章

 

随机推荐