Beberapa waktu lalu, Saya melakukan migrasi server ke komputer baru dan tentunya database juga harus dipindahkan. Jika file database yang akan dimigrasi tidaklah besar, itu tidak jadi masalah. Tetapi file mysql yang akan Saya transfer ini mempunyai ukuran yang lumayan besar. Yang satu berukuran 50MB dan satunya berukuran hampir 650MB.
Untuk file mysql dump yang berukuran diantara 50-100MB, Saya menggunakan tools BigDump, dan itu masih berhasil dilakukan. Permasalahannya ketika file mysql yang harus diimport berukuran diatas 500MB. BigDump sendiri sepertinya selalu mengalami time out. Setting $linespersession juga sudah dilakukan sesuai petunjuk dari website BigDump untuk mengatasi time out, tetapi tetap tidak berhasil.
MySQL Command Line
Sebagai informasi, langkah berikut juga sudah dicoba di file mysql dump dengan ukuran 6GB.
Sebelum melakukan proses ini, pastikan file mysql.sql Anda sudah berada di satu lokasi dengan proses berikut.
Dari Linux command line, ketikkan :
Sekarang Anda berada di mysql shell. Dari sini, tentukan database yang akan dipilih.
Berikutnya, ikuti perintah berikut :
Menonaktifkan pengecekan forein key untuk menghindari delays, kesalahan dan aktivitas yang tidak diinginkan.
Lalu pilih file *.sql yang akan diimport
Kalau sudah, kembalikan lagi setingan ke awal
Bash Script
Kita bisa membuat skrip yang jelasnya memudahkan kita dalam melakukan proses import file.sql.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#!/bin/sh
# store start date to a variable
imeron=`date`
echo "Import dimulai: OK"
dumpfile="/home/agungprasetyo/ocs.sql"
ddl="set names utf8; "
ddl="$ddl set global net_buffer_length=1000000;"
ddl="$ddl set global max_allowed_packet=1000000000; "
ddl="$ddl SET foreign_key_checks = 0; "
ddl="$ddl SET UNIQUE_CHECKS = 0; "
ddl="$ddl SET AUTOCOMMIT = 0; "
# jika file dump Anda tidak membuat database, gunakan use
ddl="$ddl USE ocs; "
ddl="$ddl source $dumpfile; "
ddl="$ddl SET foreign_key_checks = 1; "
ddl="$ddl SET UNIQUE_CHECKS = 1; "
ddl="$ddl SET AUTOCOMMIT = 1; "
ddl="$ddl COMMIT ; "
echo "Import dimulai: OK"
time mysql -h 127.0.0.1 -u root -proot -e "$ddl"
# store end date to a variable
imeron2=`date`
echo "Proses import dimulai:$imeron"
echo "Proses import selesai:$imeron2"
echo "Sumber: https://cmanios.wordpress.com/2013/03/19/import-a-large-sql-dump-file-to-a-mysql-database-from-command-line/"
|
Semoga penjelasan diatas bisa memberikan manfaat.
EmoticonEmoticon