Bogenschütze
Eine automatisierte SQL -Betriebsplattform, die auf Inception basiert, unterstützt Arbeitsaufträge, Audits, Zeitaufgaben, E -Mails, OSC und andere Funktionen. Es kann auch die MySQL -Abfrage, das langsame Abfragemanagement, das Sitzungsmanagement usw. konfigurieren.
Inhaltsverzeichnis
- Hauptfunktionen
- Entwurfspezifikationen
- Online -Erfahrung
- Installieren
- Docker -Bereitstellung
- Manuelle Installation
- laufen
- Funktionale Integration
- Online -Abfrage- und Desensibilisierungsanfrage
- Langsame Protokollverwaltung
- SQL -Optimierungstools
- Alibaba Cloud RDS Management
- Fragen und a
Entwicklungssprache und Empfehlungsumgebung
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
Hauptfunktionen
- Automatische Überprüfung initiiert SQL -Start, Arbeitsaufträge werden eingereicht und die Gründung wird automatisch überprüft. Nachdem die Überprüfung bestanden wurde, muss der Wirtschaftsprüfer es manuell überprüfen.
- Manuelle Überprüfung
Inception überprüfte automatisch Arbeitsaufträge von anderen F & E -Ingenieuren oder F & E -Managern. DBA -Operationen werden SQL ausführen
Warum brauchen wir eine manuelle Bewertung?
Dies folgt dem Prozessbewusstsein für Online -Operationen im Bereich Betrieb und Wartung. Wenn ein Ingenieur die Online -Datenbank SQL aktualisieren möchte, überprüfen Sie es am besten von einem anderen Ingenieur. Oft kennt der DBA die Geschäftsbedeutung von SQL nicht, so Dies ist das Designkonzept von Archer - Rollback-Anweisungen können in der Rollback-Datenanzeigeanordnung angezeigt werden, wobei die Einreichung von Einklicks von Rollback-Arbeitsaufträgen unterstützt wird
- SQL regelmäßig ausführen
Die vom DBA genehmigten Arbeitsaufträge können regelmäßig ausgeführt werden. Die Ausführungszeit kann vor der Ausführung geändert und jederzeit beendet werden. - Die PT-OSC-Ausführung unterstützt die PT-OSC-Ausführung Fortschrittsanzeige und Sie können klicken, um den PT-OSC-Prozess abzubrechen
- MySQL Abfragebibliothek, Tabellen und Schlüsselwörter vervollständigen automatisch Abfrageergebnis-Set-Beschränkungen, Abfrageergebnis Export, Tabellenstrukturanzeige und Multi-Reult-Set-Anzeige
- MySQL Query Berechtigungsmanagement basiert auf Analyse von Analysen von Inception -Analysen. Abfrageberechtigungen unterstützen Sie die Einschränkung der Anwendung, Überprüfung und Verwaltung von Abfrageberechtigungen auf Tabellenebene, Unterstützung der Prüfungsprozess und der Überprüfung auf mehreren Ebenen.
- Die dynamische Desensibilisierung von MySQL -Abfragen basiert auf Analyse von Inception -Analysen von Abfragen und kann eine dynamische Desensibilisierung sensibler Daten in Kombination mit der Konfiguration und der Desensibilisierungsregeln der Desensibilisierungsfeld (reguläre Ausdrücke) erreichen.
- Die Slow-Log-Verwaltung basiert auf PT_Query_Digest von Percona-Toolkit, um langsame Protokolle zu analysieren und zu speichern und auf der Webseite anzuzeigen.
- E -Mail -Benachrichtigungen können mit E -Mail -Erinnerungen konfiguriert werden, um Online -Anwendungen, Berechtigungsanwendungen, Überprüfungsergebnisse usw. zu benachrichtigen und eine abnormale Anmeldung zu benachrichtigen.
Entwurfspezifikationen
- Angemessene Datenbankdesign und Spezifikationen sind sehr erforderlich, insbesondere MySQL -Datenbanken. Der Kernel ist nicht so leistungsfähig wie Oracle, DB2, SQL Server und andere Datenbanken. Es erfordert ein angemessenes Design, um Ihre Stärken zu spielen und Ihre Schwächen zu vermeiden. Die Internetbranche verfügt über reife MySQL -Designspezifikationen und ist wie folgt geschrieben. Bitte bitten Sie die Leser, alle Backend -Entwickler mit dieser Spezifikation zu schulen, bevor das Unternehmen online geht, um das Archer -System zu nutzen, damit sie den Grund und warum wissen.
Download Link https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
Hauptkonfigurationsdateien
- Archer/Archer/Einstellungen.Py
Adoptieren Sie Docker
- Docker -Bild, Referenzwiki
- Inception -Bild: https://hub.docker.com/r/hhyo/inception
- Archer Bild: https://hub.docker.com/r/hhyo/archer
- Docker Bildproduktion danke @小彩票线
Manuelle Installationsschritte
- Umweltvorbereitung
- Klonen Sie den Code in lokal oder herunterladen das Zip -Paket herunter
git clone https://github.com/jly8866/archer.git - Inception installieren
Projektgalerie
- Installieren Sie Python3, Versionsnummer> = 3.4 (Da Sie das offizielle Modul ändern müssen, verwenden Sie bitte Virtualenv oder Venv, um die Umgebung separat zu isolieren!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- Installieren Sie die erforderlichen verwandten Module
source venv4archer/bin/activate
pip3 install -r requirements.txt
- PYMYSQL-Modul Kompatible Inception-Versionsinformationen verwendet die Datei im Verzeichnis SRC/Docker/PYMYSQL, um /path/to/python3/lib/python3.4/Site-packages/pymysql/ entsprechende Datei zu ersetzen
Vor dem Start vorbereiten
- Erstellen Sie die Datenbanktabelle des Bogenschützen selbst
- Ändern Sie alle Adressinformationen von Archer/Archer/Settings.py, einschließlich Datenbanken und Inception_xxx -Teilen
- Erstellen Sie die Datenbanktabelle des Bogenschützen selbst über das Modell. Wenn es sich um ein vorhandenes Versions -Upgrade handelt, verwenden Sie das Skript ändern in SRC/init_sql, um die Database Original V1.1.1 -Zweigstelle zu ändern. Bitte verwenden Sie v1.1.1-> v2.0.sql, um den ursprünglichen Master-Zweig zu ändern. Bitte verwenden Sie Master-> v2.0.sql, um die neue Installation zu ändern. Bitte verwenden Sie die folgende Methode, um sie auf folgende Weise zu initialisieren
python3 manage.py makemigrations sql
python3 manage.py migrate
- Erstellen Sie einen admin -System -Root -Benutzer (dieser Benutzer kann sich bei Django Admin anmelden, um das Modell zu verwalten).
python3 manage.py createsuperuser - Es gibt zwei Möglichkeiten, anzufangen
(1) Verwenden Sie den Django-integrierten RunServer, um den Service zu starten, und es wird empfohlen, ihn nicht in der Produktionsumgebung zu verwenden
bash debug.sh
(2) Verwenden Sie Gunicorn+Nginx, um das Service -Installationsmodul pip3 install gunicorn==19.7.1
Beispiel für Nginx -Konfiguration 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 {
}
}
Starten Sie bash startup.sh - Offizieller Zugriff auf Anmeldung mit dem oben erstellten Administratorkonto
http://XXXX:port/login/
Andere Merkmale Integration
Online -Abfrage
- Ändern Sie die Abfrage in Einstellungen in true
- Zur Seite [Hintergrunddatenverwaltung]-[Slave-Bibliotheksadressenkonfiguration] fügen Sie Informationen zur Slave-Bibliothek hinzu
- Gehen Sie zu [Hintergrunddatenverwaltung]-[Workflow-Konfiguration] Seitenkonfiguration Überprüfungsprozess
- Benutzer können Online -Anfragen durchführen, nachdem sie sich um Berechtigungen beantragt und die Überprüfung bestanden haben
- Wenn Sie dynamische Desensibilisierung verwenden müssen, ändern Sie bitte data_masking_on_off in Einstellungen in true und wechseln Sie zur Seite [Backend Data Management]-[Desensibilisierungskonfiguration], um Desensibilisierungsregeln und Felder zu konfigurieren
Langsame Protokollverwaltung
- SlowQuery wird in Einstellungen in TRUE geändert
- Installieren
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
- Erstellen Sie mit src/script/mysql_slow_query_review.sql langsame Protokoll -Sammlungstabellen in die Archer -Datenbank.
- Bereiten Sie SRC/Skript/Analysis_Slow_query.sh für jede Überwachungsmaschine bereit. Beachten Sie, dass
hostname="${mysql_host}:${mysql_port}" im Skript mit den Konfigurationsinformationen der Archer -Hauptbibliothek übereinstimmt, andernfalls werden die entsprechenden Datensätze nicht gefiltert.
SQLADVISOR -Optimierungstool
- Installieren Sie SQLADvisor, Projektadresse
- Ändern Sie die Konfigurationsdatei SQLADvisor in den Programmpfad, der Pfad muss abgeschlossen sein, z.
Alibaba Cloud RDS Management
- Ändern Sie die Konfigurationsdatei aliyun_rds_manage = true
- Installieren Sie das Modul
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
- Fügen Sie auf der Seite [Backend Data Management]-[ALI Cloud-Zertifizierungsinformationen] die AccessKey-Informationen des Alibaba-Cloud-Kontos hinzu und starten Sie den Dienst neu
- Fügen Sie auf der Seite [Hintergrunddatenverwaltung]-[Ali Cloud RDS-Konfiguration] Instanzinformationen hinzu, um das Prozessmanagement und die langsame Protokollverwaltung von Alibaba Cloud RDS zu realisieren
Verstärkung des Administrators, rohe Risse
- Im Patch -Verzeichnis ist der Name django_1.8.17_admin_secure_archer.patch
- Verwenden Sie Befehle
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
Integrierte LDAP
- Ändern Sie die Konfigurationsdatei enable_ldap = true, installieren Sie das relevante Modul. Sie können das LDAP -Konto -Login aktivieren, CentOS als Beispiel nehmen
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- Wenn LDAPs verwendet werden und es sich um ein selbstsigniertes Zertifikat handelt, müssen Sie den Kommentar von auth_ldap_global_options in Einstellungen öffnen
- Konfigurationen beginnen mit auth_ldap in Einstellungen müssen gemäß ihrer eigenen LDAP entsprechend geändert werden
Systemerlebnis
Klicken Sie hier, um zu erleben
| Rolle | Konto | Passwort |
|---|
| Administrator | Bogenschütze | Bogenschütze |
| Ingenieur | Ingenieur | Bogenschütze |
| Rezensent | Auditor | Bogenschütze |
| DBA | DBA | Bogenschütze |
Einige Probleme gelöst
Fehlerprotokoll anzeigen
/tmp/default.log & /tmp/archer.err
Seitungsstil -Anzeigeausnahme
- runserver/debug.sh startet
Debugg ist in den Einstellungen geschlossen, dh Debugg = false, und muss hinzufügen -nicht nach dem Startbefehl und werden - Nginx+Gunicorn/Startup.sh Start
Die statische Ressourcenkonfiguration von Nginx ist falsch location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
Benutzerverwaltung
- Manchmal wird der Benutzerfehler von Nginx+Gunicorn/Startup.sh gemeldet. Die Bereitstellung von Multi-Arbeitern kann auftreten. Das Problem wurde derzeit nicht gelöst.
- Melden Sie sich nicht an (bestätigen Sie, dass der Benutzername und das Passwort korrekt sind).
Überprüfen Sie, ob das Feld des Benutzers IS_Active 1 ist
SQL ist online
Der Cluster zeigt keine Datenbank an
Archer filtert standardmäßig einige Systemdatenbanken, und die Filterliste lautet 'information_schema', 'performance_schema', 'mysql', 'test', 'sys'
Der Rezensent zeigt keine gültigen Benutzer, die keine Rezensent/DBA -Rolle sind
Es gibt keine Ausführungsschaltfläche, nachdem die Überprüfung bestanden wurde
Der SQL-Startprozess von Archer ist: Der Ingenieur gibt SQL-> Auditor Review-> DBA-Ausführung ein. Der Auditor kann nur die Daten überprüfen, die zu seiner eigenen Überprüfung gehört, und der DBA führt alle Daten aus.
SQL -Fehler erkennen
- Ungültiges buchstäbliches für int () mit Basis 10: 'Inception2' '
Stellen Sie PYMYSQL an, um es mit Inception -Versionsinformationen kompatibel zu machen.
Verwenden Sie die Datei im Verzeichnis SRC/Docker/PyMysql, um die Datei in den - Ungültige Quelleninformationen
Das Passwort kann nicht enthalten * - Muss als Start -Anweisung beginnen
Das Python3 -PYMYSQL -Modul sendet die Aussage von Showwarnings an Inception und führt dazu, dass die Gründung einen Fehler "Muss als Beginn als Anweisung" zurückgibt. Der Archer wird berichten, dass die Datei in den /path/to/python3/lib/python3.4/site-packages/pymysql/ Verzeichnis im Protokoll verwendet wird, um die Datei in der Directory /pyto/python3/lib/python3.4/sit-packages/pymeysql/lib/python3. - Falscher Datenbankname '' ''
Inception -Check unterstützt keine Unterabfrage - Ungültige Remote -Sicherungsinformationen
Inception kann keine Verbindung zur Sicherungsbibliothek herstellen
Eine Rollback -Anweisung kann nicht generiert werden
- Überprüfen Sie die Konfiguration im Zusammenhang mit der Inception in der Konfigurationsdatei
- Überprüfen Sie die Berechtigungen für die Prüfung von Benutzern und Sicherungsbetreuung von Inception, Berechtigungsreferenz
— 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'
- Überprüfen Sie das Binlog -Format, es muss Zeilen sein, Binlog_Row_image ist voll ist
- Überprüfen Sie, ob die DML -Tabelle Primärschlüssel enthält
- Überprüfen Sie, ob die Anweisung die Daten beeinflusst
- Überprüfen Sie, ob die Sicherungsbibliothek für AutoCommit aktiviert ist
- Überprüfen Sie, ob es sich um eine kontinuierliche Tischaktualisierungsanweisung handelt
- Überprüfen Sie, ob die Ausführungsinstanz MySQL ist
Desensibilisierungsregeln sind nicht wirksam
- Überprüfen Sie, ob das Feld Desensibilisierungsfeld trifft (ob es sich um fallempfindlich handelt)
- Überprüfen Sie, ob der reguläre Ausdruck der Desensibilisierungsregel mit den Daten übereinstimmen kann. Wenn es nicht mithalten kann, wird das ursprüngliche Ergebnis zurückgegeben.
- Überprüfen Sie, ob der Parameter check_query_on_off ausgeschaltet ist, wodurch die Gründung keine Anweisungen behoben hat, die nicht direkt desensibilisiert sind
| Regeltyp | Regelmäßige Ausdrücke, die für die regelmäßige Desensibilisierung verwendet werden, müssen gruppiert werden, und versteckte Gruppen werden durch **** ersetzt. | Gruppen, die versteckt werden müssen | Regelbeschreibung |
|---|
| Telefonnummer | (. {3}) (.*) (. {4}) | 2 | Behalten Sie die ersten drei und die letzten vier |
| ID -Nummer | (.*) (. {4}) $ | 2 | Die letzten vier versteckt versteckt |
| Bankkarte | (.*) (. {4}) $ | 2 | Die letzten vier versteckt versteckt |
| Post | (.*)@(.*) | 2 | Suffix entfernen |
Der Rezensent kann die Anfragerlaubnis nicht sehen
Die Liste der Abfrageberechtigungsanwendung ist im Meldungssymbol in der oberen rechten Ecke versteckt. Das Symbol wird angezeigt, wenn Informationen überprüft werden müssen. Sie können eingeben, um die Aufgabendaten anzuzeigen.
Langsame Protokolle werden nicht angezeigt
- Überprüfen Sie die Konfiguration im Skript und bewahren Sie den Konfigurationsinhalt der Hauptbibliothek der Hostnamen und der Archer konsistent auf und werden für den Filter von Archer verwendet.
- Überprüfen Sie, ob die von der Tabelle mySQL_Slow_query_review_history gesammelten Protokollinformationen mit dem Hostnamen übereinstimmen
Zeitgesteuerte Aufgabe nicht ausgeführt
- Überprüfen Sie, ob die zugehörige Tabelle von Django-apScheduler erstellt wurde, Sie können mit
python3 manage.py migrate , um es zu erstellen
Kontaktinformationen
- QQ Group 1 Group 524233225 (voll)
- QQ Group 2 Gruppe 669833720