Replikasi data sumber-replikasi memungkinkan Anda untuk menyalin data yang direplikasi ke beberapa komputer untuk cadangan dan analisis oleh banyak pihak. Anda harus mengirimkan perubahan yang diperlukan yang diidentifikasi oleh anggota grup ke node utama yang ditunjuk. Ini berbeda dengan replikasi sumber-sumber, di mana setiap kontributor resmi grup dapat memperbarui data.
Artikel ini memberikan langkah-langkah untuk menyiapkan replikasi basis data replika sumber MySQL® antara dua server cloud. Sistem operasi yang digunakan untuk contoh dalam artikel ini adalah CentOS® 6, dibuat dari gambar dasar Rackspace CloudServers.
Sebelum Anda mulai
Langkah-langkah dalam artikel ini menggunakan dua server cloud, db01
dan db02
Server .Cloud memiliki dua alamat IP (satu publik, satu pribadi). Contoh-contoh menunjukkan konfigurasi replikasi melalui antarmuka IP pribadi sehingga tidak ada biaya bandwidth yang dikeluarkan. Selama artikel, db01
dianggap sebagai sumber Server MySQL (menjalankan mode inread-write), dan db02
dianggap sebagai replika server (menjalankan mode hanya-baca).
Jika Anda sudah memiliki database MySQL yang berjalan pada node sumber, dump dan restore ke node replika diperlukan sebelum mengkonfigurasireplikasi di antara mereka. Anda menggunakan mysqldump
perintah untuk membuang basis data ke dalam file, kemudian mentransfernya dan mengembalikannya ke replika. Setelah konfigurasi yang diperlukan telah dilakukan, replikasi tidak berlaku. Untuk informasi selengkapnya, lihat bagian Mengonfigurasi replikasi.
Buat Server Cloud
Buat dua server cloud Linux®, menggunakan image dasar Centos 6. Gunakan langkah-langkah berikut untuk membuat setiap server secara terpisah.
- Masuk ke Panel Kontrol Cloud.
- Di bilah navigasi atas, klik Pilih Produk lalu Rackspace Cloud .
- Pilih Server lalu Server Awan .
- Klik Buat Server .
- Beri nama server sehingga Anda dapat dengan mudah mengidentifikasinya selama penyiapan.
- Pilih gambar dasar Centos 6.
- Pilih konfigurasi (rasa) RAM yang sesuai dengan kebutuhan database Anda.
- Klik Buat Server .
Perintah yang diuraikan di bagian berikut harus dijalankan oleh pengguna root atau grup sudo yang memiliki hak istimewa. Setiap string atau nilai yang ditentukan dalam kurung harus diganti dengan data khusus untuk penyiapan Anda.
Instal MySQL
Anda harus menginstal mysql-server paket di kedua server cloud CentOS.
-
Sebelum menginstal MySQL, konfirmasikan bahwa database paket sudah diperbarui dengan menjalankan perintah berikut:
#yum update
-
Instal MySQL dan aktifkan untuk berjalan saat boot secara otomatis:
#yum install mysql-server #chkconfig mysqld on
-
Mulai
mysqld
layanan:#service mysqld start
-
Setelah
mysqld
layanan telah dimulai, atur kata sandi serverroot MySQL Anda dengan menggunakan perintah berikut:/usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h web01 password 'new-password'
Catatan :Atau, Anda dapat menjalankan skrip instalasi aman yang dikemas dengan instalasi MySQL:
# /usr/bin/mysql_secure_installation Enter current password for root (enter for none): ... Set root password? [Y/n] Y ... Remove anonymous users? [Y/n] Y ... Disallow root login remotely? [Y/n] Y ... Remove test database and access to it? [Y/n] Y ... Reload privilege tables now? [Y/n] Y
-
Untuk mengizinkan koneksi pada port 3306 (
mysqld
port default), tambahkan aturan aTCP port 3306 dengan sisipan pada nomor baris terakhir diRH-Firewall-1-INPUT
rantai (dalam hal ini, baris 10):# iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 3306 -j ACCEPT
-
Simpan konfigurasi firewall:
# service iptables save
Selesaikan bagian berikut untuk membuat perubahan konfigurasi yang relevan untuk mengaktifkan replikasi.
Konfigurasikan replikasi
Pengguna MySQL diperlukan di server sumber (db01
) yang akan digunakan untuk replikasi.
-
Jalankan perintah berikut untuk mengatur pengguna MySQL, memperbarui entri dalam tanda kurung dengan string atau nilai yang Anda rencanakan untuk digunakan dengan pengaturan Anda:
Catatan: Anda mungkin tidak perlu membuat pengguna dalam kode berikut.
# mysql -u root -p mysql> create user [replication_username]@'[private IP of db02]' identified by '[some password]'; mysql> grant replication slave on *.* TO [replication_username]@'[private IP of db02]'; mysql> flush privileges; mysql> quit
-
Edit /etc/my.cnf file, dan tambahkan entri berikut:
bind-address = 0.0.0.0 server-id = 1 log-bin = mysql-bin binlog-ignore-db = "mysql"
-
Setelah Anda selesai memperbarui /etc/my.cnf file, mulai ulang
mysqld
layanan.#service mysqld restart
Sebelum memulai replikasi, data pada server sumber dan replika harus sama. Untuk menyelesaikan duplikasi ini, buang data dari sumbernya (
db01
) server dan tambahkan ke sanaplica (db02
) server. -
Gunakan perintah berikut untuk memastikan bahwa tidak ada yang dapat menulis ke database sumber selama dump database. Perhatikan juga nama file dan posisi log biner karena Anda memerlukan nilai ini untuk menyelesaikan konfigurasi replikasi di db02:
# mysql -u root -p mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; +------------------+--------------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+--------------------------+------------------+ | mysql-bin.000010 | 10 | | mysql | +------------------+--------------------------+------------------+ 1 row in set (0.00 sec)
Catatan 1: Catat nama file dan posisi log biner karena Anda memerlukan nilai ini untuk menyelesaikan konfigurasi replikasi di
db02
.Catatan 2: Biarkan sesi ini tetap terbuka, menutupnya akan melepaskan kunci!
-
Lakukan dump database dengan menggunakan
mysqldump
sebagai berikut:# mysqldump -u root -p --databases [database-1] [database-2] ... > /root/db_dump.sql
-
Setelah dump database selesai, angkat kunci baca dari sumber (
db01
) dengan mengetik berikut ini, atau dengan keluar dari sesi terbuka:mysql> UNLOCK TABLES;
-
Salin file dump database ke server replika sehingga dapat dipulihkan dengan menggunakan perintah berikut:
scp /root/db_dump.sql [private-IP-of-db02]:/root/
-
Di
db02
, edit /etc/my.cnf file dan tambahkan entri berikut:bind-address = 0.0.0.0 server-id = 2 master-host = [private-IP-of-db01] master-user = [replication-username] master-password = [replication-password] master-connect-retry = 60
-
Impor db_dump.sql file disalin sebelumnya dan restart layanan MySQL.
# mysql -u root -p < /root/db_dump.sql # service mysqld restart
-
Selesaikan langkah-langkah replikasi replika:
# mysql -u root -p mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='[private-IP-of-db01]', MASTER_USER='[replication-username]', MASTER_PASSWORD='[replication-password]', MASTER_LOG_FILE='[file-listed-on-master-status]', MASTER_LOG_POS=[log-position-listed-on-master-status]; mysql> START SLAVE; mysql> SHOW SLAVE STATUS\G
Catatan: Slave_IO_State bidang harus menunjukkan "Menunggu master untuk mengirim acara". Jika itu menunjukkan "Menghubungkan ke Master", periksa file log MySQL Anda. Secara default, ini adalah /var/log/mysqld.log , tetapi mungkin dikonfigurasi secara berbeda di sistem Anda. Asal, /etc/my.cnf menentukan lokasi file log Anda.
Uji replikasi
Untuk menguji pengaturan replikasi, buat database baru dan tabel terkait di db01
dan masukkan data untuk mengonfirmasi bahwa perubahan tersebut dicerminkan pada db02
. Dalam contoh berikut, database baru bernamapengujian , dan tabel baru diberi nama pengguna :
# mysql -u root -p
mysql> create database testing;
mysql> use testing
mysql> create table users(id int not null auto_increment, primary key(id), username varchar(30) not null);
mysql> insert into users (username) values ('foo');
mysql> insert into users (username) values ('bar');
mysql> exit
Anda akan melihat perubahan pada db02
segera.