pemanah
Platform operasi SQL otomatis berdasarkan Inception mendukung pesanan kerja, audit, tugas waktu, email, OSC, dan fungsi lainnya. Ini juga dapat mengonfigurasi kueri MySQL, manajemen kueri yang lambat, manajemen sesi, dll.
Daftar isi
- Fungsi utama
- Spesifikasi desain
- Pengalaman online
- Memasang
- Penyebaran Docker
- Instalasi Manual
- berlari
- Integrasi fungsional
- Kueri Permintaan & Desensitisasi Online
- Manajemen log lambat
- Alat Optimasi SQL
- Alibaba Cloud RDS Management
- Q&A
Bahasa Pengembangan dan Lingkungan Rekomendasi
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
Fungsi utama
- Tinjauan otomatis memulai peluncuran SQL, pesanan kerja dikirimkan, dan awal secara otomatis ditinjau. Setelah ulasan disahkan, auditor perlu memeriksanya secara manual.
- Ulasan Manual
Inception secara otomatis ditinjau pesanan kerja akan ditinjau oleh insinyur R&D lainnya atau manajer R&D. Operasi DBA akan menjalankan SQL
Mengapa kita membutuhkan ulasan manual?
Ini mengikuti kesadaran proses operasi online di bidang operasi dan pemeliharaan. Jika seorang insinyur ingin memperbarui SQL database online, yang terbaik adalah memeriksanya oleh insinyur lain. Sering kali, DBA tidak tahu arti bisnis SQL, jadi tinjauan manual yang terbaik untuk ditinjau oleh insinyur R&D lainnya atau manajer R&D. Ini adalah konsep desain Archer - Pernyataan rollback dapat ditampilkan di rollback data tampilan kerja, mendukung pengiriman satu klik dari pesanan kerja rollback
- Jalankan SQL secara teratur
Perintah kerja yang disetujui oleh DBA dapat dieksekusi secara berkala. Waktu eksekusi dapat dimodifikasi sebelum dieksekusi dan dapat diakhiri kapan saja. - Eksekusi PT-OSC Mendukung Tampilan Kemajuan Eksekusi PT-OSC, dan Anda dapat mengklik untuk membatalkan proses PT-OSC
- Perpustakaan Kueri MySQL, Tabel, dan Kata Kunci Secara Otomatis Menyelesaikan Pembatasan Hasil Kueri, Ekspor Hasil Permintaan, Tampilan Struktur Tabel, dan Tampilan Set Multi-Hasil
- Manajemen Izin Kueri MySQL didasarkan pada pernyataan kueri penguraian awal. Izin kueri mendukung membatasi aplikasi, peninjauan dan manajemen izin kueri tingkat meja, mendukung konfigurasi proses audit, dan audit multi-level.
- Desensitisasi dinamis mySQL Query didasarkan pada pernyataan kueri penguraian awal, dan dapat mencapai desensitisasi dinamis data sensitif dalam kombinasi dengan konfigurasi bidang desensitisasi dan aturan desensitisasi (ekspresi reguler).
- Manajemen log lambat didasarkan pada PT_QUERY_DIGEST dari Percona-Toolkit untuk menganalisis dan menyimpan log lambat, dan menampilkannya di sisi web.
- Pemberitahuan email dapat dikonfigurasi dengan pengingat email untuk memberi tahu aplikasi online, aplikasi izin, hasil tinjauan, dll., Dan memberi tahu login abnormal.
Spesifikasi desain
- Desain dan spesifikasi database yang masuk akal sangat diperlukan, terutama database MySQL. Kernel tidak sekuat Oracle, DB2, SQL Server dan database lainnya. Ini membutuhkan desain yang masuk akal untuk bermain sesuai kekuatan Anda dan menghindari kelemahan Anda. Industri internet memiliki spesifikasi desain MySQL yang matang, dan ditulis sebagai berikut. Silakan minta pembaca untuk melatih semua pengembang backend dengan spesifikasi ini sebelum perusahaan online untuk menggunakan sistem Archer, sehingga mereka tahu alasannya dan mengapa.
Unduh tautan https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
File konfigurasi utama
- Archer/Archer/Settings.py
Mengadopsi Docker
- Gambar Docker, Wiki Referensi
- Gambar Inception: https://hub.docker.com/r/hhyo/inseption
- Gambar Archer: https://hub.docker.com/r/hhyo/archer
- Produksi Gambar Docker Terima kasih @小彩票线
Langkah Instalasi Manual
- Persiapan Lingkungan
- Mengkloning kode ke lokal atau mengunduh paket zip
git clone https://github.com/jly8866/archer.git - Instal Inception
Galeri Proyek
- Instal Python3, Versi Nomor> = 3.4 (karena Anda perlu memodifikasi modul resmi, silakan gunakan VirtualEnv atau VenV untuk mengisolasi lingkungan secara terpisah!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- Instal modul terkait yang diperlukan
source venv4archer/bin/activate
pip3 install -r requirements.txt
- Modul Pymysql Informasi Versi Inception Kompatibel Menggunakan file dalam direktori SRC/Docker/Pymysql untuk mengganti /path/to/python3/lib/python3.4/site-packages/pymysql/ file yang sesuai
Persiapkan sebelum memulai
- Buat tabel database pemanah itu sendiri
- Ubah semua informasi alamat Archer/Archer/Settings.py, termasuk database dan bagian inciNTON_XXX
- Buat tabel database pemanah itu sendiri melalui model. Jika ini adalah peningkatan versi yang ada, silakan gunakan skrip ubah di src/init_sql untuk mengubah database asli v1.1.1 cabang. Silakan gunakan v1.1.1-> v2.0.sql untuk mengubah cabang master asli. Silakan gunakan master-> v2.0.sql untuk mengubah instalasi baru. Harap gunakan metode berikut untuk menginisialisasi dengan cara berikut
python3 manage.py makemigrations sql
python3 manage.py migrate
- Buat pengguna root sistem admin (pengguna ini dapat masuk ke admin Django untuk mengelola model)
python3 manage.py createsuperuser - Ada dua cara untuk memulai
(1) Gunakan runserver built-in django untuk memulai layanan, dan disarankan untuk tidak menggunakannya di lingkungan produksi
bash debug.sh
(2) Gunakan Gunicorn+Nginx untuk memulai modul pemasangan layanan pip3 install gunicorn==19.7.1
Contoh konfigurasi 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 {
}
}
Mulai bash startup.sh - Akses Resmi ke Masuk dengan Akun Administrator Dibuat di atas
http://XXXX:port/login/
Integrasi fitur lainnya
Kueri online
- Ubah kueri menjadi true dalam pengaturan
- Ke halaman [Manajemen Data Latar Belakang]-[Konfigurasi Alamat Perpustakaan Slave], Tambahkan Informasi Perpustakaan Slave
- Buka [Manajemen Data Latar Belakang]-[Konfigurasi Alur Kerja] Halaman Konfigurasi Proses Tinjauan
- Pengguna dapat melakukan pertanyaan online setelah mengajukan izin dan lulus ulasan
- Jika Anda perlu menggunakan desensitisasi dinamis, silakan ubah data_masking_on_off dalam pengaturan menjadi true, dan buka halaman [Backend Data Management]-[Konfigurasi Desensitisasi] untuk mengonfigurasi aturan dan bidang desensitisasi desensitisasi
Manajemen log lambat
- SlowQuery diubah menjadi true dalam pengaturan
- Instal Percona-Toolkit (Versi = 3.0.6), mengambil CentOS sebagai contoh
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
- Buat Tabel Koleksi Log Lambat ke Database Archer Menggunakan SRC/Script/MySQL_SLOW_QUERY_REVIEW.SQL
- Menyebarkan SRC/Script/Analisis_Slow_Query.sh ke setiap mesin pemantauan. Perhatikan bahwa
hostname="${mysql_host}:${mysql_port}" dalam skrip konsisten dengan informasi konfigurasi perpustakaan utama Archer, jika tidak catatan yang relevan tidak akan difilter.
Alat Optimasi SQLAdvisor
- Instal SQLAdvisor, Alamat Proyek
- Ubah file konfigurasi SQLAdvisor ke jalur program, jalur harus lengkap, seperti '/opt/sqladvisor/sqladvisor/sqladvisor'
Alibaba Cloud RDS Management
- Ubah file konfigurasi aliyun_rds_manage = true
- Instal 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
- Pada halaman [Backend Data Management]-[ALI Cloud Sertifikasi] halaman, tambahkan informasi AccessKey dari Akun Cloud Alibaba dan restart Layanan
- Pada halaman [Manajemen Data Latar Belakang]-halaman [Ali Cloud RDS], tambahkan informasi contoh untuk mewujudkan manajemen proses dan manajemen log yang lambat dari Alibaba Cloud RDS
Penguatan backend admin, retak tahan kasar
- Di Direktori Patch, namanya Django_1.8.17_admin_secure_archer.patch
- Gunakan perintah
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
LDAP terintegrasi
- Ubah file konfigurasi enable_ldap = true, instal modul yang relevan, Anda dapat mengaktifkan login akun LDAP, ambil CentOS sebagai contoh
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- Jika LDAP digunakan dan itu adalah sertifikat yang ditandatangani sendiri, Anda perlu membuka komentar auth_ldap_global_options dalam pengaturan
- Konfigurasi dimulai dengan auth_ldap dalam pengaturan perlu dimodifikasi sesuai dengan LDAP mereka sendiri yang sesuai
Pengalaman sistem
Klik untuk mengalami
| Peran | akun | kata sandi |
|---|
| administrator | pemanah | pemanah |
| insinyur | insinyur | pemanah |
| Pengulas | Auditor | pemanah |
| DBA | DBA | pemanah |
Beberapa masalah terpecahkan
Lihat log kesalahan
/tmp/default.log & /tmp/archer.err
Pengecualian tampilan gaya halaman
- runserver/debug.sh dimulai
Debug ditutup dalam pengaturan, yaitu, debug = false, dan perlu ditambahkan -menginspirasi setelah perintah startup, dan menjadi - Nginx+Gunicorn/Startup.sh Start
Konfigurasi sumber daya statis nginx salah location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
Manajemen Pengguna
- Terkadang kesalahan pengguna dilaporkan oleh Nginx+Gunicorn/Startup.sh. Penyebaran multi-pekerja dapat terjadi. Masalahnya belum diselesaikan saat ini.
- Tidak dapat masuk (Konfirmasikan bahwa nama pengguna dan kata sandi sudah benar)
Periksa apakah pengguna is_active pengguna adalah 1
SQL online
Cluster tidak menampilkan database
Archer akan memfilter beberapa basis data sistem secara default, dan daftar filter adalah 'information_schema', 'performance_schema', 'mysql', 'test', 'sys'
Peninjau tidak menunjukkan kepada pengguna yang valid yang bukan peran pengulas/DBA
Tidak ada tombol eksekusi setelah ulasan dilewati
Proses peluncuran SQL Archer adalah: Insinyur mengirimkan SQL-> Auditor Review-> Eksekusi DBA. Auditor hanya dapat meninjau data yang dimiliki oleh ulasannya sendiri, dan DBA menjalankan semua data.
Mendeteksi kesalahan SQL
- literal tidak valid untuk int () dengan basis 10: 'inception2'
Sesuaikan pymysql untuk membuatnya kompatibel dengan informasi versi awal.
Gunakan file dalam direktori SRC/Docker/Pymysql untuk mengganti file di /path/python3/lib/python3.4/site-packages/pymysql/ direktori - Informasi sumber yang tidak valid
Kata sandi tidak dapat menyertakan * - Harus Mulai Sebagai Pernyataan Mulai
Modul Pymysql Python3 akan mengirim pernyataan peringatan pertunjukan ke awal, menyebabkan awal mengembalikan kesalahan "harus mulai sebagai pernyataan begin". Archer akan melaporkan bahwa file di /path/to/python3/lib/python3.4/site-packages/pymysql/ direktori digunakan dalam log untuk mengganti file di /pathy/python3/lib/python3.4/site-packages/pymysql/ directory. - Nama basis data yang salah ''
Pemeriksaan awal tidak mendukung subquery - Informasi cadangan jarak jauh tidak valid
Inception tidak dapat terhubung ke pustaka cadangan
Tidak dapat menghasilkan pernyataan rollback
- Periksa konfigurasi yang terkait dengan awal di file konfigurasi
- Periksa izin pengguna audit awal dan pengguna cadangan, referensi izin
— 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'
- Periksa format binlog, harus baris, binlog_row_image penuh
- Periksa apakah tabel DML memiliki kunci primer
- Periksa apakah pernyataan itu mempengaruhi data
- Periksa apakah pustaka cadangan diaktifkan untuk komitmen otomatis
- Periksa apakah itu pernyataan pembaruan tabel berkelanjutan
- Periksa apakah contoh eksekusi adalah mysql
Aturan desensitisasi tidak berlaku
- Periksa apakah bidang desensitisasi mengenai (apakah itu sensitif)
- Periksa apakah ekspresi reguler aturan desensitisasi dapat mencocokkan data. Jika tidak cocok, hasil aslinya akan dikembalikan.
- Periksa apakah parameter check_query_on_off dimatikan, menyebabkan awal gagal menyelesaikan pernyataan yang tidak peka langsung mengembalikan referensi konfigurasi aturan desensitisasi hasil
| Jenis aturan | Ekspresi reguler yang digunakan untuk desensitisasi reguler harus dikelompokkan, dan kelompok tersembunyi akan digantikan oleh ****. | Kelompok yang perlu disembunyikan | Deskripsi aturan |
|---|
| Nomor telepon | (. {3}) (.*) (. {4}) | 2 | Simpan tiga yang pertama dan empat terakhir |
| Nomor ID | (.*) (. {4}) $ | 2 | Tersembunyi empat terakhir |
| kartu bank | (.*) (. {4}) $ | 2 | Tersembunyi empat terakhir |
| Surat | (.*)@(.*) | 2 | Hapus akhiran |
Pengulas tidak dapat melihat izin kueri untuk mengajukan perintah kerja yang tertunda
Daftar yang harus dilakukan aplikasi izin kueri disembunyikan di ikon pesan di sudut kanan atas. Ikon akan ditampilkan ketika ada informasi yang akan ditinjau. Anda dapat masuk untuk melihat data yang harus dilakukan.
Log lambat tidak ditampilkan
- Periksa konfigurasi dalam skrip, dan pertahankan konten konfigurasi dari nama host dan perpustakaan utama Archer konsisten, dan digunakan untuk memfilter Archer.
- Periksa apakah informasi log yang dikumpulkan oleh tabel mysql_slow_query_review_history konsisten dengan nama host
Tugas waktunya tidak dieksekusi
- Periksa apakah tabel terkait django-apscheduler telah dibuat, Anda dapat menggunakan
python3 manage.py migrate untuk membuatnya
Informasi kontak
- QQ Group 1 Group 524233225 (penuh)
- QQ Group 2 Group 669833720