mydumper 多線程備份工具啟動時找不到 libmysqlclient_r.so.16 中的 gzopen 符號 (版本 libmysqlclient_16),原因是動態連結器未掃描 MySQL 安裝目錄的 lib 資料夾。解法:匯出 LD_LIBRARY_PATH 包含 /usr/local/mysql/lib 即可。

mydumper: relocation error: mydumper: symbol gzopen, version libmysqlclient_16 not defined in file libmysqlclient_r.so.16 with link time reference
ls /usr/local/mysql/lib/
# libmysqlclient_r.so.16, libmysqlclient.so.16 等存在
export LD_LIBRARY_PATH="/usr/local/mysql/lib:$LD_LIBRARY_PATH"
mydumper -h localhost -u root -p password -c -o ./backup/ -B dbname
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
ldconfig
echo 'export LD_LIBRARY_PATH="/usr/local/mysql/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc
ldd $(which mydumper) | grep mysql
# 應顯示 libmysqlclient_r.so.16 => /usr/local/mysql/lib/libmysqlclient_r.so.16
| 參數 | 說明 |
|---|---|
-t, --threads | 執行緒數 (預設 4) |
-c, --compress | 輸出檔案壓縮 |
-o, --outputdir | 輸出目錄 |
-B, --database | 指定資料庫 |
-T, --tables-list | 指定資料表清單檔 |
--regex | 資料表名稱正則過濾 |
--no-locks | 不加鎖讀取 (需一致性備份慎用) |