Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Konfigurasi Replikasi Database Master-Master MySQL

Apa itu Replikasi Master-Master MySQL?

Replikasi MySQL Master-Master menambah kecepatan dan redundansi untuk situs web aktif. Dengan replikasi, dua server MySQL terpisah bertindak sebagai sebuah cluster. Pengelompokan basis data sangat berguna untuk konfigurasi situs web ketersediaan tinggi. Gunakan dua Linode terpisah untuk mengonfigurasi replikasi database, masing-masing dengan alamat IPv4 pribadi.

Catatan

Panduan ini ditulis untuk pengguna non-root. Perintah yang memerlukan hak istimewa yang lebih tinggi diawali dengan sudo . Jika Anda tidak terbiasa dengan sudo perintah, Anda dapat memeriksa panduan Pengguna dan Grup kami.

Panduan ini ditulis untuk Debian 9, Ubuntu 18.04, dan Ubuntu 20.04.

Jika Anda tidak yakin versi MySQL mana yang telah diinstal pada sistem Anda saat mengikuti langkah-langkah di bawah ini, masukkan perintah berikut:

mysql --version

Instal MySQL

  1. Gunakan perintah berikut untuk menginstal MySQL pada setiap Linode:

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get install mysql-server mysql-client
    
  2. Jalankan perintah instalasi aman MySQL. Anda akan diminta untuk membuat kata sandi root. Anda disarankan memilih ya untuk semua pertanyaan:

    mysql_secure_installation
    

Edit Konfigurasi MySQL

  1. Edit /etc/mysql/my.cnf file pada masing-masing Linodes. Tambahkan atau ubah nilai berikut:

    Server 1:

    File:/ etc/mysql/my.cnf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    [mysqld]
    server_id           = 1
    log_bin             = /var/log/mysql/mysql-bin.log
    log_bin_index       = /var/log/mysql/mysql-bin.log.index
    relay_log           = /var/log/mysql/mysql-relay-bin
    relay_log_index     = /var/log/mysql/mysql-relay-bin.index
    expire_logs_days    = 10
    max_binlog_size     = 100M
    log_replica_updates = 1
    auto-increment-increment = 2
    auto-increment-offset = 1
    Catatan Jika menggunakan MySQL 8.0.25 atau yang lebih lama, ganti log_replica_updates dengan log_slave_updates (dalam Server 1 dan 2). Lihat dokumentasi MySQL untuk detailnya.

    Server 2:

    File:/ etc/mysql/my.cnf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    [mysqld]
    server_id           = 2
    log_bin             = /var/log/mysql/mysql-bin.log
    log_bin_index       = /var/log/mysql/mysql-bin.log.index
    relay_log           = /var/log/mysql/mysql-relay-bin
    relay_log_index     = /var/log/mysql/mysql-relay-bin.index
    expire_logs_days    = 10
    max_binlog_size     = 100M
    log_replica_updates = 1
    auto-increment-increment = 2
    auto-increment-offset = 2
    Catatan Jika menggunakan MySQL 8.0.25 atau yang lebih lama, ganti log_replica_updates dengan log_slave_updates (dalam Server 1 dan 2). Lihat dokumentasi MySQL untuk detailnya.
  2. Edit bind-address konfigurasi untuk menggunakan alamat IP pribadi, untuk setiap Linode.

    File:/ etc/mysql/my.cnf
    1
    
    bind-address    = x.x.x.x
  3. Setelah selesai, restart aplikasi MySQL:

    sudo systemctl restart mysql
    

Buat Pengguna Replikasi

  1. Masuk ke MySQL di setiap Linode:

    mysql -u root -p
    
  2. Konfigurasikan pengguna replikasi pada setiap Linode. Ganti x.x.x.x dengan alamat IP pribadi dari Linode lawan, dan password dengan kata sandi yang kuat:

    MySQL8 dan di atasnya

    CREATE USER 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x';
    

    Di bawah MySQL8

    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
    
  3. Jalankan perintah berikut untuk menguji konfigurasi. Gunakan alamat IP pribadi dari Linode lawan:

    mysql -u replication -p -h x.x.x.x -P 3306
    

    Perintah ini akan menghubungkan Anda ke instance MySQL server jauh.

Konfigurasi Replikasi Basis Data

  1. Saat masuk ke MySQL di Server 1, tanyakan status master:

    SHOW MASTER STATUS;
    

    Perhatikan nilai file dan posisi yang ditampilkan:

    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      277 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    
  2. Di Server 2 pada prompt MySQL, atur fungsionalitas replika untuk database itu. Gantix.x.x.x dengan IP pribadi dari server pertama. Ganti juga nilai untuk source_log_file dengan nilai file dari langkah sebelumnya, dan nilai untuk source_log_pos dengan nilai posisi.

    MySQL 8.0.22 atau Lebih Tinggi:

    STOP REPLICA;
    CHANGE REPLICATION SOURCE TO
        source_host='x.x.x.x',
        source_port=3306,
        source_user='replication',
        source_password='password',
        source_log_file='mysql-bin.000001',
        source_log_pos=106;
    START REPLICA;
    

    MySQL 8.0.22 atau Sebelumnya:

    STOP SLAVE;
    CHANGE MASTER TO
        master_host='x.x.x.x',
        master_port=3306,
        master_user='replication',
        master_password='password',
        master_log_file='mysql-bin.000001',
        master_log_pos=106;
    START SLAVE;
    
  3. Di Server 2, tanyakan status master. Sekali lagi perhatikan nilai file dan posisi.

    SHOW MASTER STATUS;
    
  4. Atur status database replika di Server 1, menggunakan perintah serupa seperti pada langkah 2. Saat memasukkan perintah, gunakan alamat IP Server 2 dan nilai file dan posisi yang baru saja Anda kumpulkan di langkah sebelumnya.

  5. Uji dengan membuat database dan menyisipkan baris:

    Server 1:

    create database test;
    create table test.flowers (`id` varchar(10));
    

    Server 2:

    show tables in test;
    

Saat ditanya, Anda akan melihat tabel dari Server 1 direplikasi di Server 2. Selamat, Anda sekarang memiliki cluster Master-Master MySQL!

Informasi Lebih Lanjut

Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.

  • Manual Referensi MySQL

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan Kunci Utama Gabungan sebagai Kunci Asing

  2. Pustaka tidak dimuat:kesalahan libmysqlclient.16.dylib saat mencoba menjalankan 'rails server' di OS X 10.6 dengan permata mysql2

  3. Tabel ditentukan dua kali, baik sebagai target untuk 'UPDATE' dan sebagai sumber terpisah untuk data di mysql

  4. Buat Tabel di MySQL

  5. Bergabung dengan tiga tabel menggunakan MySQL