MySQL adalah server database SQL yang cepat, multi-utas, multi-pengguna, dan tangguh. Ini ditujukan untuk sistem produksi yang sangat penting, beban berat, dan perangkat lunak yang diterapkan secara massal
Instalasi
Untuk menginstal MySQL, jalankan perintah berikut dari prompt terminal
sudo apt install mysql-serverSetelah instalasi selesai, server MySQL harus dimulai secara otomatis. Anda dapat dengan cepat memeriksa statusnya saat ini melalui systemd
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _Status jaringan layanan MySQL juga dapat diperiksa dengan menjalankan perintah sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. 7 di terminal prompt
sudo ss -tap | grep mysqlKetika Anda menjalankan perintah ini, Anda akan melihat sesuatu yang mirip dengan yang berikut ini
LISTEN 0 151 127.0.0.1:mysql 0.0.0.0:* users:(("mysqld",pid=149190,fd=29)) LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=149190,fd=32)) _Jika server tidak berjalan dengan benar, Anda dapat mengetikkan perintah berikut untuk memulainya
sudo service mysql restartTitik awal yang baik untuk pemecahan masalah adalah jurnal systemd, yang dapat diakses di terminal prompt dengan perintah ini
sudo journalctl -u mysql _Konfigurasi
Anda dapat mengedit file di sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _8 untuk mengonfigurasi pengaturan dasar – file log, nomor port, dll. Misalnya, untuk mengonfigurasi MySQL untuk mendengarkan koneksi dari host jaringan, dalam file sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. 9, ubah direktif alamat-bind ke alamat IP server
bind-address = 192.168.0.5 _Catatan
Ganti 192. 168. 0. 5 dengan alamat yang sesuai, yang dapat ditentukan melalui sudo ss -tap | grep mysql 0
Setelah melakukan perubahan konfigurasi, daemon MySQL perlu di-restart
sudo systemctl restart mysql.serviceMesin Basis Data
Sementara konfigurasi default MySQL yang disediakan oleh paket Ubuntu berfungsi dengan sempurna dan bekerja dengan baik, ada beberapa hal yang mungkin ingin Anda pertimbangkan sebelum melanjutkan.
MySQL dirancang untuk memungkinkan data disimpan dengan cara yang berbeda. Metode-metode ini disebut sebagai database atau mesin penyimpanan. Ada dua mesin utama yang akan membuat Anda tertarik. InnoDB dan MyISAM. Mesin penyimpanan bersifat transparan bagi pengguna akhir. MySQL akan menangani berbagai hal secara berbeda di bawah permukaan, tetapi terlepas dari mesin penyimpanan mana yang digunakan, Anda akan berinteraksi dengan database dengan cara yang sama
Setiap mesin memiliki kelebihan dan kekurangannya masing-masing
Meskipun mungkin, dan mungkin menguntungkan untuk mencampur dan mencocokkan mesin basis data pada tingkat tabel, hal itu mengurangi keefektifan penyetelan kinerja yang dapat Anda lakukan karena Anda akan membagi sumber daya di antara dua mesin alih-alih mendedikasikannya ke satu mesin.
MyISAM lebih tua dari keduanya. Itu bisa lebih cepat daripada InnoDB dalam keadaan tertentu dan mendukung beban kerja hanya baca. Beberapa aplikasi web telah disetel di sekitar MyISAM (meskipun itu tidak berarti bahwa mereka akan melambat di bawah InnoDB). MyISAM juga mendukung tipe data FULLTEXT, yang memungkinkan pencarian data teks dalam jumlah besar dengan sangat cepat. Namun MyISAM hanya mampu mengunci seluruh tabel untuk menulis. Ini berarti hanya satu proses yang dapat memperbarui tabel pada satu waktu. Karena aplikasi apa pun yang menggunakan skala tabel, ini mungkin menjadi penghalang. Itu juga tidak memiliki penjurnalan, yang mempersulit pemulihan data setelah crash. Tautan berikut memberikan beberapa poin untuk dipertimbangkan tentang penggunaan MyISAM pada database produksi
InnoDB adalah mesin basis data yang lebih modern, dirancang agar sesuai dengan ACID yang menjamin transaksi basis data diproses dengan andal. Penguncian tulis dapat terjadi pada tingkat baris dalam tabel. Itu berarti banyak pembaruan dapat terjadi pada satu tabel secara bersamaan. Caching data juga ditangani dalam memori di dalam mesin basis data, memungkinkan caching pada basis tingkat baris yang lebih efisien daripada blok file. Untuk memenuhi kepatuhan ACID, semua transaksi dijurnal secara terpisah dari tabel utama. Ini memungkinkan pemulihan data yang jauh lebih andal karena konsistensi data dapat diperiksa
Pada MySQL 5. 5 InnoDB adalah mesin default, dan sangat direkomendasikan daripada MyISAM kecuali Anda memiliki kebutuhan khusus untuk fitur unik pada mesin
Konfigurasi lanjutan
Membuat konfigurasi yang disetel
Ada sejumlah parameter yang dapat disesuaikan dalam file konfigurasi MySQL yang memungkinkan Anda meningkatkan kinerja server dari waktu ke waktu
Banyak parameter yang dapat disesuaikan dengan database yang ada, namun beberapa dapat mempengaruhi tata letak data sehingga perlu lebih hati-hati untuk menerapkannya
Pertama, jika Anda memiliki data yang sudah ada, Anda perlu melakukan mysqldump dan memuat ulang
mysqldump --all-databases --routines -u root -p > ~/fulldump.sqlIni kemudian akan meminta Anda untuk kata sandi root sebelum membuat salinan data. Dianjurkan untuk memastikan tidak ada pengguna atau proses lain yang menggunakan database saat ini berlangsung. Bergantung pada berapa banyak data yang Anda miliki di basis data, ini mungkin memakan waktu cukup lama. Anda tidak akan melihat apa pun di layar selama proses ini
Setelah dump selesai, matikan MySQL
sudo service mysql stopIni juga merupakan ide bagus untuk mencadangkan konfigurasi asli
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _0Selanjutnya, buat perubahan konfigurasi yang diinginkan
Kemudian hapus dan inisialisasi ulang ruang basis data dan pastikan kepemilikan sudah benar sebelum memulai ulang MySQL
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _1Langkah terakhir adalah mengimpor ulang data Anda dengan menyalurkan perintah SQL Anda ke database
Untuk impor data yang besar, utilitas 'Pipe Viewer' dapat berguna untuk melacak kemajuan impor. Abaikan waktu ETA yang dihasilkan oleh pv, mereka didasarkan pada waktu rata-rata yang dibutuhkan untuk menangani setiap baris file, tetapi kecepatan penyisipan dapat sangat bervariasi dari baris ke baris dengan mysqldumps
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _3Setelah itu selesai semuanya baik untuk pergi
Catatan
Ini tidak perlu untuk semua milikku. perubahan cnf. Sebagian besar variabel yang ingin Anda ubah untuk meningkatkan kinerja dapat disesuaikan bahkan saat server sedang berjalan. Seperti apa pun, pastikan untuk memiliki salinan cadangan file konfigurasi dan data yang baik sebelum melakukan perubahan
Penyetel MySQL
MySQL Tuner terhubung ke instans MySQL yang sedang berjalan dan menawarkan saran konfigurasi untuk mengoptimalkan database untuk beban kerja Anda. Semakin lama server berjalan, semakin baik saran yang dapat diberikan oleh mysqltuner. Di lingkungan produksi, pertimbangkan untuk menunggu setidaknya 24 jam sebelum menjalankan alat. Anda dapat menginstal mysqltuner dari repositori Ubuntu
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _4Kemudian setelah diinstal, jalankan
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _5dan tunggu laporan akhirnya. Bagian atas memberikan informasi umum tentang server database, dan bagian bawah memberikan saran penyetelan untuk mengubah my. cnf. Sebagian besar dapat diubah langsung di server tanpa memulai ulang; . Contoh berikut adalah bagian dari laporan dari database produksi yang menunjukkan manfaat potensial dari peningkatan cache kueri
sudo service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago Main PID: 2028 (mysqld) Tasks: 28 (limit: 4915) CGroup: /system.slice/mysql.service └─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server... Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server. _6Tak perlu dikatakan bahwa strategi pengoptimalan kinerja bervariasi dari satu aplikasi ke aplikasi lainnya. Jadi misalnya, apa yang terbaik untuk Wordpress mungkin bukan yang terbaik untuk Drupal atau Joomla. Performa dapat bergantung pada jenis kueri, penggunaan indeks, seberapa efisien desain basis data, dan sebagainya. Anda mungkin merasa perlu meluangkan waktu untuk mencari tip penyetelan basis data berdasarkan aplikasi apa yang Anda gunakan. Setelah Anda mencapai titik pengembalian yang semakin berkurang dari penyesuaian konfigurasi basis data, lihat aplikasi itu sendiri untuk peningkatan, atau investasikan perangkat keras yang lebih kuat dan/atau tingkatkan lingkungan basis data