Topik ini menjelaskan lingkungan pengujian, alat pengujian, metode pengujian, dan hasil pengujian dari pengujian kinerja Data Transmission Service (DTS). Tugas sinkronisasi data satu arah antara instance ApsaraDB RDS for MySQL digunakan sebagai contoh.
Lingkungan pengujian
Informasi tentang database sumber dan tujuan
Fitur ekspansi penyimpanan otomatis diaktifkan untuk instance ApsaraDB RDS for MySQL yang digunakan dalam pengujian.
Database | Wilayah | Tipe | Versi | Spesifikasi | CPU | Memori |
Database sumber | Cina (Hangzhou) | Instance Standar ApsaraDB RDS for MySQL yang menjalankan Edisi Ketersediaan Tinggi RDS | 8.0 | mysql.x4.xlarge.2c (dedicated) | 8 | 32 GB |
Database tujuan |
Klien
Tambahkan alamat IP dari instance ECS yang akan digunakan sebagai klien ke daftar putih alamat IP dari instance ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih Alamat IP.
Tipe | Wilayah | Tipe jaringan | Sistem Operasi | Spesifikasi | vCPU | Memori | IP Publik dialokasikan atau tidak |
Instance ECS | Cina (Hangzhou) | VPC Catatan VPC dan vSwitch dari instance ECS sama dengan yang dimiliki oleh instance ApsaraDB RDS for MySQL. | CentOS 7.9 64-bit | ecs.c7.8xlarge (tipe komputasi teroptimalkan c7) | 32 | 64 | Ya |
Alat Pengujian
Pengenalan
Alat | Versi | Deskripsi |
SysBench | 1.0.20 | Alat benchmark modular yang dapat menggunakan beberapa thread untuk menguji kinerja sistem database yang berat di berbagai platform. Data metrik inti membantu Anda dengan cepat mempelajari tentang kinerja sistem database. |
BenchmarkSQL | 5.0 (berbasis Java 8) | Alat pengujian kinerja database open-source yang dapat mensimulasikan beban kerja Pemrosesan Transaksi Online (OLTP) untuk evaluasi kinerja dan pengujian stres sistem database. |
Instal Alat
Instal Sysbench
Unduh dan instal Sysbench pada instance ECS.
# Instal pustaka dependensi Sysbench. yum -y install make automake libtool pkgconfig libaio-devel yum -y install mariadb-devel openssl-devel # Unduh kode sumber Sysbench. wget "https://codeload.github.com/akopytov/sysbench/zip/refs/tags/1.0.20" -O sysbench-1.0.20.zip # Instal utilitas Unzip. yum -y install unzip # Ekstrak kode sumber. unzip sysbench-1.0.20.zip # Kompilasi kode sumber. cd sysbench-1.0.20 ./autogen.sh ./configure sed -i 's/MYSQL_OPT_COMPRESSION_ALGORITHMS/MYSQL_OPT_COMPRESS/g' ./src/drivers/mysql/drv_mysql.c make -j # Instal Sysbench. make installSiapkan skrip Lua untuk skenario berikut: tabel besar (dm_large_table_write_only.lua), pembaruan data panas (dm_hot_update_only.lua), dan sinkronisasi DDL (dm_ddl_only.lua).
Unggah tiga skrip Lua ke instance ECS dan salin ke direktori skrip Sysbench
/usr/local/share/sysbench/.# Salin skrip untuk skenario di mana tabel besar digunakan. cp dm_large_table_write_only.lua /usr/local/share/sysbench/ # Salin skrip untuk skenario pembaruan data panas. cp dm_hot_update_only.lua /usr/local/share/sysbench/ # Salin skrip untuk skenario sinkronisasi DDL. cp dm_ddl_only.lua /usr/local/share/sysbench/
Instal BenchmarkSQL
# Instal Apache Ant.
yum -y install ant
# Unduh kode sumber BenchmarkSQL.
wget "https://github.com/jackysp/benchmarksql/archive/refs/heads/5.0-mysql-support-opt-2.1.zip" -O benchmarksql-5.0-mysql-support-opt-2.1.zip
# Ekstrak kode sumber.
unzip benchmarksql-5.0-mysql-support-opt-2.1.zip
# Bangun kode sumber.
cd benchmarksql-5.0-mysql-support-opt-2.1
antMetode Pengujian
Pengenalan
Gunakan metode berikut untuk menguji kinerja tugas sinkronisasi data dari berbagai dimensi.
Alat Pengujian | Model atau skrip pengujian | Fitur yang diuji |
Sysbench | oltp_write_only | Sinkronisasi data penuh dan sinkronisasi data tambahan |
dm_large_table_write_only | Sinkronisasi data penuh dan sinkronisasi data tambahan | |
dm_hot_update_only | Sinkronisasi data tambahan | |
dm_ddl_only | Sinkronisasi data tambahan | |
BenchmarkSQL | TPC-C | Sinkronisasi data penuh dan sinkronisasi data tambahan |
Prosedur
oltp_write_only
Siapkan data dasar.
Buat 10 tabel di instance ApsaraDB RDS for MySQL sumber menggunakan Sysbench, dan impor 10 juta entri data ke setiap tabel.
CatatanJalankan perintah berikut di direktori
/usr/local/share/sysbench/:sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --table_size=10000000 --tables=10 oltp_write_only.lua \ prepareParameter
Deskripsi
Catatan
Referensi
--mysql-host
Tentukan titik akhir internal dari instance ApsaraDB RDS for MySQL.
Ganti
{HOST}dengan titik akhir internal dari instance ApsaraDB RDS for MySQL.--mysql-port
Tentukan nomor port internal dari instance ApsaraDB RDS for MySQL.
Ganti
{PORT}dengan nomor port internal dari instance ApsaraDB RDS for MySQL.--mysql-user
Nama pengguna akun database yang dibuat di instance ApsaraDB RDS for MySQL.
Pastikan akun database memiliki izin yang diperlukan.
--mysql-password
Kata sandi akun database yang dibuat di instance ApsaraDB RDS for MySQL.
--mysql-db
Nama database tempat pengujian stres dilakukan.
Buat database terlebih dahulu dan ganti
{DATABASE}dengan nama database.--tables
Jumlah tabel.
Dalam contoh ini, parameter ini disetel ke 10.
Tidak tersedia
--table_size
Jumlah entri data dalam setiap tabel.
Dalam contoh ini, parameter ini disetel ke 10000000.
Buat tugas sinkronisasi data DTS.
Pilih Schema Synchronization dan Full Data Synchronization untuk parameter Synchronization Types. Untuk informasi lebih lanjut, lihat Konfigurasikan Sinkronisasi Data Satu Arah Antar Instance ApsaraDB RDS for MySQL.
Tunggu hingga sinkronisasi data penuh selesai.
Lakukan pengujian stres pada sinkronisasi data tambahan.
Gunakan model oltp_write_only di instance ECS untuk melakukan pengujian stres pada database sumber tugas sinkronisasi data dan menghasilkan log biner.
CatatanProporsi operasi DML: INSERT:UPDATE:DELETE = 1:2:1.
sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --table_size=1000000 --tables=10 --time=600 oltp_write_only.lua \ runParameter
Deskripsi
Catatan
--time
Durasi pengujian stres. Satuan: detik.
Dalam contoh ini, parameter ini disetel ke 600.
--threads
Jumlah thread untuk pengujian stres.
Dalam contoh ini, parameter ini disetel ke 64.
Pada halaman Performance Monitoring dari tugas sinkronisasi data DTS, lihat kinerja tugas tersebut.
Untuk informasi lebih lanjut, lihat Pantau Kinerja Tugas.
dm_large_table_write_only
Siapkan data dasar.
Buat 10 tabel di instance ApsaraDB RDS for MySQL sumber menggunakan Sysbench. Impor 10.000 entri data ke setiap tabel.
CatatanJalankan perintah berikut di direktori
/usr/local/share/sysbench/:sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --table_size=10000 --tables=10 dm_large_table_write_only.lua \ prepareParameter
Deskripsi
Catatan
Referensi
--mysql-host
Tentukan titik akhir internal dari instance ApsaraDB RDS for MySQL.
Ganti
{HOST}dengan titik akhir internal dari instance ApsaraDB RDS for MySQL.--mysql-port
Tentukan nomor port internal dari instance ApsaraDB RDS for MySQL.
Ganti
{PORT}dengan nomor port internal dari instance ApsaraDB RDS for MySQL.--mysql-user
Nama pengguna akun database yang dibuat di instance ApsaraDB RDS for MySQL.
Pastikan akun database memiliki izin yang diperlukan.
--mysql-password
Kata sandi akun database yang dibuat di instance ApsaraDB RDS for MySQL.
--mysql-db
Nama database tempat pengujian stres dilakukan.
Buat database terlebih dahulu dan ganti
{DATABASE}dengan nama database.--tables
Jumlah tabel.
Dalam contoh ini, parameter ini disetel ke 10.
Tidak tersedia
--table_size
Jumlah entri data dalam setiap tabel.
Dalam contoh ini, parameter ini disetel ke 10000.
Buat tugas sinkronisasi data DTS.
Pilih Schema Synchronization dan Full Data Synchronization untuk parameter Synchronization Types. Untuk informasi lebih lanjut, lihat Konfigurasikan Sinkronisasi Data Satu Arah Antar Instance ApsaraDB RDS for MySQL.
Tunggu hingga sinkronisasi data penuh selesai.
Lakukan pengujian stres pada sinkronisasi data tambahan.
Gunakan model dm_large_table_write_only di instance ECS untuk melakukan pengujian stres pada database sumber tugas sinkronisasi data dan menghasilkan log biner.
sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --table_size=10000 --tables=10 --time=600 dm_large_table_write_only.lua \ runParameter
Deskripsi
Catatan
--time
Durasi pengujian stres. Satuan: detik.
Dalam contoh ini, parameter ini disetel ke 600.
--threads
Jumlah thread untuk pengujian stres.
Dalam contoh ini, parameter ini disetel ke 64.
Pada halaman Performance Monitoring dari tugas sinkronisasi data DTS, lihat kinerja tugas tersebut.
Untuk informasi lebih lanjut, lihat Pantau Kinerja Tugas.
dm_hot_update_only
Buat tugas sinkronisasi data DTS.
Jangan pilih Full Data Synchronization untuk parameter Synchronization Types. Jika database dan tabel yang sesuai belum dibuat di instance ApsaraDB RDS for MySQL tujuan, Anda harus memilih Schema Synchronization. Untuk informasi lebih lanjut, lihat Konfigurasikan Sinkronisasi Data Satu Arah Antar Instance ApsaraDB RDS for MySQL.
Inisialisasi data di tabel tempat pengujian stres akan dilakukan.
sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --tables=2 dm_hot_update_only.lua \ prepareParameter
Deskripsi
Catatan
Referensi
--mysql-host
Tentukan titik akhir internal dari instance ApsaraDB RDS for MySQL.
Ganti
{HOST}dengan titik akhir internal dari instance ApsaraDB RDS for MySQL.--mysql-port
Tentukan nomor port internal dari instance ApsaraDB RDS for MySQL.
Ganti
{PORT}dengan nomor port internal dari instance ApsaraDB RDS for MySQL.--mysql-user
Nama pengguna akun database yang dibuat di instance ApsaraDB RDS for MySQL.
Pastikan akun database memiliki izin yang diperlukan.
--mysql-password
Kata sandi akun database yang dibuat di instance ApsaraDB RDS for MySQL.
--mysql-db
Nama database tempat pengujian stres dilakukan.
Buat database terlebih dahulu dan ganti
{DATABASE}dengan nama database.--tables
Jumlah tabel.
Dalam contoh ini, parameter ini disetel ke 2.
Tidak tersedia
Lakukan pengujian stres pada sinkronisasi data tambahan.
Gunakan model dm_hot_update_only di instance ECS untuk melakukan pengujian stres pada database sumber tugas sinkronisasi data dan menghasilkan log biner.
sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --tables=2 --time=600 dm_hot_update_only.lua \ runParameter
Deskripsi
Catatan
--time
Durasi pengujian stres. Satuan: detik.
Dalam contoh ini, parameter ini disetel ke 600.
--threads
Jumlah thread untuk pengujian stres.
Dalam contoh ini, parameter ini disetel ke 64.
Pada halaman Performance Monitoring dari tugas sinkronisasi data DTS, lihat kinerja tugas tersebut.
Untuk informasi lebih lanjut, lihat Pantau Kinerja Tugas.
dm_ddl_only
Buat tugas sinkronisasi data DTS.
Jangan pilih Full Data Synchronization untuk parameter Synchronization Types. Jika database dan tabel yang sesuai belum dibuat di instance ApsaraDB RDS for MySQL tujuan, Anda harus memilih Schema Synchronization. Untuk informasi lebih lanjut, lihat Konfigurasikan Sinkronisasi Data Satu Arah Antar Instance ApsaraDB RDS for MySQL.
Lakukan pengujian stres pada sinkronisasi data tambahan.
Gunakan model dm_ddl_only di instance ECS untuk melakukan pengujian stres pada database sumber tugas sinkronisasi data dan menghasilkan log biner.
sysbench --db-driver=mysql \ --mysql-host={HOST} \ --mysql-port={PORT} \ --mysql-user= \ --mysql-password= \ --mysql-db={DATABASE} \ --threads=64 --tables=2 --time=600 dm_ddl_only.lua \ runParameter
Deskripsi
Catatan
Referensi
--mysql-host
Tentukan titik akhir internal dari instance ApsaraDB RDS for MySQL.
Ganti
{HOST}dengan titik akhir internal dari instance ApsaraDB RDS for MySQL.--mysql-port
Tentukan nomor port internal dari instance ApsaraDB RDS for MySQL.
Ganti
{PORT}dengan nomor port internal dari instance ApsaraDB RDS for MySQL.--mysql-user
Nama pengguna akun database yang dibuat di instance ApsaraDB RDS for MySQL.
Pastikan akun database memiliki izin yang diperlukan.
--mysql-password
Kata sandi akun database yang dibuat di instance ApsaraDB RDS for MySQL.
--mysql-db
Nama database tempat pengujian stres dilakukan.
Buat database terlebih dahulu dan ganti
{DATABASE}dengan nama database.--threads
Jumlah thread untuk pengujian stres.
Dalam contoh ini, parameter ini disetel ke 64.
Tidak tersedia
--tables
Jumlah tabel.
Dalam contoh ini, parameter ini disetel ke 2.
--time
Durasi pengujian stres. Satuan: detik.
Dalam contoh ini, parameter ini disetel ke 600. Ini berarti operasi DDL dilakukan selama 600 detik.
Pada halaman Performance Monitoring dari tugas sinkronisasi data DTS, lihat kinerja tugas tersebut.
Untuk informasi lebih lanjut, lihat Pantau Kinerja Tugas.
TPC-C
Siapkan data dasar.
Pergi ke direktori kerja BenchmarkSQL di instance ECS.
cd benchmarksql-5.0-mysql-support-opt-2.1/run/Tentukan informasi koneksi tentang instance sumber dalam file konfigurasi props.mysql.
vim props.mysqlBlok kode berikut menunjukkan contoh file konfigurasi. Ganti
{HOST},{PORT},{USER},{PASSWORD}, dan{DATABASE}dengan informasi yang sesuai tentang instance ApsaraDB RDS for MySQL sumber.db=mysql driver=com.mysql.jdbc.Driver conn=jdbc:mysql://{HOST}:{PORT}/{DATABASE}?readOnlyPropagatesToServer=false&rewriteBatchedStatements=true&failOverReadOnly=false&connectTimeout=3000&allowMultiQueries=true&clobberStreamingResults=true&characterEncoding=utf8&netTimeoutForStreamingResults=0&autoReconnect=true user={USER} password={PASSWORD} warehouses=1000 loadWorkers=100 terminals=128 //Untuk menjalankan transaksi tertentu per terminal - runMins harus sama dengan nol runTxnsPerTerminal=0 //Untuk menjalankan selama menit tertentu - runTxnsPerTerminal harus sama dengan nol runMins=10 //Jumlah total transaksi per menit limitTxnsPerMin=0 //Setel ke true untuk menjalankan dalam mode kompatibel 4.x. Setel ke false untuk menggunakan seluruh database yang dikonfigurasi secara merata. terminalWarehouseFixed=true //Lima nilai berikut ini harus berjumlah 100 //Persentase default 45, 43, 4, 4 & 4 sesuai dengan spesifikasi TPC-C newOrderWeight=45 paymentWeight=43 orderStatusWeight=4 deliveryWeight=4 stockLevelWeight=4 //Nama direktori untuk mengumpulkan data hasil rinci. //Komentari ini untuk menekan. resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS // osCollectorScript=./misc/os_collector_linux.py // osCollectorInterval=1 // osCollectorSSHAddr=user@dbhost // osCollectorDevices=net_eth0 blk_sdaParameter
Deskripsi
Catatan
conn
Konfigurasi koneksi instance. Ganti {HOST} dan {PORT} dengan informasi berikut:
HOST: titik akhir internal dari instance ApsaraDB RDS for MySQL.
PORT: nomor port internal dari instance ApsaraDB RDS for MySQL.
DATABASE: nama database yang dibuat untuk pengujian di instance ApsaraDB RDS for MySQL.
Ganti
{HOST},{PORT}, dan{DATABASE}dengan informasi yang sesuai.user
Nama pengguna akun database yang dibuat di instance ApsaraDB RDS for MySQL.
Ganti
{USER}dengan informasi yang sesuai.password
Kata sandi akun database yang dibuat di instance ApsaraDB RDS for MySQL.
Ganti
{PASSWORD}dengan informasi yang sesuai.runMins
Durasi pengujian stres. Satuan: menit.
Dalam contoh ini, parameter ini disetel ke 10.
Inisialisasi data dasar untuk pengujian TPC-C.
./runDatabaseBuild.sh props.mysqlBuat 10 tabel. Impor sekitar 500 juta entri data ke tabel-tabel tersebut.
Buat tugas sinkronisasi data DTS.
Pilih Schema Synchronization dan Full Data Synchronization untuk parameter Synchronization Types. Untuk informasi lebih lanjut, lihat Konfigurasikan Sinkronisasi Data Satu Arah Antar Instance ApsaraDB RDS for MySQL.
Tunggu hingga sinkronisasi data penuh selesai.
Lakukan pengujian stres pada sinkronisasi data tambahan.
Gunakan model TPC-C di instance ECS untuk melakukan pengujian stres pada database sumber tugas sinkronisasi data dan menghasilkan log biner.
./runBenchmark.sh props.mysqlParameter
Deskripsi
Catatan
--time
Durasi pengujian stres. Satuan: detik.
Dalam contoh ini, parameter ini disetel ke 600.
--threads
Jumlah thread untuk pengujian stres.
Dalam contoh ini, parameter ini disetel ke 64.
Pada halaman Performance Monitoring dari tugas sinkronisasi data DTS, lihat kinerja tugas tersebut.
Untuk informasi lebih lanjut, lihat Pantau Kinerja Tugas.
Hasil Pengujian
Untuk informasi lebih lanjut tentang kinerja maksimum tugas sinkronisasi data tambahan, lihat Data Kinerja Sinkronisasi Data. Kinerja tugas diukur oleh baris yang disinkronkan per detik (RPS).
oltp_write_only
Sinkronisasi data penuh
Tipe Instance | RPS (baris/d) | BPS (MB/s) | Durasi (d) |
micro | 17.95W | 34.19 | 557 |
small | 18.18W | 34.63 | 550 |
medium | 19.64W | 37.42 | 509 |
large | 19.96W | 38.02 | 501 |
Sinkronisasi data tambahan
Tipe Instance | RPS (baris/d) | BPS (KB/s) | Apakah performa maksimum telah tercapai atau belum |
micro | 200 | 86 | Ya |
small | 2000 | 982 | Ya |
medium | 5000 | 2605 | Ya |
large | 11000 | 5489 | Ya |
dm_large_table_write_only
Sinkronisasi data penuh
Tipe Instance | RPS (baris/d) | BPS (MB/s) | Durasi (d) |
micro | 469.48 | 35.09MB | 213 |
small | 480.77 | 35.94MB | 208 |
medium | 552.49 | 41.30MB | 181 |
large | 584.80 | 43.71 | 171 |
Sinkronisasi data tambahan
Tipe Instance | RPS (baris/d) | BPS (KB/s) | Kinerja maksimum tercapai atau tidak |
micro | 200 | 9086.3 | Ya |
small | 683 | 31741.51 | Tidak |
medium | 1033 | 56676.41 | Tidak |
large | 1537 | 84344.32 | Tidak |
dm_hot_update_only
Secara default, parameter trans.hot.merge.enable disetel ke false. Untuk informasi lebih lanjut tentang cara memodifikasi parameter ini, lihat Modifikasi Parameter Instance DTS.
Parameter trans.hot.merge.enable disetel ke false.
Sinkronisasi data tambahan
Tipe Instance | RPS (baris/d) | Kinerja maksimum tercapai atau tidak |
micro | 200 | Ya |
small | 1200 | Tidak |
medium | 1200 | Tidak |
large | 1200 | Tidak |
Parameter trans.hot.merge.enable disetel ke true.
Sinkronisasi data tambahan
Tipe Instance | RPS (baris/d) | Kinerja maksimum tercapai atau tidak |
micro | 200 | Ya |
small | 2000 | Ya |
medium | 5000 | Ya |
large | 11000 | Ya |
dm_ddl_only
Sinkronisasi data tambahan
Tipe Instance | RPS (baris/d) | Kinerja maksimum tercapai atau tidak |
micro | 68 | Tidak |
small | 68 | Tidak |
medium | 68 | Tidak |
large | 68 | Tidak |
TPC-C
Sinkronisasi data penuh
Tipe Instance | RPS (baris/d) | BPS (MB/s) | Duration (s) |
micro | 12.04W | 17.52 | 4143 |
small | 12.09W | 17.59 | 4127 |
medium | 12.73W | 18.52 | 3921 |
large | 13.50W | 19.64 | 3696 |
Sinkronisasi data tambahan
Tipe Instance | RPS (baris/d) | BPS (KB/s) | Kinerja maksimum tercapai atau tidak |
micro | 200 | 138 | Ya |
small | 2000 | 1920 | Ya |
medium | 5000 | 3847 | Ya |
large | 11000 | 7542 | Ya |