Apa itu MySQL ?
MySQL adalah sistem basis data relasional sumber terbuka yang cepat, andal, terukur, dan mudah digunakan, didukung oleh Oracle. MySQL Server dirancang untuk menangani aplikasi produksi yang sangat penting dan berat. Jika Anda mengembangkan situs web atau aplikasi web, MySQL adalah pilihan yang baik. MySQL adalah komponen penting dari LAMP stack, yang meliputi Linux, Apache, MySQL, dan PHP.
Mengapa menggunakan Bitnami MySQL Stack?
Bitnami MySQL Stack selalu up-to-date dan aman. Pemasangan dan konfigurasi tumpukan diotomatisasi sepenuhnya, sehingga memudahkan semua orang, termasuk mereka yang tidak terlalu teknis, untuk menyiapkan dan menjalankannya.
Tutorial dan dokumentasi Bitnami MySQL
- Halaman MySQL Bitnami
- Panduan Pengguna MySQL Bitnami
- Log Perubahan MySQL Bitnami
- Untuk Membuat Database &Pengguna MySQL
- Untuk Memodifikasi Kata Sandi Administrator MySQL
- Untuk Mengamankan MySQL
- Untuk Melakukan Dump &Restore Pencadangan MySQL
- Untuk Mengonfigurasi MySQL Workbench
- Untuk Memeriksa File Log MySQL
Di mana Menemukan Kredensial Root MySQL?
Kredensial root instance/node/machine akan dikirim ke alamat email terdaftar Anda segera setelah instance MySQL diluncurkan.
Kredensial MySQL disimpan dalam file mandiri. Untuk mendapatkan kredensial kapan saja, ikuti langkah-langkah berikut:
- Hubungkan ke instance/node/mesin melalui SSH menggunakan root kredensial pengguna.
- Jalankan perintah berikut untuk mendapatkan kredensial aplikasi Anda:
cat /home/bitnami/bitnami_credentials
Catatan:Untuk pengguna MySQL adalah root, dari atas hanya salin Kata Sandi
Cara membuka port MySQL 3306 menggunakan UFW Firewall
Secara default, port Bitnami MySQL dikonfigurasi untuk dapat diakses hanya di localhost. Untuk membuka port MySQL ke internet terbuka atau hanya ke alamat IP tertentu, ikuti langkah-langkah di bawah ini.
1.Hubungkan ke instance/node/mesin melalui SSH menggunakan root kredensial pengguna.
Risiko Keamanan :Membuat port jaringan Database ini ke internet publik adalah risiko keamanan yang signifikan. Sangat disarankan untuk membuka port MySQL hanya untuk alamat IP tepercaya.
2 (a) Jalankan perintah berikut untuk membuka port ke Internet:
ufw allow mysql/tcp
2 (b) Jalankan perintah berikut untuk Membuka port ke alamat IP tertentu
ufw allow from IPADDRESS to any port 3306 proto tcp
Bagaimana cara Menghubungkan Database MySQL ?
Setelah
- Hubungkan ke instance/node/mesin melalui SSH menggunakan root kredensial pengguna.
ssh root@<public IP>
- Jalankan perintah berikut untuk login Database mysql
# mysql -u root -p
Anda akan diminta untuk memasukkan root kata sandi pengguna…
Bagaimana cara mengizinkan Akses MYSQL alamat IP Jarak Jauh?
Secara default, MySQL tidak mengizinkan klien jarak jauh untuk terhubung ke database MySQL. Jika Anda mencoba untuk mendapatkan akses ke database MYSQL server Anda dari jarak jauh, jelas bahwa Anda akan mendapatkan respons yang mirip dengan ini:
“ERROR 1130: Host is not allowed to connect to this MySQL server”
Example:
$ mysql -h XXX.168.X.8 -u root -p
Enter password:
ERROR 1130: Host 'xxx.xx.x.x' is not allowed to connect to this MySQL server
Solusi :
Untuk mengatasi kesalahan ini, Anda dapat mengizinkan klien tertentu
$ /opt/bitnami/mysql/bin/mysql -u root -p
Enter password:
mysql> use mysql
mysql> GRANT ALL ON *.* to root@'XXX.XXX.X.X' IDENTIFIED BY 'your-root-password';
mysql> FLUSH PRIVILEGES;
Ganti 'XXX.XXX.X.X' pada contoh di atas dengan static-Ip Anda dan kata sandi Root Anda sebagai ganti 'kata sandi root-Anda'.
Catatan:Ini hanya akan berfungsi jika Anda menjalankan internet pada layanan berbasis IP statis.
Alamat IP statis adalah nomor yang ditetapkan ke komputer oleh penyedia layanan Internet (ISP) sebagai alamat permanennya di Internet.
Eksekusi perintah di atas akan memberikan akses ke satu IP statis tertentu, yang dengannya MYSQL dapat diakses dari jarak jauh.
Juga, perbarui aturan firewall untuk memastikan port# 3306 di UFW terbuka di server yang menjalankan
Cara Mengoptimalkan Kinerja MySQL Menggunakan MySQLTuner
Alat yang Dapat Membantu Mengoptimalkan MySQL:
Untuk menentukan apakah database MySQL Anda perlu dikonfigurasi ulang, yang terbaik adalah melihat bagaimana kinerja sumber daya Anda sekarang. Ini dapat dilakukan dengan perintah teratas atau dengan layanan pemantauan E2E. Paling tidak, Anda harus membiasakan diri dengan penggunaan RAM dan CPU server Anda, yang dapat ditemukan dengan perintah berikut:
#echo [PID] [MEM] [PATH] && ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
#ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20
MySQLTuner:
Skrip MySQLTuner menilai MySQL
- Untuk menginstal
mysqltuner , unduhmysqltuner .pl skrip. Misalnya, Anda dapat mengunduhnya denganwget :
#wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl
- Untuk memantau server MySQL yang diinstal oleh tumpukan Bitnami, berikan nilai koneksi melalui baris perintah, seperti yang ditunjukkan di bawah ini. Perhatikan bahwa Anda perlu menginstal Perl di sistem.
#perl mysqltuner.pl --socket /opt/bitnami/mysql/tmp/mysql.sock
- Script akan mengembalikan hasil yang mirip dengan output di bawah ini:

MySQLTuner menawarkan saran tentang cara meningkatkan kinerja database. Jika Anda khawatir tentang memperbarui database Anda sendiri, mengikuti saran MySQLTuner adalah salah satu cara yang lebih aman untuk meningkatkan kinerja database Anda.
Menyetel MySQL:
Saat mengubah konfigurasi MySQL, waspadalah terhadap perubahan dan pengaruhnya terhadap database Anda. Bahkan ketika mengikuti instruksi program seperti MySQLTuner, yang terbaik adalah memiliki pemahaman tentang prosesnya.
File konfigurasi Bitnami MySQL disimpan di lokasi berikut:/opt/bitnami/mysql/my.cnf.
Catatan:Sebelum memperbarui konfigurasi MySQL Anda, buat cadangan
# cp /opt/bitnami/mysql/my.cnf ~/my.cnf.backup
Praktik terbaik menyarankan agar Anda membuat perubahan, satu per satu, dan kemudian memantau server setelah setiap perubahan. Anda harus memulai ulang MySQL setelah setiap perubahan:
Mulai ulang server:
# /opt/bitnami/ctlscript.sh restart mysql
Saat mengubah nilai dalam file my.cnf, pastikan bahwa baris yang Anda ubah belum dikomentari dengan awalan pound (#).
key_buffer
Mengubah key_buffer mengalokasikan lebih banyak memori ke MySQL, yang secara substansial dapat mempercepat database Anda, dengan asumsi Anda memiliki memori bebas. Ukuran key_buffer umumnya tidak boleh lebih dari 25 persen dari memori sistem saat menggunakan mesin tabel MyISAM, dan hingga 70 persen untuk InnoDB. Jika nilainya ditetapkan terlalu tinggi, sumber daya akan terbuang sia-sia.
Menurut dokumentasi MySQL, untuk server dengan 256MB (atau lebih) RAM dengan banyak tabel, pengaturan 64M direkomendasikan. Server dengan RAM 128MB dan tabel yang lebih sedikit dapat diatur ke 16M, nilai default. Situs web dengan sumber daya dan tabel yang lebih sedikit dapat menetapkan nilai ini lebih rendah.
max_allowed_packet
Parameter ini memungkinkan Anda mengatur ukuran maksimum paket yang dapat dikirim. Paket adalah status SQL tunggal, satu baris dikirim ke klien, atau log dikirim dari master ke budak. Jika Anda tahu bahwa server MySQL Anda akan memproses paket besar, yang terbaik adalah meningkatkannya ke ukuran paket terbesar Anda. Jika nilai ini disetel terlalu kecil, Anda akan menerima kesalahan di log kesalahan Anda.
thread_stack
Nilai ini berisi ukuran tumpukan untuk setiap utas. MySQL menganggap nilai default dari variabel thread_stack cukup untuk penggunaan normal; namun, jika kesalahan yang berkaitan dengan thread_stack dicatat, ini dapat ditingkatkan.
ukuran_cache_utas
Jika thread_cache_size "dimatikan" (diatur ke 0), maka koneksi baru apa pun yang dibuat memerlukan utas baru yang dibuat untuk itu. Ketika koneksi terlepas, utas dihancurkan. Jika tidak, nilai ini menetapkan jumlah utas yang tidak digunakan untuk disimpan dalam cache hingga perlu digunakan untuk koneksi. Umumnya pengaturan ini memiliki sedikit pengaruh pada kinerja, kecuali jika Anda menerima ratusan koneksi per menit, pada saat itu nilai ini harus ditingkatkan sehingga sebagian besar koneksi dapat dibuat pada utas yang di-cache.
Kolam Penyangga InnoDB
Kumpulan buffer InnoDB adalah ruang memori yang menampung banyak struktur data dalam memori dari InnoDB, buffer, cache, indeks, dan bahkan data baris. innodb_buffer_pool_size adalah parameter konfigurasi MySQL yang menentukan jumlah memori yang dialokasikan ke kumpulan buffer InnoDB oleh MySQL. Ini adalah salah satu pengaturan terpenting dalam konfigurasi hosting MySQL dan harus dikonfigurasi berdasarkan RAM sistem yang tersedia.
80% mungkin merupakan awal yang baik dan aturan praktis. Anda ingin memastikan server memiliki banyak RAM gratis untuk OS dan beban kerja yang biasanya tidak diketahui. Namun, seperti yang dapat kita lihat di bawah, semakin besar server, semakin besar kemungkinan aturan tersebut akan membuang-buang RAM. Saya pikir bagi kebanyakan orang itu dimulai dan diakhiri dengan aturan praktis, sebagian besar karena mengubah kumpulan buffer InnoDB memerlukan restart dalam rilis saat ini.
Total Server RAM Buffer pool dengan aturan 80% Sisa RAM
1G 800MB 200MB
16G 13G 3G
32G 26G 6G
64G 51G 13G
128G 102G 26G
256G 205G 51G
512G 409G 103G
1024G 819G 205G
Jadi apa aturan praktis yang lebih baik? Aturan saya adalah Anda menyetel innodb_buffer_pool_size sebesar mungkin tanpa menggunakan swap saat sistem menjalankan beban kerja produksi. Ini terdengar bagus pada prinsipnya, tetapi sekali lagi, ini membutuhkan banyak restart dan mungkin lebih mudah diucapkan daripada dilakukan.
koneksi_maks
Parameter ini menetapkan jumlah maksimum koneksi bersamaan. Yang terbaik adalah mempertimbangkan jumlah maksimum koneksi yang Anda miliki di masa lalu sebelum menetapkan nomor ini, sehingga Anda akan memiliki buffer antara nomor atas dan nilai max_connections. Perhatikan, ini tidak menunjukkan jumlah maksimum pengguna di situs web Anda pada satu waktu; melainkan menunjukkan jumlah maksimum pengguna yang membuat permintaan secara bersamaan.
tabel_cache
Nilai ini harus disimpan lebih tinggi dari nilai open_tables Anda. Untuk menentukan nilai ini gunakan:
TAMPILKAN STATUS SEPERTI 'open%';