MyDumper هي أداة نسخ احتياطي منطقية لـ MySQL. لديها 2 أدوات:
mydumper
وهو المسؤول عن تصدير نسخة احتياطية متسقة من قواعد بيانات MySQLmyloader
النسخة الاحتياطية من mydumper، ويتصل بقاعدة البيانات الوجهة ويستورد النسخة الاحتياطية. تستخدم كلتا الأداتين إمكانات تعدد العمليات.
MyDumper هو برنامج مفتوح المصدر ويتم صيانته من قبل المجتمع، وهو ليس منتج Percona أو MariaDB أو MySQL.
التوثيق الرسمي (العمل قيد التقدم)
لقد تم ترحيل هذه الأقسام
احصل أولاً على عنوان URL الصحيح من قسم الإصدارات ثم:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el7.x86_64.rpm
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el8.x86_64.rpm
بالنسبة لأوبونتو، تحتاج إلى تثبيت التبعيات:
apt-get install libatomic1
وبعد ذلك يمكنك تنزيل الحزمة وتثبيتها:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
wget https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
dpkg -i mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
باستخدام pkg
pkg install mydumper
أو من الموانئ
cd /usr/ports/databases/mydumper && make install
باستخدام البيرة المنزلية
brew install mydumper
ضع في اعتبارك أن ملف mydumper.cnf سيكون موجودًا على /usr/local/etc أو /opt/homebrew/etc. لذا، قد تحتاج إلى تشغيل mydumper/myloader باستخدام:
mydumper --defaults-file=/opt/homebrew/etc/mydumper.cnf
myloader --defaults-file=/opt/homebrew/etc/mydumper.cnf
apt-get install cmake g++ git
yum install -y cmake gcc gcc-c++ git make
sudo port install cmake pkgconfig
apt-get install libglib2.0-dev zlib1g-dev libpcre3-dev libssl-dev libzstd-dev
yum install -y glib2-devel openssl-devel pcre-devel zlib-devel libzstd-devel
zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel
sudo port install glib2 pcre
تحتاج إلى تحديد مكتبة تطوير بائع واحد.
apt-get install libmysqlclient-dev
apt-get install libperconaserverclient20-dev
apt-get install libmariadbclient-dev
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel
يأتي CentOS 7 بشكل افتراضي مع مكتبات MariaDB 5.5 القديمة جدًا. قد يكون من الأفضل تنزيل إصدار أحدث من هذه المكتبات (MariaDB، MySQL، Percona، إلخ).
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
يجري:
cmake .
make
sudo make install
يجب على المرء التأكد من أن pkg-config و mysql_config و pcre-config كلها في $PATH
يتم تعطيل تفريغ Binlog بشكل افتراضي لتجميعه، تحتاج إلى إضافة -DWITH_BINLOG=ON إلى خيارات cmake
للبناء على mysql libs <5.7، يلزمك تعطيل إضافة SSL -DWITH_SSL=OFF
يمكنك تنزيل صورة عامل الإرساء الرسمية أو يمكنك إنشاء صورة عامل الإرساء إما من مصادر محلية أو مباشرةً من مصادر Github باستخدام ملف Dockerfile المتوفر.
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
ضع في اعتبارك أن الغرض الرئيسي الذي يتناوله Dockerfile هو التطوير والبناء من المصدر محليًا. قد لا يكون مثاليًا لأغراض التوزيع، ولكن يمكن أيضًا أن يعمل كحل سريع للإنشاء والتشغيل مع السطر الواحد أعلاه.
انظر الاستخدام
يتم كل ذلك باتباع أفضل ممارسات وتقاليد MySQL:
لا يوفر هذا في الوقت الحالي لقطات متسقة للمحركات غير المتعلقة بالمعاملات - ومن المتوقع دعم ذلك في 0.2 :)
مرة واحدة يمكن استخدام وظيفة --regex، على سبيل المثال عدم تفريغ قواعد بيانات mysql وsys واختبارها:
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
لتفريغ قواعد البيانات mysql والاختبار فقط:
mydumper --regex ' ^(mysql.|test.) '
لعدم تفريغ جميع قواعد البيانات التي تبدأ بالاختبار:
mydumper --regex ' ^(?!(test)) '
لتفريغ جداول محددة في قواعد بيانات مختلفة (ملاحظة: يجب أن ينتهي اسم الجداول بـ $. المشكلة ذات الصلة):
mydumper --regex ' ^(db1.table1$|db2.table2$) '
إذا كنت تريد تفريغ بعض قواعد البيانات مع تجاهل بعض الجداول، فيمكنك القيام بما يلي:
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
والذي سيؤدي إلى تفريغ جميع الجداول في db1 وdb2 ولكنه سيستبعد db1.table1 وdb2.table2
بالطبع، يمكن استخدام وظيفة التعبير العادي لوصف أي قائمة من الجداول تقريبًا.
يمكنك تنفيذ أوامر خارجية باستخدام --exec مثل هذا:
mydumper --exec " /usr/bin/gzip FILENAME "
--exec هو تطبيق ذو ترابط واحد مشابه لتطبيق Stream. يجب أن يكون برنامج exec مسارًا مطلقًا. سيتم استبدال FILENAME باسم الملف الذي تريد معالجته. يمكنك تعيين FILENAME في أي مكان كوسيطة.
الملف الافتراضي (المعروف أيضًا باسم: --defaults-file المعلمة) بدأ يصبح أكثر أهمية في MyDumper
[mydumper]
host = 127.0.0.1
user = root
password = p455w0rd
database = db
rows = 10000
[myloader]
host = 127.0.0.1
user = root
password = p455w0rd
database = new_db
innodb-optimize-keys = AFTER_IMPORT_PER_TABLE
قبل الإصدار 0.14.0-1:
[mydumper_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[myloader_variables]
long_query_time = 300
innodb_flush_log_at_trx_commit = 0
من إلى الإصدار 0.14.0-1:
[mydumper_session_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mydumper_global_variables]
sync_binlog = 0
slow_query_log = OFF
[myloader_session_variables]
long_query_time = 300
[myloader_global_variables]
sync_binlog = 0
innodb_flush_log_at_trx_commit = 0
[ ` db ` . ` table ` ]
where = column > 20
limit = 10000
[ ` myd_test ` . ` t ` ]
columns_on_select=qty,price+20
columns_on_insert=qty,price
هام: عند استخدام الخيارات التي لا تتطلب وسيطة مثل: --no-data أو --events، فإنك تحتاج إلى تعيين أي قيمة لتلك المتغيرات التي ستشير دائمًا إلى: TRUE/ON/ENABLE. من الخطأ الاعتقاد بأن إضافة --no-data=0
سيؤدي إلى تصدير البيانات:
[mydumper]
no-data=0
لن يتم تصدير البيانات لأنه لم يتم تحديد أي بيانات.