Sebagai seorang DBA (Database Administrator) yang banyak berkecimpung antara lain dengan MySQL, disini saya akan menuliskan berbagai catatan “resep-resep” MySQL yang sering digunakan.
Resep-resep ini bersifat instan, yaitu bisa langsung Anda copas (copy-paste) di layar Terminal server.
Tentunya setelah menyesuaikan berbagai variable yang ada (username, password, dst)
Selamat menikmati 🙂
PERSIAPAN
Jalankan perintah-perintah beriku ini, agar Anda bisa langsung menjalankan berbagai resep yang ada disini :
### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf
BENCHMARK DATABASE
mysqlslap --user=root --password="rahasiasaya" --host=10.0.8.8 --concurrency=50 --number-of-queries=100000 --auto-generate-sql-unique-query-number=100000 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=key
# contoh hasil benchmark :
# Benchmark
# Average number of seconds to run all queries: 4.031 seconds
# Minimum number of seconds to run all queries: 4.031 seconds
# Maximum number of seconds to run all queries: 4.031 seconds
# Number of clients running queries: 50
# Average number of queries per client: 2000
Pada contoh diatas, ada 100.000 query yang dijalankan, dan membutuhkan waktu 4 detik = 25.000 query / detik.
Panduan lebih detail seputar mysqlslap :
http://dev.mysql.com/doc/refman/5.5/en/mysqlslap.html
RECOVER ROOT USER
sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -e "use mysql; update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root'; flush privileges;"
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
CREATE A NEW DATABASE & USER
# bikin database & user baru
mysql -e "create user newuser; create database newdatabase;"
# beri newuser akses full ke newdatabase
mysql -e "use mysql; update user set password=PASSWORD('newpassword') where User='newuser'; GRANT ALL PRIVILEGES ON newdatabase.* To 'newuser'@'localhost' IDENTIFIED BY 'newpassword'; flush privileges;"
SETUP MYSQL SERVER (dengan user biasa / bukan root)
Panduannya bisa dibaca disini : [ Install MySQL Server (tanpa root) ]
SETUP MYSQL CLUSTER (dengan user biasa / bukan root)
Panduannya bisa dibaca disini : [ Install MySQL Cluster (tanpa root) ]
SETUP AUTO BACKUP
Panduannya bisa dibaca disini : [ MySQL Archived Backup ]
SETUP REPLIKASI BERANTAI
Replikasi sering dianggap sebagai solusi untuk mengatasi beban kerja yang tinggi. Padahal, untuk banyak kasus, performa sebuah server MySQL sudah lebih dari mencukupi. Tidak perlu menggunakan replikasi lagi.
Replikasi justru paling bermanfaat sebagai fasilitas backup data yang selalu up to date. Dengan memasang fitur ini, maka kita jadi bisa memiliki backup database yang kemudian siap untuk berfungsi jika server database mengalami masalah.
Di resep ini, saya akan melakukan replikasi dengan alur sbb :
Server1 -> Server2 -> Server3
Ya, Server2 akan berfungsi sekaligus sebagai Slave (dari Server1) dan Master (untuk Server3)
Terlampir adalah resep untuk melakukan ini.
Perhatian, Anda perlu menyesuaikan variable-variable ini terlebih dahulu sebelum melakukan copy-paste di Terminal server ybs :
- exampledb
- server1
- server2
- server3
- yourpassword
- replicauser
- replicapassword
- Baris-baris “CHANGE MASTER”, yaitu variable MASTER_LOG_FILE dan MASTER_LOG_POS
########## SERVER1 ################
### install LAMP
sudo apt-get install phpmyadmin mysql-server
### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf
### setting Master1
sudo bash -c 'echo server-id=1 >> /etc/mysql/my.cnf'
sudo bash -c 'echo log-bin = /var/log/mysql/mysql-bin.log >> /etc/mysql/my.cnf'
sudo bash -c 'echo bind-address = 0.0.0.0 >> /etc/mysql/my.cnf'
#### JANGAN lupa untuk hapus baris ini : bind-address = 127.0.0.1
#### jika tidak, maka slave tidak akan bisa connect ke Master1
### restart MySQL
/etc/init.d/mysql restart
### buat user untuk replikasi
mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%' IDENTIFIED BY 'replicapassword'; FLUSH PRIVILEGES;"
### kunci database
mysql -e "FLUSH TABLES WITH READ LOCK;"
### catat output dari perintah berikut ini
mysql -e "SHOW MASTER STATUS;"
### outputnya seperti ini
#+------------------+----------+--------------+------------------+
#| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
#+------------------+----------+--------------+------------------+
#| mysql-bin.000001 | 618 | exampledb | |
#+------------------+----------+--------------+------------------+
### backup database tsb
mysqldump -u root -p --add-drop-database --databases exampledb > /tmp/exampledb.sql
### buka kembali kunci database
mysql -e "UNlOCK TABLES;"
########## SERVER2 ################
### install LAMP
sudo apt-get install phpmyadmin mysql-server
### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf
### copy backup dari server1
scp -v root@server1:/tmp/exampledb.sql /tmp/exampledb.sql
mysql -u root -p < /tmp/exampledb.sql
### setting Slave1 / Master2
sudo bash -c 'echo server-id=2 >> /etc/mysql/my.cnf'
sudo bash -c 'echo replicate-do-db=exampledb >> /etc/mysql/my.cnf'
### restart MySQL
/etc/init.d/mysql restart
### mulai setting sebagai Slave1
mysql -e "SLAVE STOP;"
mysql -e "CHANGE MASTER TO MASTER_HOST='server1', MASTER_USER='replicauser', MASTER_PASSWORD='replicapassword', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=618;"
mysql -e "START SLAVE;"
# ---------------------------------
### mulai setting sebagai Master2
sudo bash -c 'echo log-slave-updates >> /etc/mysql/my.cnf'
sudo bash -c 'echo relay-log=server1-relay-bin >> /etc/mysql/my.cnf'
### restart MySQL
/etc/init.d/mysql restart
### tunggu agar sempat sync dengan Master1
sleep 600
### buat user untuk replikasi
mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%' IDENTIFIED BY 'replicapassword'; FLUSH PRIVILEGES;"
### kunci database
mysql -e "FLUSH TABLES WITH READ LOCK;"
### catat output dari perintah berikut ini
mysql -e "SHOW MASTER STATUS;"
### outputnya seperti ini
#+------------------+----------+--------------+------------------+
#| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
#+------------------+----------+--------------+------------------+
#| mysql-bin.000003 | 777 | exampledb | |
#+------------------+----------+--------------+------------------+
### backup database tsb
mysqldump -u root -p --add-drop-database --databases exampledb > /tmp/exampledb.sql
### buka kembali kunci database
mysql -e "UNlOCK TABLES;"
########## SERVER3 ################
### install LAMP
sudo apt-get install phpmyadmin mysql-server
### persiapan agar bisa menjalankan mysql (client)
### tanpa perlu memasukkan password lagi
echo "[client]" > ~/.my.cnf
echo "user = root" >> ~/.my.cnf
echo "pass = yourpassword" >> ~/.my.cnf
### copy backup dari server1
scp -v root@server2:/tmp/exampledb.sql /tmp/exampledb.sql
mysql -u root -p < /tmp/exampledb.sql
### setting Slave2
sudo bash -c 'echo server-id=3 >> /etc/mysql/my.cnf'
sudo bash -c 'echo replicate-do-db=exampledb >> /etc/mysql/my.cnf'
### restart MySQL
/etc/init.d/mysql restart
### mulai setting sebagai Slave1
mysql -e "SLAVE STOP;"
mysql -e "CHANGE MASTER TO MASTER_HOST='server2', MASTER_USER='replicauser', MASTER_PASSWORD='replicapassword', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=777;"
mysql -e "START SLAVE;"
### restart MySQL
/etc/init.d/mysql restart
MEMPROMOSIKAN SERVER2 MENJADI MASTER
### set server2 = master
mysql -e "STOP SLAVE;"
### jangan lupa remark baris
### "log-slave-updates" & "relay-log"
### dari /etc/mysql/my.cnf
BERBAGAI SKEMA REPLIKASI LAINNYA
http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-performance.html
http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-switch.html
Presentasi soal MySQL Replication dari tim engineer Yahoo
PURGE BINARY LOGS
### Untuk hapus binlog jadul = hemat disk space
mysql -e "PURGE BINARY LOGS BEFORE '2012-11-01 00:00:01';"
inti daru tag ini adalah ganti pasword agar aman dari serangan hacker.namun terkadang hacker punya jutaan cara untuk biSA obrak-abrik
terimakasih sob buat ilmunya
saya aga terlalu ngerti gan, tapi thank nambah ilmu,he
sangat membantu, terimakasih telah berbagi . . .
terimakasih gan atas informasinya yang sangat bermanfaat
puyeng pyeng..
tetet semangat deh ngeblog om
makasih ilmunya gan… meskipun gak ngerti kode2 😀
mantap infonya,makasiih
terima kasih buat ilmu N infonya
Semoga bermanfaat sob!
lam kenal!
infonya yahud, thx
mantap infonya,makasiih
berbagi itu lebih baik . alhamdulillah bertemu web ini .
trimakasih
trimakasih atas infonya
makasih artikelnya
unik banget semua ini bermanfaat
wah tutorial yang bermanfaat gan,
minta izin backlink gan ke asiapartshardware
makasih sebelumnya
tutorial yang bagus sangat bermanfaat
oh iya kunjungi jg asiapart-indotech semoga bermanfaat
boleh juga nie artikel nya sangat bagus dan sangat menarik nie,,,,,,,
thanks …mas… ampuh bener resepnya….
langsung praktek kalau gitu
Tutorial komplit, terima kasih….
langsung dicoba agar bisa. 🙂
saya sudah sering mencari info tentang ini, akhirnya ketemu juga…pas dengan kuliah yg saya ambil
artikel yang sangat bagus…
semoga bermanfaat untuk orang banyak.
alhamdulillah bertemu web ini .
trimakasih
Menarik… thanks buat infonya
menarik banget artikelnya, makasi gan
Teimakasih Atas Artikel’a
Semoga Bermanfaat ”
hemmm…. bingung bacanya, tetapi untuk yg suka pemerograman pasti bermanfaat sekali web ini, semangat terus…
Wah pas banget nih, ane lagi belajar mySQL.. ternyata gampang2 susah juga ya.
Ane dari dulu belajar SQL ga nyambung2 gan 😀
ada pdf belajar sql dkk gak ?
thanks !
nice share ,,,
Thank you so much for sharing.
mantap:d
salama kenal
info yang bagus
terimaksih untuk informasinya ,, jangan lupa knjungan baliknya yaa 🙂
nice tutor kang..
SQL oh SQL sangat susah sekalee
SQL salah satu pelajaran yang butuh ketelitian dan ketekunan
ditunggu yah kunjungannya,,,
hallo…….
tenks gan buat info nya saya suka 😀
Terimakasih atas info nya mas….
terimakasih atas postingan yang sangat berqualitas ini gan… haduhh bisa dipermudah gx sih gan.. puyeenggg hihihi
SQL salah satu pelajaran yang butuh ketelitian dan ketekunan
tutorial SQL bagus mas.. komplit…
makasih nih buat tutorial nya…
info yang! very code. thanx share.
Mysql itu sangat bermanfaat sekali,, dulu saya waktu sekolah di smtm pernh diajarin mysql,, ternyata berguna sekali ,,buat bikin database rumah sakit ,,database sekloh,, pokonya kalo pake database enak gan
thanks bwat infonya
sukses selalu
kunjungi balik gan
thanks buat infonya, artikelnya menarik
Artikel mengenai SQL ini ok banget mas, detail terima kasih mas.
Jelas dan detail … Nuwun,, terimakasih
ditunggu artikel selanjutnya gan
my-giftplus.com
rangkaian bunga, toko bunga online, toko bunga jakarta, florist
jakarta, kirim bunga jakarta
okee..
sumaryono.com
Hipnoterapi Jakarta, Tes bakat, Pembicara Seminar Jakarta
mantabb gan infox… mampir ke tempat ane ya gan… slm kenal…
4lifesistemimun.com
obat kanker, obat tbc, obat asam urat
thx infonya
jasa-website.com
jasa website murah, jasa web design, jasa pembuatan web, jasa sEO
artikelnya sangat bagus,
http://goo.gl/ZJGJg
Sangat bermanfaat. Terima Kasih
thanks …mas… ampuh bener resepnya….
langsung praktek kalau gitu
Kebetulan datase ane lagi bermasalah.. Jadi banyak error disana-sono.. ;(
Blog saya juga menampung banyak tutorial bagus loh mas.. hehe
saya mohon kritik dan saran mengenai project yang saya post di blog saya…
Terimakasih sebelumnya, silahkan berkunjung
bagus juga buat masukan.. nih…
biar tahu cara replikasi… untuk konsep database yang lainnya sama g ya..misalkan di sql server..
wah ilmu ane belum nyampe sini gan, tapi thanks sudah share
Infonya berguna dan sangat membantu. Ditunggu post2an lainnya. heheh makasiih. sukses gan!
nice sob, kunjung balik ya di dhruva corporation
iya2 aja deh mas, walo ane engga paham 😀
masih kurang ngerti saya
thnk gan atas infonya.. info nya sangat bermanfaat bagi ane…
🙂 🙂
sebenarnya sih gak ngerti.. tapi makasih gan buat infonya
ijin membaca artikelnya gan..,makasih
ini baru info yang berguna mas bro , salam kenal aja deh , tq
ijin membaca postinganya gan, salam kenal
siap menuju ke TKP gan..,makasih
Bagus sekali artikelnya, sangat bermanfaat buat saya.
kunjungi blog saya juga ya, di
Software
MPC Terbaru
BIG MOVIES
Kumpulan Bokep
Kumpulan Anime
Gadged
Tips Kesehatan
Mp3
Kimcil Mania
Technology
Bagus sekali artikelnya, sangat bermanfaat buat saya.
nice info mas.., sukses selalu
Mantap walau sedikit pusing…!
info yang sangat bermanfaat mas…, makasih
terimakasih informasinya ya gan,,, sangt bermanfaat sekali…
makasih gan infonya…
berguna buat orng-orng yang membutuhkannya
Ini artikel yang sangat bagus,,,
Thanxs for information
sukses always
ketika membuka aplikasi yang menggunakan mysql ketika mysql dijlankan muncul tulisan ini
InnoDB: Error: unable to create temporary file; errno: 2
akhirnya tidak bisa menjalankan mysql, apa yang harus dilakukan mas?
makasih gan infonya…
berguna buat orang-orang yang membutuhkannya
sangat lah berguna sekali…
thanks for infonya.
luton parking meet and greet is a best solution for the travellers while parking their cars.
Heathrow airport parking takes all the hassles out from your parking.
izin share ya
Bros cantik
Grosir bros
Bros handmade
Bros murah
Mutiara air tawar
Mutiara lombok
makasih gan infonya…
berguna buat orang-orang yang membutuhkannya
Last-minute booking for airport parking is no fun and not easy. You need to book Stansted airport parking with us as early as possible.
https://www.parkimoparkingfinder.co.uk/stansted-airport-parking
Thanks for sharing. I read many of your blog posts, cool, your blog is very good.