MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Cara Mengatur Replikasi MariaDB 10.3 Menggunakan Ansible dan Vagrant

Penyebaran manual biasa terjadi, tetapi bisa lambat dan monoton, jika Anda pernah mencoba instalasi Oracle RAC dengan pengaturan Data Guard di lebih dari tiga node, Anda tahu apa yang saya maksud. Bergantung pada jumlah node, langkah-langkah penerapan mungkin menguras waktu dan kemungkinan kesalahan. Tentu saja, ada banyak "petunjuk" yang bagus tentang cara melakukan penyiapan klaster basis data manual, namun, dengan pendekatan manual pada skala, ada banyak pertanyaan tambahan yang harus dijawab.

Apakah instance lain di lingkungan saya diatur dengan cara yang sama? Apakah sistem QA itu diatur dengan cara yang sama seperti produksi? Apakah yang baru saja kita terapkan sudah siap produksi? Untuk menjawab semua pertanyaan itu, penerapan semakin diotomatisasi melalui alat manajemen konfigurasi.

Referensi terkait Otomasi Database dengan Wayang:Menerapkan Replikasi MySQL &MariaDB Cara Mengotomatiskan Penerapan Klaster Galera MySQL menggunakan s9s CLI dan Chef Cara Mengotomatiskan Migrasi dari MySQL Standalone ke Galera Cluster menggunakan Ansible ClusterControl untuk MariaDB

Alat manajemen konfigurasi populer seperti Wayang, Koki, dan Ansible adalah teknologi yang telah terbukti dalam menerapkan berbagai layanan TI. Mereka membantu menghilangkan pekerjaan manual, meminimalkan risiko kesalahan manusia, dan memungkinkan untuk diterapkan dengan cepat. Di blog hari ini, kita akan melihat salah satunya.

Ansible adalah alat manajemen sistem sumber terbuka untuk memusatkan dan mengotomatisasi manajemen konfigurasi. Dengan Ansible, Anda dapat dengan mudah mengotomatiskan berbagai penerapan basis data dan melakukan tugas administrasi sederhana. Kami akan menunjukkan cara menginstal dan mengkonfigurasi perangkat lunak secara otomatis seperti server MySQL di lingkungan yang dapat direproduksi. Di blog ini, kami akan fokus pada replikasi MariaDB tetapi jika Anda tertarik dengan tugas lain, silakan periksa blog kami yang lain di mana kami menulis lebih banyak tentang Ansible.

Vagrant, Virtualbox, dan Ansible

Ansible dapat membantu menyebarkan MySQL Cluster di cloud atau lokal. Untuk tujuan blog ini, kita akan menggunakan pengaturan populer untuk menjalankan berbagai pengujian pada mesin desktop dengan Vagrant dan Virtualbox.

Vagrant adalah sistem yang memungkinkan Anda dengan mudah membuat dan memindahkan lingkungan pengembangan dari satu mesin ke mesin lainnya. Cukup tentukan jenis VM yang Anda inginkan dalam file bernama Vagrantfile dan kemudian jalankan dengan satu perintah. Ini terintegrasi dengan baik dengan penyedia mesin virtual seperti VirtualBox, VMware dan AWS dan yang penting untuk tugas kami, ia memiliki dukungan besar dari Ansible.

Vagrantfile kami menyebarkan 2 instance pada platform VirtualBox, satu untuk node master dan node slave kedua. Kemudian kita akan menggunakan Ansible untuk menjalankan instalasi paket yang diperlukan dan menjalankan konfigurasi master/slave. Di bawah ini adalah daftar tugas yang akan kita lakukan.

  • Instal Vagrant dan Virtualbox
  • Konfigurasikan file gelandangan dan playbook yang memungkinkan
  • Luncurkan instance
  • Unduh kotak Vagrant dan Vagrantfile terkait (ini dilakukan secara otomatis)
  • Jalankan playbook Ansible (ini akan dilakukan secara otomatis)
  • Tambahkan cluster ke ClusterControl untuk tugas pemantauan dan pengelolaan (seperti pencadangan, keamanan, pengelolaan pengguna, pengelolaan kinerja, dan banyak lainnya).

Penginstalan Vagrant, Virtualbox, dan Ansible di Ubuntu

Instal paket

sudo apt-get install ansible vagrant virtualbox

Buat file konfigurasi untuk Vagrant dan Ansible

$ mkdir mariadbtest
$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "maria.yml"
    ansible.sudo = true
  end
  config.vm.define "master" do |master|
    master.vm.hostname = "master"
    master.vm.network "forwarded_port", guest: 3306, host: 3336
    master.vm.network "private_network", ip: "192.168.10.2"        
  end
  config.vm.define "slave" do |slave|
    slave.vm.hostname = "slave"
    slave.vm.network "forwarded_port", guest: 3306, host: 3337
    slave.vm.network "private_network", ip: "192.168.10.3"                
  end
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 2
  end
end

File gelandangan di atas akan membuat dua mesin dengan konfigurasi berikut:

  • Master:2 CPU, RAM 1GB, IP Pribadi:192.168.10.2 Penerusan port:3336
  • Budak:2CPU, RAM 1GB, IP Pribadi:192.168.10.3, Penerusan port:3337

Struktur Playbook

Pada langkah ini, kita akan mendefinisikan buku pedoman Ansible. Ansible menggunakan YAML sebagai bahasa markup yang mudah untuk mendefinisikan instruksi. Kami membuat "maria.yml" berikut berdasarkan file Ansible yang dikirimkan oleh Mariadb.

$vi maria.yml
- hosts: master:slave
  user: vagrant
  tasks:
  - name: Install MariaDB repository
    apt_repository: repo='deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.3/ubuntu trusty main' state=present
  - name: Add repository key to the system
    apt_key: keyserver=keyserver.ubuntu.com id=0xcbcb082a1bb943db
  - name: Install MariaDB Server
    apt: name=mariadb-server state=latest update_cache=yes
  - name: Install python module
    apt: name=python-mysqldb state=installed
  - name: Create replication account
    mysql_user: name=repl host="%" password=s3cr3tPaSSwordR priv=*.*:"REPLICATION SLAVE" state=present
  - name: Create readwrite user
    mysql_user: name=rwuser host="%" password=s3cr3tPaSSwordR priv=*.*:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP state=present
  - name: Modify configuration file to listen on all interfaces
    lineinfile: dest=/etc/mysql/my.cnf regexp="^bind-address" line="bind-address=0.0.0.0"
- hosts: master
  user: vagrant
  tasks:
  - name: Modify configuration file to setup server ID
    lineinfile: dest=/etc/mysql/my.cnf regexp="^#server-id" line="server-id=1"
  - name: Restart mysql service
    service: name=mysql state=restarted
  - name: Reset master binlog
    command: /usr/bin/mysql -u root -e "RESET MASTER"
- hosts: slave
  user: vagrant
  tasks:
  - name: Modify configuration file to setup server ID
    lineinfile: dest=/etc/mysql/my.cnf regexp="^#server-id" line="server-id=2"
  - name: Setup replication
    command: /usr/bin/mysql -uroot -e "CHANGE MASTER TO master_host='192.168.10.2', master_user='repl', master_password='s3cr3tPaSSwordR', master_use_gtid=current_pos"
  - name: Restart mysql service
    service: name=mysql state=restarted
ClusterControlSingle Console untuk Seluruh Infrastruktur Basis Data AndaCari tahu apa lagi yang baru di ClusterControlInstall ClusterControl GRATIS

Sekarang saatnya untuk contoh. Vagrant up akan memicu pemasangan playbook.

$ vagrant up
DEPRECATION: The 'sudo' option for the Ansible provisioner is deprecated.
Please use the 'become' option instead.
The 'sudo' option will be removed in a future release of Vagrant.

==> vagrant: A new version of Vagrant is available: 2.2.4 (installed version: 2.2.3)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

Bringing machine 'master' up with 'virtualbox' provider...
Bringing machine 'slave' up with 'virtualbox' provider...
==> master: Box 'ubuntu/trusty64' could not be found. Attempting to find and install...
    master: Box Provider: virtualbox
    master: Box Version: >= 0
==> master: Loading metadata for box 'ubuntu/trusty64'
    master: URL: https://vagrantcloud.com/ubuntu/trusty64
==> master: Adding box 'ubuntu/trusty64' (v20190429.0.1) for provider: virtualbox
    master: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20190429.0.1/providers/virtualbox.box
    master: Download redirected to host: cloud-images.ubuntu.com
    master: Progress: 7% (Rate: 551k/s, Estimated time remaining: 0:14:31)

Bringing machine 'master' up with 'virtualbox' provider...
Bringing machine 'slave' up with 'virtualbox' provider...

Jika Anda belum mengunduh image ubuntu dari Virtualbox, gelandangan akan mengunduhnya secara otomatis seperti contoh di atas.

PLAY [master:slave] ************************************************************

TASK [Gathering Facts] *********************************************************
ok: [slave]

TASK [Install MariaDB repository] **********************************************
changed: [slave]

TASK [Add repository key to the system] ****************************************
changed: [slave]

TASK [Install MariaDB Server] **************************************************

Setelah instalasi playbook berhasil, Anda akan melihat output berikut dan Anda seharusnya dapat login ke database dengan kredensial yang telah ditentukan sebelumnya (lihat playbook).

PLAY RECAP ********************************************************************
master                     : ok=12   changed=10   unreachable=0    failed=0 

Langkah selanjutnya adalah mengimpor konfigurasi master/slave Anda ke ClusterControl. Cara termudah dan paling nyaman untuk menginstal ClusterControl adalah dengan menggunakan skrip instalasi yang disediakan oleh Somenines. Cukup unduh skrip dan jalankan sebagai pengguna root atau pengguna dengan izin root sudo.

$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ ./install-cc # as root or sudo user

Jika Anda ingin menambahkan instalasi ClusterControl ke buku pedoman Anda, Anda dapat menggunakan petunjuk berikut.

Langkah selanjutnya adalah membuat kunci SSH yang akan kita gunakan untuk mengatur SSH tanpa kata sandi nanti. Jika Anda memiliki pasangan kunci yang ingin Anda gunakan, Anda dapat melewati pembuatan yang baru.

ClusterControl:Impor cluster yang ada

Setelah instalasi berhasil, Anda akhirnya dapat mengimpor cluster pengujian yang baru dibuat ke ClusterControl.

Kami harap posting blog ini memberi Anda wawasan tentang dasar instalasi dan pengaturan replikasi master/slave Ansible MariaDB. Silakan periksa blog kami yang lain tempat kami menyajikan Chef, Puppet, Docker untuk database MariaDB dan penerapan cluster database lainnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 6 Cara Menambahkan Bulan ke Tanggal di MariaDB

  2. MariaDB JSON_QUOTE() Dijelaskan

  3. Konektor MariaDB/Python Beta Sekarang Tersedia

  4. Cara Mengatur Zona Waktu Bernama di MariaDB

  5. 3 Cara Memisahkan Tahun, Bulan, dan Hari dari Tanggal di MariaDB