sql >> Databáze >  >> RDS >> MariaDB

Jak nastavit replikaci MariaDB 10.3 pomocí Ansible a Vagrant

Ruční nasazení je běžné, ale může být pomalé a monotónní, pokud jste někdy zkoušeli instalaci Oracle RAC s nastavením Data Guard na více než třech uzlech, víte, co tím myslím. V závislosti na počtu uzlů mohou být kroky nasazení časově náročné a pravděpodobně dojde k chybě. Samozřejmě existuje mnoho dobrých „návodů“, jak provést ruční nastavení databázového clusteru, nicméně s manuálním přístupem na stupnici je potřeba vyřešit mnoho dalších otázek.

Jsou ostatní instance v mém prostředí nastaveny stejným způsobem? Byl ten systém kontroly kvality nastaven stejně jako výroba? Je to, co jsme právě nasadili, připraveno k výrobě? Pro vyřešení všech těchto otázek se nasazení stále více automatizuje pomocí nástrojů pro správu konfigurace.

Související zdroje Automatizace databáze pomocí Puppet:Nasazení replikace MySQL a MariaDB Jak automatizovat nasazení MySQL Galera Cluster pomocí s9s CLI a Chef Jak automatizovat migraci ze samostatného MySQL do Galera Cluster pomocí Ansible ClusterControl pro MariaDB

Oblíbené nástroje pro správu konfigurace jako Puppet, Chef a Ansible jsou osvědčené technologie při zavádění různých IT služeb. Pomáhají eliminovat manuální práci, minimalizují riziko lidské chyby a umožňují rychlé nasazení. V dnešním blogu se podíváme na jeden z nich.

Ansible je open source nástroj pro správu systému pro centralizaci a automatizaci správy konfigurace. S Ansible můžete snadno automatizovat různá nasazení databází a provádět jednoduché administrativní úlohy. Předvedeme, jak automaticky instalovat a konfigurovat software, jako je server MySQL, v reprodukovatelných prostředích. V tomto blogu se zaměříme na replikaci MariaDB, ale pokud vás zajímají jiné úkoly, podívejte se na naše další blogy, kde píšeme více o Ansible.

Vagrant, Virtualbox a Ansible

Ansible může pomoci nasadit MySQL Cluster v cloudu nebo on-prem. Pro účely tohoto blogu budeme používat oblíbené nastavení pro spouštění různých testů na stolních počítačích s Vagrant a Virtualbox.

Vagrant je systém, který vám umožňuje snadno vytvářet a přesouvat vývojová prostředí z jednoho stroje na druhý. Jednoduše definujte, jaký typ virtuálního počítače chcete v souboru s názvem Vagrantfile, a poté je spusťte jediným příkazem. Dobře se integruje s poskytovateli virtuálních strojů, jako jsou VirtualBox, VMware a AWS, a co je pro náš úkol důležité, má velkou podporu od Ansible.

Náš Vagrantfile nasazuje 2 instance na platformě VirtualBox, jednu pro hlavní uzel a druhý podřízený uzel. Poté pomocí Ansible spustíme instalaci potřebných balíčků a provedeme konfiguraci master/slave. Níže je seznam úkolů, které budeme provádět.

  • Nainstalujte Vagrant a Virtualbox
  • Nakonfigurujte soubor vagrant a ansible playbook
  • Spusťte instance
  • Stáhněte si související Vagrant boxy a Vagrantfile (toto se děje automaticky)
  • Spustit Ansible playbook (toto bude provedeno automaticky)
  • Přidejte cluster do ClusterControl pro úlohu monitorování a správy (jako je zálohování, zabezpečení, správa uživatelů, správa výkonu a mnoho dalších).

Vagrant, Virtualbox a instalace Ansible na Ubuntu

Instalovat balíčky

sudo apt-get install ansible vagrant virtualbox

Vytvořte konfigurační soubory pro Vagrant a 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

Výše uvedený soubor vagrant vytvoří dva počítače s následující konfigurací:

  • Hlavní:2 CPU, 1 GB RAM, soukromá IP:192.168.10.2 Port forward:3336
  • Slave:2CPU, 1GB RAM, soukromá IP:192.168.10.3, Port forward:3337

Struktura příručky

V tomto kroku definujeme Ansible playbook. Ansible používá YAML jako jednoduchý značkovací jazyk k definování instrukcí. Vytvoříme následující „maria.yml“ na základě souboru Ansible dodaného 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 pro celou vaši databázovou infrastrukturu Zjistěte, co je ještě nového v ClusterControl Nainstalujte ClusterControl ZDARMA

Nyní je čas na příklady. Vagrant up spustí instalaci příručky.

$ 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...

Pokud již nemáte stažený obraz ubuntu z Virtualboxu, vagrant si jej stáhne automaticky jako ve výše uvedeném příkladu.

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] **************************************************

Po úspěšné instalaci playbooku uvidíte následující výstup a měli byste být schopni se přihlásit do databáze s předdefinovanými přihlašovacími údaji (viz playbook).

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

Dalším krokem je import vaší master/slave konfigurace do ClusterControl. Nejjednodušší a nejpohodlnější způsob instalace ClusterControl je použití instalačního skriptu poskytovaného společností Somenines. Jednoduše si stáhněte skript a spusťte jej jako uživatel root nebo uživatel s oprávněním sudo root.

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

Chcete-li do své příručky přidat instalaci ClusterControl, můžete použít následující pokyny.

Dalším krokem je vygenerování klíče SSH, který později použijeme k nastavení SSH bez hesla. Pokud máte pár klíčů, který byste chtěli použít, můžete přeskočit vytváření nového.

ClusterControl:Import existujícího clusteru

Po úspěšné instalaci můžete konečně importovat nově vytvořený testovací cluster do ClusterControl.

Doufáme, že vám tento blogový příspěvek poskytl vhled do základů instalace a nastavení replikace Ansible MariaDB master/slave. Podívejte se prosím na naše další blogy, kde představujeme Chef, Puppet, Docker pro databázi MariaDB a další nasazení databázového clusteru.


  1. Nastavte počáteční hodnotu pro sloupec s automatickým přírůstkem

  2. Sloučit překrývající se časové intervaly

  3. Jak vrátit výsledek SELECT uvnitř funkce v PostgreSQL?

  4. Oracle PL/SQL:jak získat trasování zásobníku, název balíčku a název procedury