set @path_backup = 'D:\\backup\\';
set @sv_host = '192.168.10.121';
set @sv_port = '3306';
set @sv_uname = 'root';
set @sv_pwd = '123123';
select * into outfile 'D:\\script_batch_mysqldump.
lines terminated by '\n'
from
(
select concat('mysqldump --host=',@sv_host,' --port=',@sv_port,' -u',@sv_uname,' -p',@sv_pwd,' --add-drop-table --max_allowed_packet=1GB --routines --triggers --quote-names -E --no-data ', db.schema_name ,' > ',@path_backup, 'structure_',db.schema_name,'.
union
select concat('mysqldump --host=',@sv_host,' --port=',@sv_port,' -u',@sv_uname,' -p',@sv_pwd,' --add-drop-table --extended-insert --hex-blob --max_allowed_packet=16GB --lock-tables --no-create-db --no-create-info --quote-names --order-by-primary --dump-date ',db.schema_name,' > ',@path_backup, 'data_', db.schema_name,'.sql') as syntax from information_schema.schemata as db where db.schema_name not in ('information_schema','mysql',
) as script;
sesuaikan value dari variabel-variabel yang ada di SET itu dengan informasi koneksi yang benar.
trus sesuaikan juga OUTPUT PATH dari file bat yang akan di-processing (yg gw kasih font warna merah di atas)
setelah itu di-eksekusi, NISCAYA akan di-hasilkan sebuah file BAT di directory di server untuk langsung segera di-eksekusi untuk nge-generate script backup SEMUA DATABASE kita ke dalam 2 file utk masing-masing database, yaitu struktur saja atau data saja.
Kalo yang "struktur" saja, itu isinya:
- DDL untuk create table
- script stored procedure/function, kalo ada
- script pembentuk trigger, kalo ada
- script pembentuk events, kalo ada
Masalah lainnya yang bisa dicegah dengan memisahkan dump2an data dengan struktur ini adalah RUSAKNYA DATA. Kalo data kita berbentuk binary, atau dibentuk dengan character set khusus (memakai tulisan arab, misalnya) -- seandainya dibuka di editor yang sifatnya nggak I18N-aware (notepad, contohnya), InsyaAllah script dump2an data tersebut akan rusak. Dengan memisahkan script dump2an struktur dan data secara terpisah, setidaknya kita nggak perlu ngebuka data.sql kalo emang nggak penting2 amat untuk menjaga eksistensi data tersebut.
oke, silakan dicoba.
atau kalo mau, adopsi query-query select gw utk nge-build generator sendiri pake bahasa-bahasa pemrograman andalan anda...
4 comments:
Udah aku coba, semua database udah ada file *.sql.
Tapi sizenya kok nol, alias filenya kosong
masa sih? :-)
coba lagi. Size kosong itu mungkin terjadi kalo:
1. script batch ngga nemu path mysql di environment variables utk nge-launching mysqldump
2. parameter koneksi salah
3. nggak ada folder D:\backup (kalo ngikutin contoh)
4. data di database-mu emang kosong
solusi utk yg kemungkinan pertama, tambahkan di environment variable-mu dengan path \bin nya hasil instalasi MySQL (misal : C:\mysql\bin).
untuk nge-test-nya, coba aja di command prompt tulis mysql --version
muncul nggak?
solusi utk kemungkinan2 lain, silakan sesuaikan...
Oiya, artikel gw di atas tujuannya adalah untuk nge-generate script backup database. bukan databases. yang mana bisa dipanggil kapan aja (dan berulang-ulang) tergantung database mana yg pengen di backup.
kalo tujuan-mu untuk migrasi TOTAL data (tanpa perlu nge-backup), mungkin bisa pake cara ini:
kalo utk migrasi langsung antar server/engine untuk SEMUA database sih (tanpa nge-generate sql script-nya) bisa pake ini:
mysqldump --host=192.168.10.212 --port=3306 -uroot -p123123 --max-allowed-packet=2048M --add-drop-database --allow-keywords --create-options --quote-names --routines --triggers -E --order-by-primary --verbose --all-databases | mysql --host=192.168.10.121 --port=3306 -uroot -p123123 --max-allowed-packet=2048M
contoh script di atas adalah nge-copy semua struktur/data dari Server 212 ke Server 121
silakan sesuaikan parameternya.
mas, minta izin Share ke blogsku ya...
Posting Komentar