Menurut MySQL5. 0 Panduan Studi Sertifikasi, Bab 32 Bagian 32. 3. 4, Halaman 456,457 menjelaskan Kondisi untuk Portabilitas Biner yang menghasilkan hal berikut
[mysqld] lower_case_table_names=1Portabilitas biner penting jika Anda ingin mengambil cadangan biner yang dibuat di satu mesin dan menggunakannya di komputer lain yang memiliki arsitektur berbeda. Misalnya, menggunakan cadangan biner adalah salah satu cara untuk menyalin basis data dari satu server MySQL ke server lainnya
Untuk MyISAM, portabilitas biner berarti Anda dapat langsung menyalin file untuk tabel MyISAM dari satu server MySQL ke server lain di mesin yang berbeda dan server kedua akan dapat mengakses tabel tersebut
Untuk InnoDB, portabilitas biner berarti Anda dapat langsung menyalin file tablespace dari server MySQL di satu mesin ke server lain di mesin yang berbeda dan server kedua akan dapat mengakses tablespace. Secara default, semua tabel InnoDB yang dikelola oleh server disimpan bersama di tablespace, jadi portabilitas tablespace adalah fungsi apakah semua tabel InnoDB bersifat portabel. Bahkan jika satu meja saja tidak portabel, tablespace juga tidak
Tabel MyISAM dan tablespace InnoDB bersifat portabel biner dari satu host ke host lainnya jika dua kondisi terpenuhi
- Kedua mesin harus menggunakan aritmetika bilangan bulat dua pelengkap
- Kedua mesin harus menggunakan format floating-point IEEE atau tabel tidak boleh berisi kolom floating-point (FLOAT atau DOUBLE)
Dalam praktiknya, kedua kondisi tersebut menimbulkan sedikit batasan. Aritmatika bilangan bulat dua pelengkap dan format floating-point IEEE adalah norma pada perangkat keras modern. Kondisi ketiga untuk portabilitas biner InnoDB adalah Anda harus menggunakan nama huruf kecil untuk tabel dan database. Ini karena InnoDB menyimpan nama-nama ini secara internal (dalam kamus datanya) dalam huruf kecil di Windows. Menggunakan nama huruf kecil memungkinkan portabilitas biner antara Windows dan Unix, untuk memaksa penggunaan nama huruf kecil, Anda dapat meletakkan baris berikut dalam file opsi
Jika Anda mengonfigurasi InnoDB untuk menggunakan tablespace per-tabel, kondisi untuk portabilitas biner diperluas untuk menyertakan. file ibd untuk tabel InnoDB juga. (Kondisi untuk tablespace bersama masih berlaku karena berisi kamus data yang menyimpan informasi tentang semua tabel InnoDB. )
Jika kondisi untuk portabilitas biner tidak terpenuhi, Anda dapat menyalin tabel MyISAM atau InnoDB dari satu server ke server lain dengan membuangnya menggunakan beberapa format teks (misalnya, dengan mysqldump) dan memuatnya kembali ke server tujuan
Ada dua cara utama berdasarkan mesin penyimpanan untuk memindahkan tabel individual
Untuk contoh yang diberikan kita akan mengira berikut ini
- datadir adalah /var/lib/mysql
- basis data bernama mydb
- tabel di database mydb disebut mytable
Tabel MyISAM
Jika mydb. mytable menggunakan mesin penyimpanan MyISAM, tabel secara fisik akan diwujudkan sebagai tiga file terpisah
- /var/lib/mysql/mydb/mytable. dari (. dari berkas)
- /var/lib/mysql/mydb/mytable. MYD (. berkas MYD)
- /var/lib/mysql/mydb/mytable. KU I (. MYI file)
Itu. frm berisi struktur tabel
Itu. MYD berisi data tabel
Itu. MYI berisi halaman indeks tabel
File-file ini digunakan secara saling bergantung untuk merepresentasikan tabel dari sudut pandang logis di mysql. Karena file ini tidak memiliki asosiasi logis lebih lanjut, memigrasikan tabel dari satu server DB ke yang lain. Anda bahkan dapat melakukannya dari server Windows ke Server Linux atau MacOS. Tentu saja, Anda dapat mematikan mysql dan menyalin 3 file tabel. Anda dapat menjalankan yang berikut ini
LOCK TABLES mydb.mytable READ; SELECT SLEEP(86400); UNLOCK TABLES; _dalam satu sesi ssh untuk menahan tabel sebagai hanya baca dan menahan kunci selama 24 jam. Satu detik kemudian, lakukan penyalinan di sesi ssh lainnya. Kemudian matikan sesi mysql dengan kunci 24 jam. Anda tidak perlu menunggu 24 jam
tabel InnoDB
Berdasarkan kutipan dari buku Sertifikasi tersebut, ada banyak faktor yang mengatur cara membuat cadangan tabel InnoDB tertentu. Demi kesederhanaan, kejelasan, dan singkatnya, cukup lakukan mysqldump dari tabel yang diinginkan menggunakan parameter --single-transaction untuk mendapatkan dump tabel point-in-time yang sempurna. Tidak perlu mengubah diri sendiri dengan semantik InnoDB jika Anda hanya ingin satu tabel. Anda dapat memuat ulang dumpfile itu ke server MySQL apa pun yang Anda pilih
Karena dua pertanyaan digabungkan di sini (jcolebrand). EDIT
Jika Anda sangat ingin hidup dengan kinerja DB yang lambat, Anda dapat melakukan serangkaian rsync dari server lama (ServerA) ke server baru (ServerB) bahkan ketika mysql masih berjalan di ServerA
Langkah 01) instal versi mysql yang sama di ServerB yang dimiliki ServerA
Langkah 02) Di ServerA, jalankan SET GLOBAL innodb_max_dirty_pages_pct = 0;_ dari mysql dan sekitar 10 menit (Ini membersihkan halaman kotor dari InnoDB Buffer Pool. Ini juga membantu melakukan shutdown mysql lebih cepat) Jika database Anda semuanya MyISAM, Anda dapat melewati langkah ini
Langkah 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql
Langkah 04) Ulangi Langkah 03 hingga rsync membutuhkan waktu kurang dari 1 menit
Langkah 05) _______________ di ServerS
Langkah 06) Lakukan satu lagi rsync
Langkah 07) scp ServerA:/etc/my.cnf ServerB:/etc/
Langkah 08) _______________ di Server
Langkah 08) service mysql start di ServerA (opsional)
Cobalah
PERINGATAN
Anda dapat membuat budak replikasi seperti ini. Ingatlah untuk mengatur server-id secara eksplisit di master /etc/my. cnf dan nomor berbeda untuk server-id di slave /etc/my. cnf