آرتشر
يدعم منصة تشغيل SQL الآلية القائمة على بدء تشغيل أوامر العمل ، ومراجعات ، ومهام التوقيت ، ورسائل البريد الإلكتروني ، و OSC وغيرها من الوظائف. يمكنه أيضًا تكوين استعلام MySQL ، وإدارة الاستعلام البطيئة ، وإدارة الجلسة ، إلخ.
جدول المحتويات
- الوظائف الرئيسية
- مواصفات التصميم
- تجربة عبر الإنترنت
- ثَبَّتَ
- نشر Docker
- التثبيت اليدوي
- يجري
- التكامل الوظيفي
- الاستعلام عبر الإنترنت والاستعلام عن الحساسية
- إدارة السجل البطيئة
- أدوات تحسين SQL
- إدارة Alibaba Cloud RDS
- سؤال وجواب
لغة التنمية وبيئة التوصية
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
الوظائف الرئيسية
- تبدأ المراجعة التلقائية في إطلاق SQL ، ويتم تقديم أوامر العمل ، ويتم مراجعة البدء تلقائيًا. بعد تمرير المراجعة ، يحتاج المدقق إلى مراجعته يدويًا.
- المراجعة اليدوية
ستتم مراجعة أوامر العمل تلقائيًا من قبل مهندسي البحث والتطوير الآخرين أو مديري البحث والتطوير. سيتم تنفيذ عمليات DBA SQL
لماذا نحتاج إلى مراجعة يدوية؟
يتبع ذلك عملية الوعي بالعمليات عبر الإنترنت في مجال التشغيل والصيانة. إذا أراد مهندس تحديث قاعدة البيانات عبر الإنترنت SQL ، فمن الأفضل التحقق من ذلك بواسطة مهندس آخر. في كثير من الأحيان ، لا يعرف DBA معنى العمل الخاص بـ SQL ، لذلك من الأفضل مراجعة المراجعة اليدوية من قبل مهندسي البحث والتطوير الآخرين أو مديري البحث والتطوير. هذا هو مفهوم تصميم آرتشر - يمكن عرض عبارات التراجع في أمر عمل عرض البيانات المتداول ، مما يدعم تقديم نقرة واحدة لأوامر العمل التراجع
- تنفيذ SQL بانتظام
يمكن تنفيذ أوامر العمل المعتمدة من قبل DBA بانتظام. يمكن تعديل وقت التنفيذ قبل التنفيذ ويمكن إنهاءه في أي وقت. - يدعم تنفيذ PT-ESC عرض التقدم في تنفيذ PT-ESC ، ويمكنك النقر لإحباط عملية PT-ESC
- مكتبة الاستعلام MySQL ، والجداول ، والكلمات الرئيسية تكمل تلقائيًا قيود تعيين نتائج الاستعلام ، وتصدير نتائج الاستعلام ، وعرض بنية الجدول ، وشاشة مجموعة متعددة الدقة
- تعتمد إدارة إذن استعلام MySQL على بيانات الاستعلام عن تحليل الاستخدام. تدعم أذونات الاستعلام تقييد تطبيق ومراجعة وإدارة أذونات الاستعلام على مستوى الجدول ، ودعم تكوين عملية التدقيق ، والتدقيق متعدد المستويات.
- يعتمد إزالة الحساسية الديناميكية للاستعلام MySQL على بيانات الاستعلام عن تحليلها ، ويمكن أن يحقق الحساسية الديناميكية للبيانات الحساسة مع تكوين مجال إزالة الحساسية وقواعد إزالة الحساسية (التعبيرات العادية).
- تعتمد إدارة السجل البطيء على pt_query_digest من percona-toolkit لتحليل وتخزين السجلات البطيئة ، وعرضها على جانب الويب.
- يمكن تكوين إشعارات البريد الإلكتروني باستخدام تذكيرات البريد الإلكتروني لإخطار التطبيقات عبر الإنترنت وتطبيقات الأذن ونتائج المراجعة وما إلى ذلك ، وإخطار تسجيل الدخول غير الطبيعي.
مواصفات التصميم
- تصميم قاعدة البيانات المعقولة ومواصفاتها ضرورية للغاية ، وخاصة قواعد بيانات MySQL. kernel ليست قوية مثل Oracle و DB2 و SQL Server وقواعد البيانات الأخرى. يتطلب الأمر تصميمًا معقولًا للعب في نقاط قوتك وتجنب نقاط الضعف الخاصة بك. تعمل صناعة الإنترنت على مواصفات تصميم MySQL ، وهي مكتوبة على النحو التالي. يرجى مطالبة القراء بتدريب جميع مطوري الواجهة الخلفية على هذه المواصفات قبل أن تتواصل الشركة عبر الإنترنت لاستخدام نظام Archer ، بحيث يعرفون السبب ولماذا.
تنزيل الرابط https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
ملفات التكوين الرئيسية
تبني Docker
- صورة Docker ، مرجع الويكي
- INCESTION IMAGE: https://hub.docker.com/r/hhyo/inception
- Archer Image: https://hub.docker.com/r/hhyo/archer
- إنتاج صورة Docker شكرًا @小彩票线
خطوات التثبيت اليدوية
- التحضير البيئي
- استنساخ الرمز إلى محلي أو تنزيل حزمة ZIP
git clone https://github.com/jly8866/archer.git - تثبيت بداية
معرض المشروع
- تثبيت Python3 ، رقم الإصدار> = 3.4 (نظرًا لأنك تحتاج إلى تعديل الوحدة الرسمية ، يرجى استخدام VirtualEnv أو VenV لعزل البيئة بشكل منفصل!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- تثبيت الوحدات النمطية ذات الصلة المطلوبة
source venv4archer/bin/activate
pip3 install -r requirements.txt
- تستخدم معلومات الإصدار المتوافق مع وحدة Pymysql الملف في دليل SRC/Docker/PymySQL لاستبدال/path/python3/lib/python3.4/site-packages/pymysql/ الملف المقابل
الاستعداد قبل البدء
- قم بإنشاء جدول قاعدة البيانات من Archer نفسه
- قم بتعديل جميع معلومات العنوان الخاصة بـ Archer/Archer/Settings.py ، بما في ذلك قواعد البيانات وقطع الظهر inception_xxx
- قم بإنشاء جدول قاعدة البيانات من Archer نفسه من خلال النموذج. إذا كانت ترقية إصدار موجودة ، فيرجى استخدام برنامج Change Script في SRC/init_sql لتغيير فرع قاعدة البيانات الأصلي V1.1.1. يرجى استخدام v1.1.1-> v2.0.SQL لتغيير الفرع الرئيسي الأصلي. يرجى استخدام Master-> v2.0.sql لتغيير التثبيت الجديد. يرجى استخدام الطريقة التالية لتهيئتها بالطريقة التالية
python3 manage.py makemigrations sql
python3 manage.py migrate
- قم بإنشاء مستخدم جذر نظام المسؤول (يمكن لهذا المستخدم تسجيل الدخول إلى مسؤول Django لإدارة النموذج)
python3 manage.py createsuperuser - هناك طريقتان للبدء
(1) استخدم Runserver المدمج Django لبدء الخدمة ، ويوصى بعدم استخدامها في بيئة الإنتاج
bash debug.sh
(2) استخدم Gunicorn+Nginx لبدء وحدة تثبيت الخدمة pip3 install gunicorn==19.7.1
مثال تكوين NGINX server{
listen 9123; #监听的端口
server_name archer;
proxy_read_timeout 600s; #超时时间与gunicorn超时时间设置一致,主要用于在线查询
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host:9123; #解决重定向404的问题
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
ابدأ bash startup.sh - الوصول الرسمي لتسجيل الدخول باستخدام حساب المسؤول الذي تم إنشاؤه أعلاه
http://XXXX:port/login/
تكامل ميزات أخرى
استعلام عبر الإنترنت
- تغيير الاستعلام إلى صحيح في الإعدادات
- إلى [إدارة بيانات الخلفية]-صفحة [تكوين عنوان مكتبة العبيد] ، أضف معلومات مكتبة الرقيق
- انتقل إلى [إدارة بيانات الخلفية]-[تكوين سير العمل] عملية مراجعة تكوين الصفحة
- يمكن للمستخدمين إجراء استفسارات عبر الإنترنت بعد التقدم بطلب للحصول على أذونات وتمرير المراجعة
- إذا كنت بحاجة إلى استخدام الحساسية الديناميكية ، فيرجى تغيير data_masking_on_off في الإعدادات إلى صواب ، والانتقال إلى [إدارة البيانات الخلفية]-
إدارة السجل البطيئة
- يتم تغيير Slowquery إلى صحيح في الإعدادات
- تثبيت percona-toolkit (الإصدار = 3.0.6) ، مع أخذ centos كمثال
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum -y install percona-toolkit.x86_64
- قم بإنشاء جداول مجموعة سجل بطيئة إلى قاعدة بيانات Archer باستخدام SRC/Script/MySQL_SLOW_QUERY_REVIEW.SQL
- نشر src/script/analysis_slow_query.sh على كل جهاز مراقبة. لاحظ أن
hostname="${mysql_host}:${mysql_port}" في البرنامج النصي يتوافق مع معلومات التكوين الخاصة بمكتبة Archer الرئيسية ، وإلا فلن يتم ترشيح السجلات ذات الصلة.
أداة تحسين SQLAdvisor
- تثبيت sqladvisor ، عنوان المشروع
- تعديل ملف التكوين sqladvisor إلى مسار البرنامج ، يجب أن يكون المسار اكتماله ، مثل "/opt/sqladvisor/sqladvisor/sqladvisor '
إدارة Alibaba Cloud RDS
- تعديل ملف التكوين aliyun_rds_manage = صحيح
- تثبيت الوحدة
pip3 install aliyun-python-sdk-core==2.3.5
pip3 install aliyun-python-sdk-core-v3==2.5.3
pip3 install aliyun-python-sdk-rds==2.1.1
- في صفحة [Backend Data Management]-[معلومات شهادة Cloud ALI] ، أضف معلومات AccessKey الخاصة بحساب Alibaba Cloud وأعد تشغيل الخدمة
- في صفحة [إدارة بيانات الخلفية]-[ALI Cloud RDS Configuration] ، أضف معلومات المثيل لتحقيق إدارة العمليات وإدارة السجل البطيئة لـ Alibaba Cloud RDS
تعزيز الواجهة الخلفية المشرف ، التكسير الغاشم المقاوم
- في دليل التصحيح ، الاسم هو django_1.8.17_admin_secure_archer.patch
- استخدم الأوامر
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
LDAP متكامل
- تعديل ملف التكوين enable_ldap = true ، قم بتثبيت الوحدة النمطية ذات الصلة ، يمكنك تمكين تسجيل الدخول إلى حساب LDAP ، واتخاذ CentOS كمثال
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- إذا تم استخدام LDAPS وكانت شهادة موقعة ذاتيًا ، فأنت بحاجة إلى فتح تعليق Auth_ldap_global_options في الإعدادات
- يجب تعديل التكوينات التي تبدأ بـ AUTH_LDAP في الإعدادات وفقًا لـ LDAP الخاص بها المقابل
تجربة النظام
انقر لتجربة
| دور | حساب | كلمة المرور |
|---|
| المسؤول | آرتشر | آرتشر |
| مهندس | مهندس | آرتشر |
| المراجع | مدقق الحسابات | آرتشر |
| DBA | DBA | آرتشر |
بعض المشاكل حل
عرض سجل الخطأ
/tmp/default.log & /tmp/archer.err
استثناء عرض نمط الصفحة
- Runserver/debug.sh يبدأ
تم إغلاق تصحيح الأخطاء في الإعدادات ، أي تصحيح = خطأ ، ويجب أن يضيف -ثنائي بعد أمر بدء التشغيل ، ويصبح - nginx+gunicorn/startup.sh البدء
تكوين المورد الثابت من Nginx غير صحيح location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
إدارة المستخدم
- في بعض الأحيان يتم الإبلاغ عن خطأ المستخدم بواسطة Nginx+Gunicorn/StartUp.sh. قد يحدث نشر العامل متعدد. لم يتم حل المشكلة في الوقت الحاضر.
- غير قادر على تسجيل الدخول (تأكد من صحة اسم المستخدم وكلمة المرور)
تحقق مما إذا كان حقل المستخدم IS_ACTION هو 1
SQL على الإنترنت
لا تعرض الكتلة قاعدة البيانات
سيقوم Archer بتصفية بعض قواعد بيانات النظام افتراضيًا ، وقائمة المرشحات هي 'information_schema', 'performance_schema', 'mysql', 'test', 'sys'
لا يعرض المراجع مستخدمين صالحين ليسوا دور مراجع/DBA
لا يوجد زر تنفيذ بعد مرور المراجعة
عملية إطلاق Archer SQL هي: يقوم المهندس بإعداد SQL-> مراجعة المدقق-> تنفيذ DBA. لا يمكن للمراجع مراجعة البيانات التي تنتمي إلا إلى مراجعته الخاصة ، ويقوم DBA بتنفيذ جميع البيانات.
اكتشف خطأ SQL
- حرفي غير صالح لـ int () مع القاعدة 10: "Inception2"
اضبط pymysql لجعلها متوافقة مع معلومات إصدار Inception.
استخدم الملف في دليل src/docker/pymysql لاستبدال الملف في/pathr/tethon3/lib/python3.4/site-packages/pymysql/ الدليل - معلومات مصدر غير صالحة
لا يمكن أن تتضمن كلمة المرور * - يجب أن تبدأ كبيان البداية
سترسل وحدة Python3 Pymysql بيان تحذيرات العرض إلى البداية ، مما تسبب في إرجاع خطأ "يجب أن تبدأ كبيان". سيقوم Archer بالإبلاغ عن أن الملف في/Pathr/TOTHON3/LIB/PYTHON3.4/Site-Packages/PYMYSQL/ دليل في السجل لاستبدال الملف في/PATTPHER/TOTHON3/LIB/PYTHON3.4/Site-Packages/PYMYSQL/. - اسم قاعدة البيانات غير الصحيح '' '
لا تدعم التحقق - معلومات نسخ احتياطي غير صالحة
لا يمكن الاتصال بمكتبة النسخ الاحتياطي
لا يمكن توليد بيان التراجع
- تحقق من التكوين المتعلق بالبدء في ملف التكوين
- تحقق من أذونات تدقيق مستخدمي التدقيق ومستخدمي النسخ الاحتياطي ، مرجع الإذن
— inception备份用户
GRANT SELECT, INSERT, CREATE ON *.* TO 'inception_bak'
— inception审核用户(主库配置用户,如果要使用会话管理需要赋予SUPER权限,如果需要使用OSC,请额外配置权限)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'inception'
— archer在线查询用户(从库配置用户)
GRANT SELECT ON *.* TO 'archer_read'
- تحقق من تنسيق binlog ، يجب أن يكون صفًا ، binlog_row_image ممتلئ
- تحقق مما إذا كان جدول DML يحتوي على مفاتيح أساسية
- تحقق مما إذا كان البيان يؤثر على البيانات
- تحقق مما إذا تم تمكين مكتبة النسخ الاحتياطي من أجل AutoCommit
- تحقق مما إذا كان عبارة تحديث جدول مستمر
- تحقق مما إذا كان مثيل التنفيذ هو mysql
قواعد إزالة الحساسية ليست سارية
- تحقق مما إذا كان حقل إزالة الحساسية يضرب (ما إذا كان حساس الحالة)
- تحقق مما إذا كان التعبير المنتظم لقاعدة إزالة الحساسية يمكن أن يتطابق مع البيانات. إذا لم تتمكن من مطابقة ، فسيتم إرجاع النتيجة الأصلية.
- تحقق مما إذا كانت معلمة check_query_on_off قد تم إيقافها ، مما تسبب في فشل البدء في حل البيانات التي لم يتم تحسسها بشكل مباشر مرجع تكوين قواعد إزالة الحساسية
| نوع القاعدة | يجب تجميع التعبيرات العادية المستخدمة في إزالة الحساسية العادية ، وسيتم استبدال المجموعات المخفية بـ ****. | المجموعات التي تحتاج إلى إخفاءها | وصف القاعدة |
|---|
| رقم التليفون | (. {3}) (.*) (. {4}) | 2 | احتفظ بالثلاثة الأولى والأربعة الأخيرة |
| رقم الهوية | (.*) (. {4}) $ | 2 | إخفاء الأربعة الأخيرة |
| بطاقة مصرفية | (.*) (. {4}) $ | 2 | إخفاء الأربعة الأخيرة |
| بريد | (.*)@(.*) | 2 | إزالة لاحقة |
لا يمكن للمراجع رؤية إذن الاستعلام للتقدم بطلب للحصول على أمر العمل المعلق
يتم إخفاء قائمة تطبيق إذن الاستعلام في أيقونة الرسالة في الزاوية اليمنى العليا. سيتم عرض الأيقونة عندما تكون هناك معلومات يمكن مراجعتها. يمكنك الدخول لعرض بيانات المهام.
السجلات البطيئة لا تعرض
- تحقق من التكوين في البرنامج النصي ، واحتفظ بمحتوى التكوين الخاص بمكتبة المضيف والمكتبة الرئيسية Archer ، ويتم استخدامه لتصفية Archer.
- تحقق مما إذا كانت معلومات السجل التي تم جمعها بواسطة جدول mysql_slow_query_review_history متوافق مع اسم المضيف
لم يتم تنفيذ مهمة توقيت
- تحقق
python3 manage.py migrate إذا كان قد تم إنشاء الجدول ذي الصلة لـ Django-apscheduler
معلومات الاتصال
- QQ Group 1 Group 524233225 (كامل)
- QQ Group 2 Group 669833720