Hướng dẫn airflow mysql connection - luồng không khí kết nối mysql
Kết nối MySQLLoại kết nối MySQL cung cấp kết nối với cơ sở dữ liệu MySQL. Show Định cấu hình kết nốiMáy chủ (bắt buộc)Máy chủ để kết nối với. Lược đồ (tùy chọn)Chỉ định tên lược đồ sẽ được sử dụng trong cơ sở dữ liệu. Yêu cầu đăng nhập)Chỉ định tên người dùng để kết nối. Mật khẩu được yêu câu)Chỉ định mật khẩu để kết nối. Thêm (tùy chọn)Chỉ định các tham số bổ sung (như từ điển JSON) có thể được sử dụng trong kết nối MySQL. Các tham số sau được hỗ trợ:
Ví dụ về trường bổ sung ”: { "charset": "utf8", "cursor": "sscursor", "local_infile": true, "unix_socket": "/var/socket", "ssl": { "cert": "/tmp/client-cert.pem", "ca": "/tmp/server-ca.pem'", "key": "/tmp/client-key.pem" } } hoặc { "charset": "utf8", "cursor": "sscursor", "local_infile": true, "unix_socket": "/var/socket", "ssl": "{\"cert\": \"/tmp/client-cert.pem\", \"ca\": \"/tmp/server-ca.pem\", \"key\": \"/tmp/client-key.pem\"}" } Khi chỉ định kết nối là URI (trong biến { "charset": "utf8", "cursor": "sscursor", "local_infile": true, "unix_socket": "/var/socket", "ssl": "{\"cert\": \"/tmp/client-cert.pem\", \"ca\": \"/tmp/server-ca.pem\", \"key\": \"/tmp/client-key.pem\"}" }7), bạn nên chỉ định nó theo cú pháp tiêu chuẩn của các kết nối DB - nơi các tính năng bổ sung được truyền dưới dạng tham số của URI. Lưu ý rằng tất cả các thành phần của URI nên được mã hóa URL. Ví dụ:
export AIRFLOW_CONN_MYSQL_DEFAULT='mysql://mysql_user::3306/mysqldb?ssl=%7B%22cert%22%3A+%22%2Ftmp%2Fclient-cert.pem%22%2C+%22ca%22%3A+%22%2Ftmp%2Fserver-ca.pem%22%2C+%22key%22%3A+%22%2Ftmp%2Fclient-key.pem%22%7D' Ghi chú Nếu gặp UnicodedEcodeError khi làm việc với kết nối MySQL, hãy kiểm tra độ chao được xác định được khớp với ký tự dữ liệu. Aug 20, 2021Airflow in the nut shell:
1 phút quảng cáo
Aug 20, 2021Airflow in the nut shell: Ngày xửa ngày xưa. Khi mình vào TIKI vào T9/2018, một lần được cho vào con airflow chính, một cách ngây thơ updates 1 packages.
Sau đó tắt máy đi ngủ, tới chiều anh em ping nhau, Airflow ra đi rồi các bác ạ, Rì pọt ra đi hết rồi ông giáo ạ. Nghe xong tè ra quần luôn. Mistakes:
Nông dân tập thành cloud #1 năm sau (T9/2019) Thời điểm này TIKI migrate từ Data Center lên (GCP) Google Cloud Platform. Thế là phải chuẩn bị bưng hệ thống một lần nữa. Ở thời điểm này có 3 con airflow đang chạy:
Nghĩ, giờ lên cloud mà xài công nghệ out date thì nông dân quá. Quyết tâm chơi lớn cài airflow latest luôn. DAG thì chắc chỉ cần copy qua là xong, không vỡ gì âu. Được cấp 1 con VM mới trên GCP & ssh vào pip install liền. Đang đợi thì tự tát cái bếp. Học Infras As Code các thứ rồi mà lại tay chân thế. Thế là ngồi viết ansible để cài airflow =)). Pip install thì vài phút, ngồi viết mất vài tiếng. Copy dag nào thì dags đó vỡ
Ngồi nghĩ nghĩ, mếu được, thế này sau này kiểu gì cũng sẽ gặp case tương tự. Lúc này sau 1 thời gian được rèn luyện ansible và tập làm văn kubernetes manifests bắt đầu có ý tưởng chế 1 yaml để viết config & build nó thành dag. Xem bài viết nà TLDR:
Tiếp theo là giờ sẽ deploy ở đâu đây? Tuy là nông dân nhưng vẫn rất thích đú trend Cờ lâu nây típ (Cloud Native) thế là bắt tay vào nghiên cứu để chạy trên kubernetes luôn.
Nghiên cứu vài này thì cũng bắt đầu vào thiết kế & bắt tay vào viết k8s manifest. Những tiêu chí khi deploy airflow trên k8s.
Với những yêu cầu như trên thì mình thiết kế các deployment riêng như sau:
Về docker image: Thời điểm này airflow chưa có official image và community docker vẫn còn thiếu nhiều thứ. Mình quyết định viết riêng 1 dockerfile & đưa vào những dependencies cần thiết đủ để airflow chạy được. Sau khi đủ các nguyên vật liệu thì bắt đầu lên đồ thôi.
Ngoài cách deploy airflow thì còn những bài toán sau cần giải quyết Cost Saving vs Stable
Lưu file yaml ở đâu?
Lưu dag ở đâu?
⇒ Vì vậy mình chọn shared storages: không ảnh hưởng nhiều tới thời gian chạy task, 1 ưu điểm nữa là nó đơn giản hơn architect của hệ thống. Logging như thế nào?
Authentication & Authorization
Monitor & Alerting
Backfill dags như thế nào?
Vài cảm nhận:
Airflow 2 # #Version 2.0 được release vào ngày 2020-12-18 thế nhưng mình chưa dám update ngay, vì trước giờ mỗi lần chỉ update patch version của airflow không què chổ này thì chổ kia. Mà lỗi gặp nhiều nhất vẫn là google oauth2, và phần lớn là do lỗi depedencies 😐. Sau hơn 8h tháng delay thì quyết tâm làm 1 lần sau cuối. Lên danh sách những việc cần làm:
Sau khi lên bridges & chọn đuợc ngày lành tháng tốt. Bắt đầu upgrade airflow 2. Ở tiki thì đa số DAG được chạy vào ban đêm & buổi sáng. Riêng buổi chiều & tối thì rất ít. Thời điểm vàng là đây.
Vài cảm nhận về Airflow 2:
Kết luận #Còn chờ đợi gì mà không lên airflow 2 ngay và thôi. Mình đã upgrade thành công bạn cũng thế. Và nhớ coi ngày trước khi upgrade nha. 1 phút quảng cáo
|