GNU/Linux >> Belajar Linux >  >> Linux

Siapkan replikasi sumber-replika MySQL

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.

  1. Masuk ke Panel Kontrol Cloud.
  2. Di bilah navigasi atas, klik Pilih Produk lalu Rackspace Cloud .
  3. Pilih Server lalu Server Awan .
  4. Klik Buat Server .
  5. Beri nama server sehingga Anda dapat dengan mudah mengidentifikasinya selama penyiapan.
  6. Pilih gambar dasar Centos 6.
  7. Pilih konfigurasi (rasa) RAM yang sesuai dengan kebutuhan database Anda.
  8. 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.

  1. Sebelum menginstal MySQL, konfirmasikan bahwa database paket sudah diperbarui dengan menjalankan perintah berikut:

    #yum update
    
  2. Instal MySQL dan aktifkan untuk berjalan saat boot secara otomatis:

     #yum install mysql-server
    #chkconfig mysqld on
    
  3. Mulai mysqld layanan:

    #service mysqld start
    
  4. 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
    
  5. Untuk mengizinkan koneksi pada port 3306 (mysqld port default), tambahkan aturan aTCP port 3306 dengan sisipan pada nomor baris terakhir di RH-Firewall-1-INPUT rantai (dalam hal ini, baris 10):

    # iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 3306 -j ACCEPT
    
  6. 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.

  1. 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
    
  2. 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"
    
  3. 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.

  4. 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!

  5. Lakukan dump database dengan menggunakan mysqldump sebagai berikut:

    # mysqldump -u root -p --databases [database-1] [database-2] ...  > /root/db_dump.sql
    
  6. Setelah dump database selesai, angkat kunci baca dari sumber (db01 ) dengan mengetik berikut ini, atau dengan keluar dari sesi terbuka:

    mysql> UNLOCK TABLES;
    
  7. Salin file dump database ke server replika sehingga dapat dipulihkan dengan menggunakan perintah berikut:

    scp /root/db_dump.sql [private-IP-of-db02]:/root/
    
  8. 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
    
  9. Impor db_dump.sql file disalin sebelumnya dan restart layanan MySQL.

    # mysql -u root -p < /root/db_dump.sql
    # service mysqld restart
    
  10. 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.


Linux
  1. Cara Mengatur Replikasi Master-Master MySQL

  2. Cara Mengatur Server LAMP Ubuntu/Debian

  3. Cara mengatur replikasi MySQL di CentOS

  1. Cara mengkonfigurasi Replikasi Multi-Master MySQL di Oracle Linux

  2. Cara Menginstal dan Mengatur mysql 8 di Ubuntu 20.04

  3. Cara mengatur MySQL Cluster di Ubuntu

  1. Konfigurasikan replikasi sumber-replika MySQL

  2. Konfigurasikan replikasi sumber-sumber MySQL

  3. Apa tujuan dari "pengguna sistem" di Replikasi MySQL?