Tutorial ini menunjukkan dua cara untuk meng-clone database MySQL yang berjalan di Compute Engine. Salah satu metode menggunakan snapshot persistent disk. Metode lainnya menggunakan ekspor dan impor MySQL native, dengan mentransfer file ekspor menggunakan Cloud Storage. Cloud Storage adalah Google Cloud layanan penyimpanan objek. Layanan ini menawarkan cara yang mudah, dengan keamanan yang ditingkatkan, andal, dan memiliki ketersediaan tinggi untuk menyimpan file.
Cloning adalah proses penyalinan database ke server lain. Salinan tersebut tidak bergantung pada database sumber dan dipertahankan sebagai snapshot untuk waktu tertentu. Anda dapat menggunakan database yang di-clone untuk berbagai tujuan tanpa membebani server produksi atau mempertaruhkan integritas data produksi. Beberapa tujuannya meliputi:
- Menjalankan kueri analisis.
- Pengujian pemuatan atau pengujian integrasi aplikasi Anda.
- Mengekstrak data untuk mengisi data warehouse.
- Menjalankan eksperimen pada data.
Setiap metode cloning yang dijelaskan dalam tutorial ini memiliki kelebihan dan kekurangan. Metode yang ideal bergantung pada situasi Anda. Tabel berikut menyoroti beberapa masalah utama.
| Masalah | Metode 1: Snapshot disk | Metode 2: Mengekspor dan mengimpor menggunakan Cloud Storage | 
|---|---|---|
| Kapasitas disk tambahan yang diperlukan pada instance MySQL | Tidak memerlukan ruang disk tambahan | Ruang tambahan yang diperlukan untuk menyimpan file ekspor saat membuat dan memulihkan | 
| Pemuatan tambahan pada instance MySQL sumber selama cloning | Tidak ada pemuatan tambahan | Pemuatan tambahan pada CPU dan I/O saat membuat dan mengupload file ekspor | 
| Durasi cloning | Relatif cepat untuk database besar | Relatif lambat untuk database besar | 
| Dapat meng-clone dari instance MySQL secara eksternal ke Google Cloud | Tidak | Ya | 
| Kompleksitas | Urutan perintah kompleks untuk memasang disk yang di-clone | Serangkaian perintah yang relatif mudah untuk melakukan clone | 
| Dapat memanfaatkan sistem pencadangan yang ada | Ya, jika sistem pencadangan menggunakan snapshot disk Google Cloud | Ya, jika sistem pencadangan mengekspor file ke Cloud Storage | 
| Perincian cloning | Hanya dapat meng-clone seluruh disk | Hanya dapat meng-clone database yang ditentukan | 
| Konsistensi data | Konsisten pada poin snapshot | Konsisten pada poin ekspor | 
| Dapat menggunakan Cloud SQL sebagai sumber | Tidak | Ya, jika versi yang sama digunakan | 
| Dapat menggunakan Cloud SQL sebagai tujuan | Tidak | Ya | 
Tutorial ini mengasumsikan bahwa Anda sudah memahami administrasi database MySQL dan command line Linux.
Menyiapkan lingkungan
Untuk menyelesaikan tutorial ini, Anda perlu menyiapkan lingkungan komputasi dengan hal berikut:
- Instance MySQL di Compute Engine (bernama mysql-prod) untuk mewakili server database produksi Anda.
- Disk tambahan (bernama mysql-prod-data) yang terpasang ke server produksi untuk menyimpan database produksi Anda.
- Salinan
database Employeesyang diimpor kemysql-produntuk menyimulasikan database produksi yang ingin Anda clone.
- Instance MySQL di Compute Engine (bernama mysql-test) untuk mewakili server database pengujian Anda. Anda meng-clone database ke server ini.
Diagram berikut mengilustrasikan arsitektur ini.
Membuat instance VM produksi
Untuk menyimulasikan lingkungan produksi, siapkan instance VM Compute Engine yang menjalankan MySQL di Debian Linux.
Instance VM untuk tutorial ini menggunakan dua disk: disk sebesar 50 GB untuk akun pengguna dan OS, serta disk sebesar 100 GB untuk penyimpanan database.
Di Compute Engine, menggunakan disk terpisah tidak memberikan manfaat performa. Performa disk ditentukan oleh total kapasitas penyimpanan semua disk yang terpasang ke sebuah instance dan oleh jumlah total vCPU pada instance VM Anda. Oleh karena itu, file log dan database dapat berada di disk yang sama.
- Buka Cloud Shell. 
- Tetapkan zona pilihan Anda: - ZONE=us-east1-b REGION=us-east1 gcloud config set compute/zone "${ZONE}"
- Buat instance Compute Engine - gcloud compute instances create mysql-prod \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --boot-disk-size=50GB \ --boot-disk-device-name=mysql-prod \ --create-disk="mode=rw,size=100,type=pd-standard,name=mysql-prod-data,device-name=mysql-prod-data"- Perintah ini memberi instance akses penuh ke Google Cloud API, membuat disk sekunder sebesar 100 GB, dan memasang disk ke instance. Abaikan peringatan performa disk karena Anda tidak memerlukan performa tinggi untuk tutorial ini. 
Menyiapkan disk tambahan
Disk kedua yang terpasang ke instance produksi digunakan untuk menyimpan database produksi Anda. Disk ini kosong, jadi Anda perlu mempartisi, memformat, dan memasangnya.
- Di konsol Google Cloud , buka halaman VM instances. 
- Pastikan tanda centang hijau check ditampilkan di samping nama instance - mysql-prod, yang menunjukkan bahwa instance sudah siap.
- Klik tombol SSH di samping instance - mysql-prod. Browser akan membuka koneksi terminal ke instance.
- Di jendela terminal, tampilkan daftar disk yang terpasang ke instance Anda: - lsblk- Outputnya adalah sebagai berikut: - NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 100G 0 disk - Disk bernama - sdb(100 GB) adalah disk data Anda.
- Format disk - sdbdan buat satu partisi dengan sistem file ext4:- sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard \ /dev/sdb
- Buat direktori data MySQL sebagai direktori pemasangan untuk disk data: - sudo mkdir -p /var/lib/mysql
- Untuk memasang disk secara otomatis di direktori pemasangan yang Anda buat, tambahkan entri ke file - /etc/fstab:- echo "UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/lib/mysql ext4 discard,defaults,nofail 0 2" \ | sudo tee -a /etc/fstab
- Pasang disk: - sudo mount -av
- Hapus semua file dari disk data agar bebas untuk digunakan oleh MySQL sebagai direktori data: - sudo rm -rf /var/lib/mysql/*
Menginstal server MySQL
Anda perlu mendownload dan menginstal MySQL Community Edition. Direktori data MySQL dibuat di disk tambahan.
- Pada sesi SSH yang terhubung ke - mysql-prod, download dan instal paket konfigurasi MySQL:- wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
- Saat diminta, pilih opsi Server & Cluster MySQL, lalu pilih mysql-5.7. 
- Dalam daftar, pilih opsi Oke untuk menyelesaikan konfigurasi paket. 
- Perbarui cache repositori dan instal paket mysql-community: - sudo apt-get update sudo apt-get install -y mysql-community-server mysql-community-client
- Jika Anda mendapatkan peringatan bahwa direktori data sudah ada, pilih Oke. 
- Saat diminta untuk memberikan sandi root, buat dan masukkan sandi. Catat sandi atau simpan sementara di tempat yang aman. 
Mendownload dan menginstal database contoh
- Pada sesi SSH yang terhubung ke instance - mysql-prod, instal git:- sudo apt-get install -y git
- Clone repositori GitHub yang berisi skrip database - Employees:- git clone https://github.com/datacharmer/test_db.git
- Ubah direktori ke direktori untuk skrip database - Employees:- cd test_db
- Jalankan skrip pembuatan database - Employees:- mysql -u root -p -q < employees.sql- Saat diminta, masukkan sandi root yang Anda buat sebelumnya. 
- Untuk memastikan database contoh berfungsi, Anda dapat menjalankan kueri yang menghitung jumlah baris dalam tabel - employees:- mysql -u root -p -e "select count(*) from employees.employees;"- Saat diminta, masukkan sandi root yang Anda buat sebelumnya. - Outputnya adalah sebagai berikut: - +----------+ | count(*) | +----------+ | 300024 | +----------+ 
Membuat instance VM pengujian
Di bagian ini, Anda akan membuat instance VM MySQL bernama mysql-test sebagai
tujuan untuk database yang di-clone. Konfigurasi instance ini
identik dengan instance produksi. Namun, Anda tidak membuat disk data
kedua. Sebagai gantinya, Anda akan memasang disk data itu nanti dalam tutorial ini.
- Buka Cloud Shell. 
- Buat instance MySQL pengujian: - gcloud compute instances create mysql-test \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --boot-disk-size=50GB \ --boot-disk-device-name=mysql-test- Anda dapat mengabaikan peringatan performa disk karena tidak memerlukan performa tinggi untuk tutorial ini. 
Menginstal server MySQL pada instance VM pengujian
Anda juga perlu mendownload dan menginstal MySQL Community Edition ke
instance VM mysql-test.
- Pada sesi SSH yang terhubung ke - mysql-test, download dan instal paket konfigurasi MySQL:- wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
- Saat diminta, pilih opsi Server & Cluster MySQL, lalu pilih mysql-5.7. 
- Dalam daftar, pilih opsi Oke untuk menyelesaikan konfigurasi paket. 
- Perbarui cache repositori dan instal paket mysql-community: - sudo apt-get update sudo apt-get install -y mysql-community-server mysql-community-client
- Saat diminta untuk memberikan sandi root, buat dan masukkan sandi. Catat sandi atau simpan sementara di tempat yang aman. 
Meng-clone database menggunakan snapshot disk Compute Engine
Salah satu cara untuk meng-clone database MySQL yang berjalan di Compute Engine adalah dengan menyimpan database di disk data terpisah dan menggunakan snapshot persistent disk untuk membuat clone disk tersebut.
Snapshot persistent disk memungkinkan Anda mendapatkan salinan data dalam disk untuk waktu tertentu. Menjadwalkan snapshot disk adalah salah satu cara untuk mencadangkan data Anda secara otomatis.
Di bagian tutorial ini, Anda akan melakukan hal-hal berikut:
- Mengambil snapshot disk data server produksi.
- Membuat disk baru dari snapshot.
- Memasang disk baru ke server pengujian.
- Memulai ulang server MySQL pada instance pengujian sehingga server menggunakan disk baru sebagai disk data.
Diagram berikut menunjukkan cara meng-clone database menggunakan snapshot disk.
Membuat snapshot disk
- Buka Cloud Shell. 
- Buat snapshot disk data Anda di zona yang sama dengan instance VM: - gcloud compute disks snapshot mysql-prod-data \ --snapshot-names=mysql-prod-data-snapshot \ --zone="${ZONE}"- Setelah beberapa menit, snapshot Anda akan dibuat. 
Memasang snapshot disk ke instance pengujian
Anda harus membuat disk data baru dari snapshot yang telah dibuat, lalu
memasangnya ke instance mysql-test.
- Buka Cloud Shell. 
- Buat persistent disk baru menggunakan snapshot disk produksi untuk kontennya: - gcloud beta compute disks create mysql-test-data \ --size=100GB \ --source-snapshot=mysql-prod-data-snapshot \ --zone="${ZONE}"
- Pasang disk baru ke instance - mysql-testAnda dengan izin baca-tulis:- gcloud compute instances attach-disk mysql-test \ --disk=mysql-test-data --mode=rw
Memasang disk data baru di Linux
Untuk menggunakan disk data yang di-clone sebagai direktori data MySQL, Anda harus menghentikan instance MySQL dan memasang disk.
- Pada sesi SSH yang terhubung ke - mysql-test, hentikan layanan MySQL:- sudo service mysql stop
- Di jendela terminal, tampilkan daftar disk yang terpasang ke instance Anda: - lsblk- Outputnya adalah sebagai berikut: - NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 100G 0 disk - Disk bernama - sdb(100 GB) adalah disk data Anda.
- Pasang disk data MySQL ke direktori data MySQL: - sudo mount -o discard,defaults /dev/sdb /var/lib/mysql- Pemasangan disk ini akan menyembunyikan setiap tablespace dan file konfigurasi MySQL, lalu menggantinya dengan konten disk. - Dengan perintah ini, disk dipasang untuk sementara dan tidak dipasang kembali saat booting sistem. Jika Anda ingin memasang disk saat booting sistem, buat entri - fstab. Untuk mengetahui informasi selengkapnya, lihat bagian Menyiapkan disk tambahan di awal tutorial ini.
Memulai MySQL dalam instance pengujian
- Pada sesi SSH yang terhubung ke - mysql-test, mulai layanan MySQL:- sudo service mysql start
- Untuk memastikan database yang di-clone berfungsi, jalankan kueri yang menghitung jumlah baris dalam tabel - employees:- mysql -u root -p -e "select count(*) from employees.employees;"- Saat diminta, masukkan sandi root untuk server database - mysql-prod. Sandi root instance produksi diperlukan karena seluruh direktori data MySQL adalah clone direktori data instance- mysql-prod, sehingga semua database, pengguna database, dan sandi mereka akan disalin.- +----------+ | count(*) | +----------+ | 300024 | +----------+ - Jumlah baris sama seperti pada instance - mysql-prod.
Setelah mengetahui cara meng-clone database menggunakan snapshot persistent disk, Anda dapat mencoba meng-clone database menggunakan ekspor dan impor. Guna menyelesaikan tutorial untuk pendekatan kedua ini, Anda harus melepas disk yang di-clone.
Melepaskan disk yang di-clone
Untuk melepaskan disk yang di-clone dan Anda buat menggunakan snapshot disk, lakukan langkah-langkah berikut:
- Pada sesi SSH yang terhubung ke instance - mysql-test, hentikan layanan MySQL:- sudo service mysql stop
- Lepaskan disk data yang di-clone dari direktori data MySQL: - sudo umount /var/lib/mysql
- Mulai ulang layanan MySQL: - sudo service mysql start
Meng-clone menggunakan ekspor dan impor
Metode kedua untuk meng-clone database MySQL yang berjalan di
Compute Engine adalah dengan menggunakan ekspor (menggunakan mysqldump) dan
impor bawaan MySQL. Dengan pendekatan ini, Anda akan mentransfer file ekspor menggunakan
Cloud Storage.
Bagian tutorial ini menggunakan resource yang Anda buat di bagian Meng-clone database menggunakan snapshot disk Compute Engine dalam tutorial ini. Jika belum menyelesaikan bagian tersebut, Anda harus melakukannya sebelum melanjutkan.
Di bagian tutorial ini, Anda akan melakukan hal-hal berikut:
- Membuat bucket Cloud Storage.
- Mengekspor database pada instance produksi, dengan menuliskannya ke Cloud Storage.
- Mengimpor file ekspor ke instance pengujian, lalu membacanya dari Cloud Storage.
Diagram berikut menunjukkan cara meng-clone database dengan mentransfer ekspor menggunakan Cloud Storage.
Karena sistem di luar Google Cloud dapat diberi akses ke Cloud Storage, Anda dapat menggunakan pendekatan ini untuk meng-clone database dari instance MySQL eksternal.
Membuat bucket Cloud Storage
Anda perlu membuat bucket Cloud Storage yang menyimpan file ekspor
saat Anda mentransfernya dari instance mysql-prod ke instance
mysql-test.
- Buka Cloud Shell. 
- Buat bucket Cloud Storage di region yang sama dengan instance VM Anda: - gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
Mengekspor database
Di lingkungan produksi, Anda mungkin sudah membuat cadangan menggunakan file ekspor
mysqldump. Anda dapat menggunakan cadangan ini sebagai dasar untuk meng-clone database.
Dalam tutorial ini, Anda akan membuat file ekspor baru menggunakan mysqldump, yang tidak
memengaruhi jadwal pencadangan penuh atau inkremental yang sudah ada.
- Pada sesi SSH yang terhubung ke instance - mysql-prod, ekspor database- Employees, lalu streaming ke objek Cloud Storage di bucket yang Anda buat sebelumnya:- mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose --hex_blob \ --databases employees |\ gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-dump.sql"- Saat diminta, masukkan sandi root server database - mysql-prod.- Anda menggunakan himpunan karakter - utf8mb4dalam ekspor untuk menghindari masalah encoding karakter apa pun.- Opsi - --add-drop-databasedigunakan sehingga pernyataan- DROP DATABASEdan- CREATE DATABASEdisertakan dalam ekspor.
Mengimpor file yang diekspor
- Pada sesi SSH yang terhubung ke instance - mysql-test, streaming file yang diekspor dari bucket Cloud Storage Anda ke aplikasi command line- mysql:- gcloud storage cat "gs://$(gcloud config get-value project)-bucket/employees-dump.sql" |\ mysql --user=root -p --default-character-set=utf8mb4- Saat diminta, masukkan sandi root server database - mysql-test.- Anda menggunakan himpunan karakter - utf8mb4dalam impor untuk menghindari masalah encoding karakter apa pun.
- Untuk memastikan database yang di-clone berfungsi, jalankan kueri yang menghitung jumlah baris dalam tabel - employees:- mysql -u root -p -e "select count(*) from employees.employees;"- Saat diminta, masukkan sandi root server database - mysql-test.- +----------+ | count(*) | +----------+ | 300024 | +----------+ - Jumlah baris sama seperti pada instance - mysql-prod.
Menggunakan Cloud SQL sebagai tujuan clone
Jika database tujuan Anda dihosting di Cloud SQL, dan database asalnya berada di Compute Engine, satu-satunya mekanisme cloning yang didukung adalah dengan mengekspor database ke Cloud Storage, lalu mengimpornya ke Cloud SQL.
Seperti yang dijelaskan dalam dokumentasi untuk Cloud SQL, Cloud SQL hanya dapat mengimpor file yang diekspor jika tidak berisi pemicu, fungsi, tampilan, atau prosedur yang tersimpan.
Jika database bergantung pada salah satu elemen ini, Anda harus mengecualikannya dari
ekspor menggunakan argumen command line
--skip-triggers dan --ignore-table [VIEW_NAME], lalu membuatnya kembali secara manual setelah diimpor.
Membuat instance Cloud SQL untuk MySQL
- Buka Cloud Shell. 
- Buat instance Cloud SQL untuk MySQL yang menjalankan versi database yang sama dengan instance - mysql-prodAnda:- gcloud sql instances create mysql-cloudsql \ --tier=db-n1-standard-2 --region=${REGION} --database-version MYSQL_5_7- Setelah beberapa menit, database Cloud SQL Anda telah dibuat. 
- Reset sandi pengguna root ke nilai yang diketahui: - gcloud sql users set-password root \ --host=% --instance=mysql-cloudsql --prompt-for-password- Saat diminta untuk memberikan sandi root, buat dan masukkan sandi. Catat sandi atau simpan sementara di tempat yang aman. 
Mengekspor database
Untuk mengekspor database dalam format yang sesuai untuk diimpor ke Cloud SQL, Anda perlu mengecualikan semua tampilan dalam database.
- Pada sesi SSH yang terhubung ke instance - mysql-prod, tetapkan variabel lingkungan yang berisi kumpulan argumen command line untuk perintah- mysqldumpagar mengabaikan tampilan dalam database- Employees:- DATABASE_NAME=employees IGNORE_TABLES_ARGS="`mysql -u root -p -s -s -e \" SELECT CONCAT('--ignore-table ${DATABASE_NAME}.',TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA = '${DATABASE_NAME}'; \"`"- Saat diminta, masukkan sandi root server database - mysql-prod.
- Lihat konten variabel untuk memastikan semuanya telah ditetapkan dengan benar: - echo "${IGNORE_TABLES_ARGS}"- --ignore-table employees.current_dept_emp --ignore-table employees.dept_emp_latest_date 
- Ekspor database - Employees, kecuali pemicu dan tampilan, lalu streaming langsung ke objek Cloud Storage di bucket yang Anda buat sebelumnya:- mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose \ --hex-blob --skip-triggers --set-gtid-purged=OFF \ $IGNORE_TABLES_ARGS \ --databases employees |\ gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"- Saat diminta, masukkan sandi root server database - mysql-prod.
Memperbarui izin objek
Izin yang benar harus ditetapkan pada bucket Cloud Storage
dan objek ekspor, agar akun layanan Cloud SQL dapat membacanya.
Izin ini ditetapkan secara otomatis saat Anda menggunakan konsol Google Cloud untuk mengimpor objek, atau izin tersebut dapat ditetapkan menggunakan perintah gcloud.
- Buka Cloud Shell. 
- Tetapkan variabel lingkungan yang berisi alamat akun layanan instance Cloud SQL Anda: - CLOUDSQL_SA="$(gcloud sql instances describe mysql-cloudsql --format='get(serviceAccountEmailAddress)')"
- Tambahkan akun layanan ke kebijakan Identity and Access Management (IAM) bucket sebagai pembaca dan penulis: - gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
Mengimpor database yang diekspor
- Buka Cloud Shell. 
- Impor file yang diekspor ke instance Cloud SQL Anda: - gcloud sql import sql mysql-cloudsql \ "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"- Saat diminta, masukkan - y.
- Untuk memastikan database yang di-clone berfungsi, jalankan kueri yang menghitung jumlah baris dalam tabel - employees:- echo "select count(*) from employees.employees;" |\ gcloud sql connect mysql-cloudsql --user=root- Jika diminta, masukkan sandi root server database - mysql-cloudsql.- Outputnya adalah sebagai berikut: - Connecting to database with SQL user [root].Enter password: count(*) 300024 - Jumlah baris sama seperti pada instance - mysql-prod.
Informasi tambahan untuk sistem produksi
Kategori berikut memberikan praktik terbaik tambahan untuk sistem produksi Anda.
Menggunakan snapshot disk
Untuk pencadangan fisik (seperti snapshot disk), dokumentasi MySQL
merekomendasikan 
agar Anda menjeda penulisan ke database sebelum mengambil snapshot. Anda dapat melakukannya dengan
menggunakan
perintah FLUSH TABLES WITH READ LOCK. Setelah snapshot selesai, Anda dapat menggunakan UNLOCK TABLES
untuk memulai ulang penulisan.
Untuk database yang menggunakan tabel InnoDB, sebaiknya ambil snapshot
secara langsung tanpa menjalankan perintah FLUSH TABLES WITH READ LOCK terlebih dahulu. Hal ini
memungkinkan database tetap berjalan tanpa efek buruk, tetapi snapshot
mungkin dalam status tidak konsisten. Namun, jika hal ini terjadi, mesin InnoDB
dapat mem-build ulang tabel ke status yang konsisten saat clone dimulai.
Untuk database yang menggunakan tabel MyISAM, menjalankan perintah FLUSH TABLES WITH READ LOCK
akan memblokir semua penulisan ke tabel, sehingga database menjadi hanya baca
hingga Anda menjalankan perintah UNLOCK TABLES.
Jika Anda mengambil snapshot tanpa flush dan mengunci tabel terlebih dahulu, ada risiko bahwa database yang baru di-clone akan berisi data yang tidak konsisten, atau akan rusak.
Oleh karena itu, untuk mendapatkan snapshot yang konsisten pada database yang menggunakan tabel MyISAM, sebaiknya
jalankan FLUSH TABLES WITH READ LOCK pada replika baca dan
ambil snapshot replika tersebut sehingga performa database utama (master)
tidak terpengaruh.
Menggunakan perintah mysqldump
Untuk membuat file ekspor yang konsisten dengan database sumber,
perintah mysqldump mengunci semua tabel selama operasi ekspor. Artinya,
penulisan ke database akan diblokir saat database sedang diekspor.
Oleh karena itu, sebaiknya jalankan perintah mysqldump terhadap replika
baca database utama agar yang utama tidak diblokir.