<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Manajemen_transaksi_terdistribusi</id>
	<title>Manajemen transaksi terdistribusi - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Manajemen_transaksi_terdistribusi"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Manajemen_transaksi_terdistribusi&amp;action=history"/>
	<updated>2026-04-27T09:36:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=Manajemen_transaksi_terdistribusi&amp;diff=72660&amp;oldid=prev</id>
		<title>Unknown user at 04:23, 6 May 2025</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Manajemen_transaksi_terdistribusi&amp;diff=72660&amp;oldid=prev"/>
		<updated>2025-05-06T04:23:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lms.onnocenter.or.id/wiki/index.php?title=Manajemen_transaksi_terdistribusi&amp;amp;diff=72660&amp;amp;oldid=72522&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=Manajemen_transaksi_terdistribusi&amp;diff=72522&amp;oldid=prev</id>
		<title>Unknown user: Created page with &quot;Berikut adalah **Modul 11: Sistem Basis Data Terdistribusi** dengan fokus pada **Manajemen Transaksi Terdistribusi**, disertai contoh implementasi di **MySQL pada Ubuntu 24.04...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Manajemen_transaksi_terdistribusi&amp;diff=72522&amp;oldid=prev"/>
		<updated>2025-04-13T02:32:45Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Berikut adalah **Modul 11: Sistem Basis Data Terdistribusi** dengan fokus pada **Manajemen Transaksi Terdistribusi**, disertai contoh implementasi di **MySQL pada Ubuntu 24.04...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Berikut adalah **Modul 11: Sistem Basis Data Terdistribusi** dengan fokus pada **Manajemen Transaksi Terdistribusi**, disertai contoh implementasi di **MySQL pada Ubuntu 24.04**.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 📘 **Modul 11.3: Manajemen Transaksi Terdistribusi**&lt;br /&gt;
&lt;br /&gt;
### 🎯 Tujuan Pembelajaran:&lt;br /&gt;
- Memahami konsep manajemen transaksi terdistribusi.&lt;br /&gt;
- Memahami bagaimana commit dan rollback bekerja dalam sistem database terdistribusi.&lt;br /&gt;
- Menerapkan simulasi transaksi terdistribusi sederhana di MySQL.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### 🧠 **1. Konsep Dasar Manajemen Transaksi Terdistribusi**&lt;br /&gt;
Transaksi terdistribusi adalah transaksi yang melibatkan lebih dari satu database atau lebih dari satu server database. Tantangannya adalah menjaga konsistensi data antar node meskipun terjadi kegagalan jaringan atau sistem.&lt;br /&gt;
&lt;br /&gt;
**Karakteristik transaksi terdistribusi:**&lt;br /&gt;
- **Atomicity**: Semua bagian transaksi harus berhasil atau dibatalkan semua.&lt;br /&gt;
- **Consistency**: Data tetap konsisten sebelum dan sesudah transaksi.&lt;br /&gt;
- **Isolation**: Proses transaksi berjalan independen dari transaksi lain.&lt;br /&gt;
- **Durability**: Data tersimpan secara permanen setelah commit.&lt;br /&gt;
&lt;br /&gt;
**Contoh penerapan**:&lt;br /&gt;
&amp;gt; Misal, sistem e-commerce menyimpan data **pembayaran** di server A dan data **stok barang** di server B. Jika transaksi pembelian dilakukan, keduanya harus update secara konsisten.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### 🛠️ **2. Arsitektur Transaksi Terdistribusi**&lt;br /&gt;
&lt;br /&gt;
Biasanya melibatkan dua komponen utama:&lt;br /&gt;
- **Transaction Coordinator**: mengatur alur transaksi antar node.&lt;br /&gt;
- **Resource Managers (RM)**: masing-masing server database yang menangani bagian dari transaksi.&lt;br /&gt;
&lt;br /&gt;
Protokol yang umum digunakan:&lt;br /&gt;
- **Two-Phase Commit (2PC)**: memastikan semua node menyetujui (prepare), baru commit.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### 💡 **3. Contoh Simulasi di MySQL Ubuntu 24.04**&lt;br /&gt;
&lt;br /&gt;
#### ⚙️ 3.1 Persiapan Dua MySQL Server Lokal&lt;br /&gt;
&lt;br /&gt;
Misal, dua instance MySQL berjalan di port berbeda:&lt;br /&gt;
- MySQL A (port 3306)&lt;br /&gt;
- MySQL B (port 3307)&lt;br /&gt;
&lt;br /&gt;
#### 🔧 3.2 Instalasi MySQL Tambahan (opsional)&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
sudo apt install mysql-server&lt;br /&gt;
sudo cp -r /etc/mysql /etc/mysql2&lt;br /&gt;
sudo nano /etc/mysql2/mysql.conf.d/mysqld.cnf&lt;br /&gt;
# Ubah port jadi 3307 dan datadir jadi /var/lib/mysql2&lt;br /&gt;
&lt;br /&gt;
sudo mysqld --defaults-file=/etc/mysql2/mysql.conf.d/mysqld.cnf --initialize-insecure --user=mysql&lt;br /&gt;
sudo mysqld_safe --defaults-file=/etc/mysql2/mysql.conf.d/mysqld.cnf &amp;amp;&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
#### 🗃️ 3.3 Setup Database &amp;amp; Table&lt;br /&gt;
&lt;br /&gt;
**Di MySQL A (port 3306)**:&lt;br /&gt;
```sql&lt;br /&gt;
CREATE DATABASE toko;&lt;br /&gt;
USE toko;&lt;br /&gt;
CREATE TABLE pembayaran (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    user VARCHAR(50),&lt;br /&gt;
    jumlah INT&lt;br /&gt;
);&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**Di MySQL B (port 3307)**:&lt;br /&gt;
```sql&lt;br /&gt;
CREATE DATABASE gudang;&lt;br /&gt;
USE gudang;&lt;br /&gt;
CREATE TABLE stok (&lt;br /&gt;
    id INT PRIMARY KEY AUTO_INCREMENT,&lt;br /&gt;
    barang VARCHAR(50),&lt;br /&gt;
    jumlah INT&lt;br /&gt;
);&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
#### 🔄 3.4 Simulasi Manual Transaksi Terdistribusi&lt;br /&gt;
&lt;br /&gt;
Karena MySQL Community Edition **tidak mendukung 2PC**, kita simulasikan koordinasi dari **sisi aplikasi (Python)** menggunakan transaksi biasa.&lt;br /&gt;
&lt;br /&gt;
**Python Script (simulasi koordinasi 2 transaksi):**&lt;br /&gt;
```python&lt;br /&gt;
import mysql.connector&lt;br /&gt;
&lt;br /&gt;
# koneksi ke server A&lt;br /&gt;
conn_a = mysql.connector.connect(user=&amp;#039;root&amp;#039;, password=&amp;#039;&amp;#039;, host=&amp;#039;localhost&amp;#039;, port=3306, database=&amp;#039;toko&amp;#039;)&lt;br /&gt;
cursor_a = conn_a.cursor()&lt;br /&gt;
&lt;br /&gt;
# koneksi ke server B&lt;br /&gt;
conn_b = mysql.connector.connect(user=&amp;#039;root&amp;#039;, password=&amp;#039;&amp;#039;, host=&amp;#039;localhost&amp;#039;, port=3307, database=&amp;#039;gudang&amp;#039;)&lt;br /&gt;
cursor_b = conn_b.cursor()&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    # Mulai transaksi di kedua server&lt;br /&gt;
    conn_a.start_transaction()&lt;br /&gt;
    conn_b.start_transaction()&lt;br /&gt;
&lt;br /&gt;
    # Proses pembayaran&lt;br /&gt;
    cursor_a.execute(&amp;quot;INSERT INTO pembayaran (user, jumlah) VALUES (%s, %s)&amp;quot;, (&amp;quot;Andi&amp;quot;, 50000))&lt;br /&gt;
&lt;br /&gt;
    # Update stok&lt;br /&gt;
    cursor_b.execute(&amp;quot;UPDATE stok SET jumlah = jumlah - 1 WHERE barang = %s&amp;quot;, (&amp;quot;Laptop&amp;quot;,))&lt;br /&gt;
&lt;br /&gt;
    # Simulasi jika semua sukses&lt;br /&gt;
    conn_a.commit()&lt;br /&gt;
    conn_b.commit()&lt;br /&gt;
    print(&amp;quot;Transaksi berhasil.&amp;quot;)&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    conn_a.rollback()&lt;br /&gt;
    conn_b.rollback()&lt;br /&gt;
    print(&amp;quot;Transaksi gagal:&amp;quot;, e)&lt;br /&gt;
finally:&lt;br /&gt;
    cursor_a.close()&lt;br /&gt;
    conn_a.close()&lt;br /&gt;
    cursor_b.close()&lt;br /&gt;
    conn_b.close()&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### ⚠️ Catatan&lt;br /&gt;
- **MySQL Community Edition** tidak mendukung native 2PC. Jika ingin dukungan penuh transaksi terdistribusi, pertimbangkan:&lt;br /&gt;
  - **XA Transactions** (partial support)&lt;br /&gt;
  - **MySQL Cluster**&lt;br /&gt;
  - **Proxy-based approach**&lt;br /&gt;
  - Atau sistem lain seperti **PostgreSQL + pgpool**, **Oracle**, **MS SQL Server**&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### ✅ Kesimpulan&lt;br /&gt;
&lt;br /&gt;
Manajemen transaksi terdistribusi penting dalam sistem database multi-node. Meskipun MySQL Community Edition memiliki keterbatasan, kita bisa mensimulasikan transaksi atomik lintas server dengan pendekatan manual dari sisi aplikasi.&lt;br /&gt;
&lt;br /&gt;
Jika kamu ingin, kita bisa lanjut ke simulasi **XA Transactions** di MySQL juga.&lt;br /&gt;
&lt;br /&gt;
---  &lt;br /&gt;
Butuh versi PDF atau PowerPoint-nya juga, Dzaq?&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>