mydumper 安装报错处理

时间:2022-04-29 06:24:03

mydumper 官网:https://launchpad.net/mydumper

下载之后,安装报错:

[root@localhost local]# cd mydumper-0.6.2
[root@localhost mydumper-0.6.]#
[root@localhost mydumper-0.6.]# ls
binlog.c CMakeCache.txt common.h docs g_unix_signal.h myloader.c Processing server_detect.c
binlog.h CMakeFiles config.h Finished mydumper.c myloader.h README server_detect.h
cmake CMakeLists.txt config.h.in g_unix_signal.c mydumper.h Package Running
[root@localhost mydumper-0.6.]# cmake .
-- The CXX compiler identification is GNU 4.4.
-- 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/local/mysql/bin/mysql_config
-- Found MySQL: /usr/local/mysql/include, /usr/local/mysql/lib/libmysqlclient.so;/usr/lib/libpthread.so;/usr/lib/libm.so;/usr/lib/librt.so;/usr/lib/libdl.so
-- checking for one of the modules 'glib-2.0'
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake: (message):
None of the required 'glib-2.0' found
Call Stack (most recent call first):
cmake/modules/FindGLIB2.cmake: (pkg_search_module)
CMakeLists.txt: (find_package) -- checking for one of the modules 'gthread-2.0'
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake: (message):
None of the required 'gthread-2.0' found
Call Stack (most recent call first):
cmake/modules/FindGLIB2.cmake: (pkg_search_module)
CMakeLists.txt: (find_package) CMake Warning at docs/CMakeLists.txt: (message):
Unable to find Sphinx documentation generator -- ------------------------------------------------
-- MYSQL_CONFIG = /usr/local/mysql/bin/mysql_config
-- CMAKE_INSTALL_PREFIX = /usr/local
-- BUILD_DOCS = ON
-- WITH_BINLOG = OFF
-- RUN_CPPCHECK = OFF
-- Change a values with: cmake -D<Variable>=<Value>
-- ------------------------------------------------
--
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GLIB2_LIBRARIES (ADVANCED)
linked by target "mydumper" in directory /usr/local/mydumper-0.6.
linked by target "myloader" in directory /usr/local/mydumper-0.6.
GTHREAD2_LIBRARIES (ADVANCED)
linked by target "mydumper" in directory /usr/local/mydumper-0.6.
linked by target "myloader" in directory /usr/local/mydumper-0.6. -- Configuring incomplete, errors occurred!
See also "/usr/local/mydumper-0.6.2/CMakeFiles/CMakeOutput.log".
See also "/usr/local/mydumper-0.6.2/CMakeFiles/CMakeError.log".

cmake .  报错:

None of the required 'glib-2.0' found
None of the required 'gthread-2.0' found

网上搜索,没有找到解决办法,于是只好去官网寻找方法:

https://answers.launchpad.net/mydumper/+faq/349

Run:
cmake .
make One needs to install development versions of required libaries (MySQL, GLib, ZLib, PCRE):
NOTE: you must use the correspondent mysql devel package. * Ubuntu or Debian: apt-get install libglib2.-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev libssl-dev
* Fedora, RedHat and CentOS: yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel
* openSUSE: zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel
* MacOSX: port install glib2 mysql5 pcre pkgconfig cmake
(You may want to run 'port select mysql mysql5' afterwards) One has to make sure, that pkg-config, mysql_config, pcre-config are all in $PATH Binlog dump is disabled by default to compile with it you need to add -DWITH_BINLOG=ON to cmake options Obviously you need compiler and make packages too :)

可以看到需要安装依赖:

Fedora, RedHat and CentOS: yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel

于是按照说明进行安装:

[root@localhost mydumper-0.6.]# yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* c6-media:
Package mysql-devel-5.1.-.el6_5.i686 already installed and latest version
Package zlib-devel-1.2.-.el6.i686 already installed and latest version
Package pcre-devel-7.8-.el6.i686 already installed and latest version
Package openssl-devel-1.0.1e-30.el6.i686 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package glib2-devel.i686 :2.28.-.el6 will be installed
--> Finished Dependency Resolution Dependencies Resolved ==========================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================
Installing:
glib2-devel i686 2.28.-.el6 c6-media k Transaction Summary
==========================================================================================================================================
Install Package(s) Total download size: k
Installed size: 1.5 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : glib2-devel-2.28.-.el6.i686 /
Unable to connect to dbus
Verifying : glib2-devel-2.28.-.el6.i686 / Installed:
glib2-devel.i686 :2.28.-.el6 Complete!

再来编译安装 mydumper:

[root@localhost mydumper-0.6.]# cmake .
-- Using mysql-config: /usr/local/mysql/bin/mysql_config
-- Found MySQL: /usr/local/mysql/include, /usr/local/mysql/lib/libmysqlclient.so;/usr/lib/libpthread.so;/usr/lib/libm.so;/usr/lib/librt.so;/usr/lib/libdl.so
-- checking for one of the modules 'glib-2.0'
-- checking for one of the modules 'gthread-2.0' CMake Warning at docs/CMakeLists.txt: (message):
Unable to find Sphinx documentation generator -- ------------------------------------------------
-- MYSQL_CONFIG = /usr/local/mysql/bin/mysql_config
-- CMAKE_INSTALL_PREFIX = /usr/local
-- BUILD_DOCS = ON
-- WITH_BINLOG = OFF
-- RUN_CPPCHECK = OFF
-- Change a values with: cmake -D<Variable>=<Value>
-- ------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/mydumper-0.6.
[root@localhost mydumper-0.6.]# echo $? [root@localhost mydumper-0.6.]# make
Scanning dependencies of target mydumper
[ %] Building C object CMakeFiles/mydumper.dir/mydumper.c.o
[ %] Building C object CMakeFiles/mydumper.dir/server_detect.c.o
[ %] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.o
Linking C executable mydumper
[ %] Built target mydumper
Scanning dependencies of target myloader
[%] Building C object CMakeFiles/myloader.dir/myloader.c.o
Linking C executable myloader
[%] Built target myloader
[root@localhost mydumper-0.6.]# make install
[ %] Built target mydumper
[%] Built target myloader
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/mydumper
-- Removed runtime path from "/usr/local/bin/mydumper"
-- Installing: /usr/local/bin/myloader
-- Removed runtime path from "/usr/local/bin/myloader"

安装成功。但是执行时又报错:

[root@localhost mydumper-0.6.]# mydumper --help
mydumper: error while loading shared libraries: libmysqlclient.so.: cannot open shared object file: No such file or directory

解决办法:

[root@localhost mydumper-0.6.]# ldd /usr/local/bin/mydumper
linux-gate.so. => (0x00f91000)
libmysqlclient.so. => not found
libpthread.so. => /lib/libpthread.so. (0x006fc000)
libm.so. => /lib/libm.so. (0x0072b000)
librt.so. => /lib/librt.so. (0x00720000)
libdl.so. => /lib/libdl.so. (0x00719000)
libglib-2.0.so. => /lib/libglib-2.0.so. (0x00757000)
libgthread-2.0.so. => /lib/libgthread-2.0.so. (0x00918000)
libpcre.so. => /lib/libpcre.so. (0x021a8000)
libz.so. => /lib/libz.so. (0x002ea000)
libc.so. => /lib/libc.so. (0x00564000)
/lib/ld-linux.so. (0x0053e000)
[root@localhost mydumper-0.6.]# LD_DEBUG=libs /usr/local/bin/mydumper -v
: find library=libmysqlclient.so. []; searching
: search cache=/etc/ld.so.cache
: search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls /i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib (system s earch path)
: trying file=/lib/tls/i686/sse2/libmysqlclient.so.
: trying file=/lib/tls/i686/libmysqlclient.so.
: trying file=/lib/tls/sse2/libmysqlclient.so.
: trying file=/lib/tls/libmysqlclient.so.
: trying file=/lib/i686/sse2/libmysqlclient.so.
: trying file=/lib/i686/libmysqlclient.so.
: trying file=/lib/sse2/libmysqlclient.so.
: trying file=/lib/libmysqlclient.so.
: trying file=/usr/lib/tls/i686/sse2/libmysqlclient.so.
: trying file=/usr/lib/tls/i686/libmysqlclient.so.
: trying file=/usr/lib/tls/sse2/libmysqlclient.so.
: trying file=/usr/lib/tls/libmysqlclient.so.
: trying file=/usr/lib/i686/sse2/libmysqlclient.so.
: trying file=/usr/lib/i686/libmysqlclient.so.
: trying file=/usr/lib/sse2/libmysqlclient.so.
: trying file=/usr/lib/libmysqlclient.so.

没有找到 libmysqlclient.so.

[root@localhost mydumper-0.6.]# locate libmysqlclient.so.18
/usr/local/mysql-5.6.-linux-glibc2.-i686/lib/libmysqlclient.so.
/usr/local/mysql-5.6.-linux-glibc2.-i686/lib/libmysqlclient.so.18.1.
[root@localhost mydumper-0.6.]# ll /usr/local/mysql-5.6.26-linux-glibc2.5-i686/lib/libmysqlclient.so.18
lrwxrwxrwx. root mysql Aug : /usr/local/mysql-5.6.-linux-glibc2.-i686/lib/libmysqlclient.so. -> libmysqlclient.so.18.1.

然后将 /usr/local/mysql-5.6.26-linux-glibc2.5-i686/lib/libmysqlclient.so.18.1. 复制到 /usr/lib/ 木下:

[root@localhost mydumper-0.6.]# cp /usr/local/mysql-5.6.26-linux-glibc2.5-i686/lib/libmysqlclient.so.18.1.0 /usr/lib/libmysqlclient.so.18
[root@localhost mydumper-0.6.]# ldd /usr/local/bin/mydumper linux-gate.so.1 => (0x00805000)
libmysqlclient.so. => /usr/lib/libmysqlclient.so. (0x0019f000)
libpthread.so. => /lib/libpthread.so. (0x006fc000)
libm.so. => /lib/libm.so. (0x0072b000)
librt.so. => /lib/librt.so. (0x00720000)
libdl.so. => /lib/libdl.so. (0x00719000)
libglib-2.0.so. => /lib/libglib-2.0.so. (0x0055e000)
libgthread-2.0.so. => /lib/libgthread-2.0.so. (0x00918000)
libpcre.so. => /lib/libpcre.so. (0x021a8000)
libz.so. => /lib/libz.so. (0x0067b000)
libc.so. => /lib/libc.so. (0x0091d000)
libstdc++.so. => /usr/lib/libstdc++.so. (0x07b14000)
libgcc_s.so. => /lib/libgcc_s.so. (0x0068f000)
/lib/ld-linux.so. (0x0053e000)

测试:

[root@localhost mydumper-0.6.]# mydumper --help
Usage:
mydumper [OPTION...] multi-threaded MySQL dumping Help Options:
-?, --help Show help options Application Options:
-B, --database Database to dump
-T, --tables-list Comma delimited table list to dump (does not exclude regex option)
-o, --outputdir Directory to output files to
-s, --statement-size Attempted size of INSERT statement in bytes, default
-r, --rows Try to split tables into chunks of this many rows. This option turns off --chunk-filesize
-F, --chunk-filesize Split tables into chunks of this output file size. This value is in MB
-c, --compress Compress output files
-e, --build-empty-files Build dump files even if no data available from table
-x, --regex Regular expression for 'db.table' matching
-i, --ignore-engines Comma delimited list of storage engines to ignore
-m, --no-schemas Do not dump table schemas with the data
-k, --no-locks Do not execute the temporary shared read lock. WARNING: This will cause inconsistent backups
--less-locking Minimize locking time on InnoDB tables.
-l, --long-query-guard Set long query timer in seconds, default
-K, --kill-long-queries Kill long running queries (instead of aborting)
-D, --daemon Enable daemon mode
-I, --snapshot-interval Interval between each dump snapshot (in minutes), requires --daemon, default
-L, --logfile Log file name to use, by default stdout is used
--tz-utc SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
--skip-tz-utc
--use-savepoints Use savepoints to reduce metadata locking issues, needs SUPER privilege
--success-on- Not increment error count and Warning instead of Critical in case of table doesn't exist
--lock-all-tables Use LOCK TABLE for all, instead of FTWRL
-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 Number of threads to use, default 4
-C, --compress-protocol Use compression on the MySQL connection
-V, --version Show the program version and exit
-v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

搞定。

启发:解决问题的最好方法是到官网查看文档和说明。