Secara default, Looker menggunakan database dalam memori HyperSQL untuk menyimpan konfigurasi, pengguna, dan data lainnya. Pada instance yang sibuk, database ini dapat bertambah hingga berukuran gigabyte, yang dapat menyebabkan masalah performa, tekanan memori Java, dan waktu startup yang lama.
Pada instance yang dihosting pelanggan, sebaiknya ganti backend database HyperSQL dengan database MySQL lengkap jika database HyperSQL internal berukuran lebih dari 600 MB. Untuk memeriksa ukuran database HyperSQL, lihat ukuran file looker.script:
cd looker
cd .db
ls -lah
Jika ukuran file looker.script lebih dari 600 MB, ikuti prosedur berikut untuk bermigrasi ke database MySQL eksternal.
Menyediakan instance dan pengguna MySQL
Anda dapat menyediakan instance MySQL 8.4.X (direkomendasikan) atau MySQL 8.0.X untuk digunakan sebagai backend. Versi MySQL sebelum 8.0 tidak didukung.
Looker 26.6 dan yang lebih baru mendukung MySQL 8.4.X untuk database backend Looker. Untuk instance yang dihosting pelanggan yang menggunakan MySQL 8.0.X untuk database backend Looker, sebaiknya update ke MySQL 8.4.X segera setelah Anda mengupdate instance Looker ke versi 26.6 atau yang lebih baru.
Di AWS RDS, instance class db.m5.large mungkin cukup sebagai backend untuk satu instance Looker. Meskipun penggunaan database yang sebenarnya kemungkinan akan berada dalam rentang 5-10 GB, sebaiknya sediakan penyimpanan SSD 100-150 GB karena IOPS yang disediakan didasarkan pada jumlah penyimpanan yang diminta.
MySQL 8.4.X
Looker mendukung penggunaan MySQL 8.4.X sebagai database internal yang dimulai dengan Looker 26.6. Untuk MySQL 8.4.X, Anda dapat menggunakan salah satu plugin autentikasi MySQL berikut, seperti yang dijelaskan di bagian berikut:
Menggunakan caching_sha2_password
Di MySQL 8.4.X, plugin autentikasi default adalah caching_sha2_password. Looker menyediakan dua cara untuk menggunakan plugin caching_sha2_password:
- Saat menggunakan koneksi SSL untuk database internal: Tidak diperlukan kunci publik RSA. Looker terhubung dengan aman ke database menggunakan kredensial pengguna yang diberikan. Lihat bagian Membuat file kredensial database di halaman ini untuk menyiapkan koneksi SSL ke database Anda.
- Jika tidak terhubung dengan SSL diaktifkan: Looker secara default menggunakan opsi
--get-server-public-keyuntuk terhubung ke database internal saat plugincaching_sha2_passworddigunakan oleh akun pengguna yang diberikan ke Looker. Pastikan lingkungan jaringan diamankan jika SSL tidak diaktifkan.
Untuk menggunakan plugin caching_sha2_password, siapkan pengguna dengan mengeluarkan pernyataan berikut:
CREATE USER 'DB_username' IDENTIFIED WITH caching_sha2_password BY 'password';
Ganti kode berikut:
- DB_username: nama pengguna
- password: sandi unik dan aman
Menggunakan mysql_native_password
Looker berfungsi dengan plugin mysql_native_password untuk melakukan autentikasi ke database MySQL melalui driver JDBC. Agar MySQL 8.4.X berfungsi dengan plugin mysql_native_password, Anda harus melakukan langkah-langkah tambahan berikut:
Konfigurasi database MySQL untuk mengaktifkan plugin
mysql_native_password. Hal ini dapat dilakukan dengan beberapa cara, bergantung pada cara database MySQL Anda di-deploy dan jenis akses yang Anda miliki ke konfigurasi:- Mulai server MySQL dengan
--mysql-native-password=ON. Tetapkan properti di file konfigurasi
my.cnf:[mysqld] mysql_native_password=ONJika instance MySQL dihosting di Google Cloud, AWS, atau Azure, plugin
mysql_native_passwordakan otomatis diaktifkan. Lihat dokumentasi penyedia Anda untuk mendapatkan petunjuk terperinci.
- Mulai server MySQL dengan
Buat pengguna:
CREATE USER 'DB_username' IDENTIFIED WITH mysql_native_password BY 'password';Ganti kode berikut:
- DB_username: nama pengguna
- password: sandi unik dan aman
MySQL 8.0.X
Di MySQL 8.0.X, plugin autentikasi default adalah caching_sha2_password. Looker menggunakan plugin mysql_native_password untuk mencoba melakukan autentikasi ke database MySQL melalui driver JDBC. Agar MySQL 8.0.X berfungsi dengan benar, Anda harus melakukan langkah-langkah tambahan berikut:
Konfigurasi database MySQL untuk menggunakan plugin
mysql_native_password. Hal ini dapat dilakukan dengan beberapa cara, dan akan bergantung pada cara database MySQL 8 Anda di-deploy dan jenis akses yang Anda miliki ke konfigurasi:Mulai proses dengan flag
--default-auth=mysql_native_passwordTetapkan properti di file konfigurasi
my.cnf:[mysqld] default-authentication-plugin=mysql_native_passwordJika instance database Anda dihosting melalui AWS RDS, tetapkan parameter
default_authentication_pluginmelalui Grup Parameter RDS yang diterapkan ke instance database ini.
Buat pengguna:
CREATE USER 'DB_username' IDENTIFIED WITH mysql_native_password BY 'password';Ganti kode berikut:
- DB_username: nama pengguna
- password: sandi unik dan aman
Menyesuaikan MySQL
Sesuaikan setelan berikut di instance MySQL Anda.
Meningkatkan ukuran paket maksimum
Ukuran default MySQL max_allowed_packet terlalu kecil untuk migrasi database dan dapat menyebabkan migrasi gagal dengan error PACKET_TOO_LARGE. Tetapkan max_allowed_packet ke nilai maksimum yang diizinkan, yaitu 1073741824:
max_allowed_packet = 1073741824
Menetapkan algoritma tabel sementara
MySQL 8 menangani tabel sementara internal secara berbeda dari versi sebelumnya. Setelan default dapat menyebabkan masalah saat menjalankan beberapa kueri yang diperlukan agar Looker dapat berjalan, terutama untuk instance Looker dengan banyak pengguna dan project. Praktik terbaiknya adalah menetapkan setelan server global berikut:
internal_tmp_mem_storage_engine = MEMORY
Mengonfigurasi himpunan karakter
Tetapkan parameter default berikut untuk menggunakan UTF8mb4, yang mendukung himpunan karakter UTF8. Lihat artikel Di MySQL, jangan pernah menggunakan "utf8". Gunakan "utf8mb4". untuk mengetahui informasi tentang alasan kami merekomendasikan penggunaan UTF8mb4, bukan UTF8, dengan MySQL.
character_set_client = utf8mb4
character_set_results = utf8mb4
character_set_connection = utf8mb4
character_set_database = utf8mb4
character_set_server = utf8mb4
collation_connection = utf8mb4_general_ci
collation_server = utf8mb4_general_ci
Di instance Amazon RDS, Anda menerapkan setelan ini dengan membuat atau mengubah grup parameter dan mengedit setelan yang sesuai. Sebaiknya salin grup parameter saat ini dan lakukan perubahan pada salinan tersebut, terutama jika Anda berbagi grup parameter di beberapa instance RDS. Setelah menyimpan grup parameter, terapkan ke instance RDS. Reboot mungkin diperlukan.
Menetapkan skema replika
Looker mengandalkan fungsi yang memerlukan binlog mixed atau row. Jika Anda menghosting instance MySQL sendiri, tetapkan binlog_format ke mixed atau row dengan mengeluarkan salah satu perintah berikut:
SET GLOBAL binlog_format = 'MIXED';
atau
SET GLOBAL binlog_format = 'ROW';
Membuat database dan memberikan izin pengguna
Buat database di instance database:
create database DB_name default character set DB_charset default collate DB_collation;
Kemudian, berikan izin kepada pengguna yang Anda buat saat Anda menyediakan instance dan pengguna MySQL:
grant all on DB_name.* to 'DB_username'@'%';
grant all on looker_tmp.* to 'DB_username'@'%';
Ganti kode berikut:
- DB_name: nama database
- DB_charset: himpunan karakter yang cocok dengan setelan grup parameter instance RDS (untuk dukungan UTF8 yang sebenarnya, sebaiknya gunakan
utf8mb4) - DB_collation: kolasi yang cocok dengan setelan grup parameter instance RDS (untuk dukungan UTF8 yang sebenarnya, sebaiknya gunakan
utf8mb4_general_ci) - DB_username: nama pengguna
Database looker_tmp di baris terakhir tidak harus ada, tetapi pernyataan grant diperlukan untuk pelaporan internal.
Membuat file kredensial database
Looker perlu mengetahui database MySQL mana yang akan digunakan dan kredensial mana yang akan digunakan. Di direktori Looker, buat file bernama looker-db.yml dengan konten berikut, ganti DB_hostname, DB_username, DB_password, dan DB_name dengan nilai untuk database Anda:
dialect: mysql_8
host: DB_hostname
username: DB_username
password: DB_password
database: DB_name
port: 3306
Jika database MySQL Anda memerlukan koneksi SSL, tambahkan baris berikut ke looker-db.yml:
ssl: true
Jika Anda juga ingin mengaktifkan verifikasi sertifikat SSL, tambahkan baris berikut ke looker-db.yml:
verify_ssl: true
Secara opsional, Anda juga dapat menentukan parameter JDBC tambahan lainnya yang didukung oleh Driver JDBC MariaDB dengan menambahkan jdbc_additional_params. Misalnya, jika Anda perlu menggunakan file Trust Store tertentu, Anda dapat menambahkan parameter berikut ke string koneksi JDBC MySQL:
jdbc_additional_params: trustStore=/path/to/my/truststore.jks&keyStore=/path/to/my/keystore.jks
Untuk instalasi yang dihosting pelanggan, Anda dapat secara opsional menentukan jumlah maksimum koneksi yang dapat dibuat Looker dengan database Anda dengan menambahkan max_connections. Misalnya, untuk membatasi jumlah koneksi serentak ke database Anda menjadi 10, tambahkan hal berikut:
max_connections: 10
Dalam skema enkripsi Looker, semua data sensitif dalam database dienkripsi saat tidak aktif. Meskipun seseorang mendapatkan akses ke kredensial database teks biasa dan mengakses database, Looker akan mengenkripsi atau melakukan hashing data sensitif sebelum disimpan. Hal ini berlaku untuk elemen seperti sandi, kredensial database analisis, dan cache kueri. Namun, jika Anda tidak ingin menyimpan sandi teks biasa untuk konfigurasi ini dalam file looker-db.yml di disk, Anda dapat mengonfigurasi variabel lingkungan LOOKER_DB agar berisi daftar kunci dan nilai untuk setiap baris dalam file looker-db.yml. Contoh:
export LOOKER_DB="dialect=mysql_8&host=localhost&username=root&password=&database=looker&port=3306"
Mencadangkan direktori .db
Cadangkan direktori .db, yang berisi file yang diperlukan untuk membuat database HyperSQL dalam memori, jika Anda perlu memulihkan HyperSQL:
cp -r .db .db-backup
tar -zcvf db-backup.tar.gz ./.db-backup
Memigrasikan database
Memigrasikan database ke MySQL dapat memerlukan waktu berjam-jam pada instance berukuran sedang atau besar, terutama jika database HyperSQL berukuran 1 GB atau lebih. Sebaiknya upgrade instance EC2 ke m5.2xlarge (dengan RAM 32 GB untuk memungkinkan heap 26 GB yang ditentukan dalam langkah-langkah) selama migrasi, yang mengurangi waktu yang diperlukan menjadi ~10 menit.
Di host Looker:
cd looker ./looker stop vi lookerDalam skrip startup Looker, buat baris kedua baru dalam file:
exitHentikan instance di konsol AWS. Setelah berhenti, ubah ukuran instance EC2 menjadi
m5.2xlarge. Kemudian, mulai ulang instance.SSH ke host sebagai pengguna Looker. Pertama, pastikan Java tidak berjalan, lalu jalankan:
cd looker java -Xms26000m -Xmx26000m -jar looker.jar migrate_internal_data looker-db.ymlSaat menjalankan langkah
migrate_internal_data,libcryptmungkin tidak ditemukan dan stack trace akan muncul, dimulai dengan ini:NotImplementedError: getppid unsupported or native support failed to load ppid at org/jruby/RubyProcess.java:752 ppid at org/jruby/RubyProcess.java:749Jika hal ini terjadi, tetapkan
LD_LIBRARY_PATHsecara manual sebelum menjalankan perintah Java:export LD_LIBRARY_PATH=$HOME/looker/.tmp/:$LD_LIBRARY_PATHSetelah berhasil diselesaikan, hentikan instance dari konsol AWS.
Sekarang Anda dapat memulihkan instance ke ukuran aslinya.
Mulai ulang instance.
Memulai Looker
Edit skrip startup Looker dan hapus baris
exityang Anda tambahkan sebelumnya.Pastikan tidak ada argumen yang ditentukan di
LOOKERARGSdalam skrip startup. Sebagai gantinya, semua argumen harus dipindahkan ke filelookerstart.cfgagar tidak ditimpa oleh versi baru skrip startup. Simpan dan keluar dari skrip startup.Edit
lookerstart.cfg. Konfigurasinya akan terlihat seperti berikut:LOOKERARGS="-d looker-db.yml"Jika ada argumen lain dalam skrip startup Looker, tambahkan ke file
lookerstart.cfg.Arsipkan direktori
.db, jika belum diarsipkan.mv .db .db-backup tar -zcvf db-backup.tar.gz ./.db-backup rm -rf ./.db-backup/Mulai Looker:
./looker start
Memastikan Looker menggunakan database baru
Jika Looker berhasil menggunakan backend MySQL, Anda akan melihat koneksi jaringan antara instance Looker dan instance database baru. Untuk memeriksanya, jalankan perintah berikut di instance Looker:
netstat -na | grep 3306
Anda akan melihat beberapa koneksi ke instance database. Berikut adalah contoh output, yang menampilkan instance DB di alamat IP 10.0.3.155:
looker@instance1:~$ netstat -na | grep 3306
tcp6 0 0 10.0.5.131:56583 10.0.3.155:3306 ESTABLISHED
tcp6 0 0 10.0.5.131:56506 10.0.3.155:3306 ESTABLISHED
tcp6 0 0 10.0.5.131:56582 10.0.3.155:3306 ESTABLISHED
tcp6 0 0 10.0.5.131:56508 10.0.3.155:3306 ESTABLISHED
Mencadangkan Looker
Setelah Anda bermigrasi ke backend MySQL, pencadangan S3 otomatis Looker tidak akan berfungsi lagi. Sebaiknya lakukan pencadangan database MySQL setidaknya setiap malam bersama dengan pencadangan sistem file direktori kerja Looker setiap malam. Direktori looker/log/ dapat dikecualikan dari pencadangan sistem file. Lihat halaman dokumentasi Membuat pencadangan untuk mengetahui informasi selengkapnya.