GNU/Linux >> Belajar Linux >  >> Linux

Cara mengonfigurasi Database Budak MySQL

Replikasi MySQL memungkinkan banyak salinan database yang sama berada di beberapa server pada saat yang bersamaan, dengan menyalin data secara otomatis dari server utama ke server "slave".

Berkat mekanisme ini semua pernyataan yang dieksekusi pada master, yang entah bagaimana mengubah data dapat direkam, dikirim ke, dan dieksekusi pada basis data yang direplikasi.

Panduan ini akan membantu Anda menginstal MySQL di server Anda, mengonfigurasi replika dengan benar, dan memverifikasi operasinya dengan data pengujian.

Pertama, sambungkan ke server Anda melalui koneksi SSH. Jika Anda belum melakukannya, ikuti panduan kami disarankan untuk terhubung dengan aman dengan protokol SSH. Untuk server lokal, lanjutkan ke langkah berikutnya dan buka terminal server Anda.

Instalasi MySQL

Untuk mengatur replikasi Master / Slave di kedua server, instal versi MySQL, lalu jalankan prosedur instalasi berikut di kedua mesin, sebelum melanjutkan ke bab berikutnya.

Perbarui repositori distribusi, untuk memastikan Anda mengunduh versi MySQL terbaru:

$ sudo apt update

Jika Anda telah meluncurkan perintah ini sebelumnya, lanjutkan ke langkah berikutnya.

Sekarang lanjutkan dengan instalasi MySQL:

$ sudo apt install mysql-server

Untuk memastikan bahwa instalasi berhasil, periksa versi MySQL:

$ mysqld --version

Jika prosedur berhasil dilakukan, versi MySQL yang terinstal akan tercetak di layar.

Lanjutkan dengan mengamankan MySQL dengan menjalankan skrip yang disertakan dalam MySQL, yang akan meningkatkan keamanan dan membatasi akses ke database Anda:

$ sudo mysql_secure_installation

Pada titik ini prosedur terpandu akan memandu Anda melalui konfigurasi tingkat keamanan MySQL.

Pertama, Anda akan ditanya apakah Anda ingin mengaktifkan sistem validasi kata sandi. Jika diaktifkan, saat menyetel sandi pengguna, sandi dievaluasi dan jika tidak memenuhi kriteria keamanan, sandi ditolak dengan kesalahan.

Nanti Anda akan ditanya apakah Anda ingin mengubah kata sandi root dengan salah satu pilihan Anda (jika Anda mengaktifkan sistem validasi kata sandi, kata sandi yang memenuhi kriteria keamanan harus dimasukkan).

Disarankan untuk mengikuti beberapa praktik terbaik untuk membuat sandi yang aman. Ini termasuk:

  • penggunaan huruf besar dan kecil

  • penggunaan huruf dan angka

  • penggunaan karakter non-alfanumerik seperti @ # $% &!

  • penggunaan sandi yang sebelumnya tidak pernah digunakan.

Akhirnya pilih apakah akan menghapus pengguna anonim, menguji basis data, dan apakah akan menonaktifkan login jarak jauh dengan pengguna root. Untuk tingkat keamanan yang memadai, disarankan untuk mengonfirmasi semua perubahan ini.

Pada titik ini, konfirmasikan pembaruan tabel izin yang ditampilkan untuk menerapkan semua kriteria keamanan baru.

Akhirnya restart layanan untuk menerapkan perubahan:

$ sudo service mysql restart

Mengonfigurasi replikasi Master/Slave

Setelah menginstal di kedua server (Master dan Slave), lanjutkan dengan mengkonfigurasi server Master terlebih dahulu.

Pertama, edit file konfigurasi di /etc/mysql/mysql.conf.d/mysqld.cnf sebagai berikut:

server-id               = 1
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Karena server Slave harus terhubung dari jarak jauh ke server Master, Anda harus memastikan bahwa layanan MySQL dapat menerima koneksi eksternal, dengan mengubah alamat-bind sebagai berikut:

bind-address            = 0.0.0.0

Setelah selesai, mulai ulang layanan untuk menerapkan perubahan:

$ sudo service mysql restart

Untuk tujuan demonstrasi dan penilaian, buat database pengujian di server master (di sini disebut "tutorial") dengan tabel bernama "angka" dengan data fiktif. Setelah menyelesaikan prosedur konfigurasi, periksa apakah semua data yang dimasukkan di sini disinkronkan dengan server Slave:

$ sudo mysql -u root -p
mysql> CREATE DATABASE tutorial;
	Query OK, 1 row affected (0.00 sec)
	
	mysql> USE tutorial;
	Database changed
	
	mysql> CREATE TABLE numbers ( value REAL );
	Query OK, 0 rows affected (0.09 sec)
	
	mysql> INSERT INTO numbers VALUES ( 1 ), ( 2 ), ( 3 );
	Query OK, 3 rows affected (0.04 sec)
	
	Records: 3  Duplicates: 0  Warnings: 0

Jadi pastikan bahwa nilai yang baru saja Anda masukkan ada di tabel pengujian:

mysql> SELECT * FROM numbers;
		
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	+-------+
	3 rows in set (0.00 sec)

Tabel angka harus berisi 3 baris contoh seperti yang ditunjukkan di atas.

Kemudian dilanjutkan dengan membuat data akses untuk pengguna yang akan digunakan oleh database Slave:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usr_replica'@'%' IDENTIFIED BY 'SMDipmf#23$42';
	mysql> FLUSH PRIVILEGES;

Sebelum melanjutkan dengan konfigurasi server Slave, status Master saat ini akan dicetak di layar dan informasi berikut akan disimpan:

mysql> SHOW MASTER STATUS;
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| mysql-bin.000001 |     1238 | |               | |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	1 row in set (0.00 sec)

Anda akan memerlukan data ini saat mengonfigurasi server Slave.

Lanjutkan untuk keluar dari shell MySQL:

mysql> exit
	Bye

Kemudian simpan dump database lengkap untuk memuatnya nanti di server Slave:

$ sudo mysqldump -u root -p --opt tutorial > slave-init.sql
	Enter password:

Transfer file yang baru dibuat ke mesin slave dan lanjutkan dengan konfigurasinya, modifikasi file /etc/mysql/mysql.conf.d/mysqld.cnf:

server-id               = 2
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Harap diperhatikan bahwa server id telah diubah menggunakan nomor 2 dan juga ingat untuk mengubah bind-address seperti yang ditunjukkan di sini:

bind-address            = 0.0.0.0

Sekarang restart Slave untuk menerapkan perubahan:

$ sudo service mysql restart

Sekarang lanjutkan dengan membuat database dengan nama yang sama dengan server Master:

$ sudo mysql -u root -p

	mysql> create database tutorial;
	
	Query OK, 1 row affected (0.00 sec)
	mysql> exit
	
	Bye

Sekarang impor cadangan yang baru dibuat dan mulai Slave menggunakan informasi yang sebelumnya disimpan oleh database Master (MASTER_LOG_FILE dan MASTER_LOG_POS):

$ sudo mysql -u root tutorial < /root/slave.sql
	$ sudo mysql -u root -p 
	mysql> CHANGE MASTER TO MASTER_HOST='195.231.4.201', MASTER_USER='usr_replica', MASTER_PASSWORD='SMDipmf#23$42', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 1238;
	
	Query OK, 0 rows affected, 2 warnings (0.10 sec)
	mysql> START SLAVE;
	
	Query OK, 0 rows affected (0.00 sec)

Mulai saat ini, database disinkronkan secara real time dan Anda dapat keluar dari shell MySQL.

Memverifikasi fungsi replikasi yang benar

Untuk memverifikasi operasi replikasi, Anda dapat mencoba memasukkan data ke dalam Master dan memeriksa apakah data tersebut tiba dengan benar di database Slave. Mulailah dengan memasukkan data baru pada Master sebagai berikut:

$ sudo mysql -u root -p
mysql> use tutorial;
	Reading table information for completion of table and column names 
	Turn off this feature to get a quicker startup with -A   
	Database changed 
	
	mysql> INSERT INTO numbers VALUES ( 4 ) , ( 5 );
	
	Query OK, 2 rows affected (0.03 sec)
	Records: 2 
	Duplicates: 0 
	Warnings: 0

Kemudian lanjutkan dengan menanyakan database Slave:

$ sudo mysql -u root -p

	mysql> use tutorial;
	
	Reading table information for completion of table and column names
	
	Turn off this feature to get a quicker startup with -A
	  changed
	
	mysql> SELECT * FROM numbers;
	
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	|     4 |
	|     5 |
	+-------+
	
	5 rows in set (0.00 sec)

Seperti yang Anda lihat, nilai baru (4 dan 5) telah tiba di database Slave, sehingga sinkronisasi bekerja dengan benar.


Linux
  1. Cara mengkonfigurasi server web Apache

  2. Cara Menginstal Server Database MySQL di CentOS

  3. Cara Menginstal Mtop (Pemantauan Server Database MySQL) di CentOS 6

  1. Cara menyalin database MySQL

  2. Cara Menginstal WordPress di Ubuntu 18.04 dan Mengonfigurasinya untuk Menggunakan Database Jarak Jauh

  3. Cara Mengizinkan Koneksi Jarak Jauh ke Server Database MySQL

  1. Cara Mencadangkan &Memulihkan Basis Data MySQL

  2. Cara Menginstal Server Database MySQL 8 di CentOS 8

  3. Cara Membuat Database di MySQL dengan MySQL Workbench