MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как да настроите репликация на MariaDB 10.3 с помощта на Ansible и Vagrant

Ръчните разгръщания са често срещани, но могат да бъдат бавни и монотонни, ако някога сте опитвали инсталация на Oracle RAC с настройка на Data Guard на повече от три възела, знаете какво имам предвид. В зависимост от броя на възлите, стъпките за внедряване може да отнемат време и да са вероятни грешки. Разбира се, има много добри „насоки“ за това как да направите ръчна настройка на клъстер от база данни, но с ръчния подход в мащаб има много допълнителни въпроси, които трябва да се решат.

По същия начин ли са настроени другите екземпляри в моята среда? Тази система за QA беше ли създадена по същия начин като производството? Дали това, което току-що внедрихме, е готово за производство? За да се отговори на всички тези въпроси, внедряването все повече се автоматизира чрез инструменти за управление на конфигурацията.

Свързани ресурси Автоматизация на база данни с Puppet:Разгръщане на MySQL и MariaDB репликация Как да се автоматизира разполагането на MySQL Galera Cluster с помощта на s9s CLI и Chef Как да се автоматизира миграцията от самостоятелен MySQL към Galera Cluster с помощта на Ansible ClusterControl за MariaDB

Популярните инструменти за управление на конфигурацията като Puppet, Chef и Ansible са доказани технологии за внедряване на различни ИТ услуги. Те помагат за премахване на ръчната работа, минимизират риска от човешка грешка и правят възможно бързото внедряване. В днешния блог ще разгледаме един от тях.

Ansible е инструмент за управление на системата с отворен код за централизиране и автоматизиране на управлението на конфигурацията. С Ansible можете лесно да автоматизирате различни разгръщания на бази данни и да изпълнявате прости административни задачи. Ще покажем как автоматично да инсталирате и конфигурирате софтуер като MySQL сървър в възпроизводими среди. В този блог ще се съсредоточим върху репликацията на MariaDB, но ако се интересувате от други задачи, моля, проверете другите ни блогове, където пишем повече за Ansible.

Vagrant, Virtualbox и Ansible

Ansible може да помогне за разгръщането на MySQL Cluster в облака или локално. За целите на този блог ще използваме популярната настройка за провеждане на различни тестове на настолни машини с Vagrant и Virtualbox.

Vagrant е система, която ви позволява лесно да създавате и премествате среди за разработка от една машина на друга. Просто дефинирайте какъв тип VM искате във файл, наречен Vagrantfile, и след това ги задействайте с една команда. Той се интегрира добре с доставчици на виртуални машини като VirtualBox, VMware и AWS и което е важно за нашата задача, има страхотна поддръжка от Ansible.

Нашият Vagrantfile разполага с 2 екземпляра на платформата VirtualBox, един за главен възел и втори подчинен възел. След това ще използваме Ansible, за да стартираме инсталирането на необходимите пакети и да изпълним конфигурация на главен/подчинен. По-долу е списъкът със задачите, които ще изпълним.

  • Инсталирайте Vagrant и Virtualbox
  • Конфигуриране на vagrant file и ansible playbook
  • Стартирайте екземплярите
  • Изтеглете свързаните кутии Vagrant и Vagrantfile (това се прави автоматично)
  • Изпълнете Ansible playbook (това ще стане автоматично)
  • Добавете клъстера към ClusterControl за задачата за наблюдение и управление (като архивиране, сигурност, управление на потребителите, управление на производителността и много други).

Инсталация на Vagrant, Virtualbox и Ansible в Ubuntu

Инсталирайте пакети

sudo apt-get install ansible vagrant virtualbox

Създайте конфигурационни файлове за Vagrant и 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

Горният vagrant файл ще създаде две машини със следната конфигурация:

  • Master:2 CPU, 1GB RAM, Private IP:192.168.10.2 Port forward:3336
  • Slave:2CPU, 1GB RAM, Private IP:192.168.10.3, Port forward:3337

Структура на книгата

В тази стъпка ще дефинираме Ansible playbook. Ansible използва YAML като лесен език за маркиране за дефиниране на инструкции. Създаваме следния „maria.yml“ въз основа на файла Ansible, предоставен от 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
ClusterControlЕдинична конзола за цялата ви инфраструктура на базата данни Открийте какво още е новото в ClusterControlИнсталирайте ClusterControl БЕЗПЛАТНО

Сега е време за случаите. Vagrant up ще задейства инсталацията на 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...

Ако нямате вече изтеглено изображение на ubuntu от Virtualbox, vagrant ще го изтегли автоматично, както в горния пример.

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

След успешна инсталация на playbook ще видите следния изход и трябва да можете да влезете в базата данни с предварително дефинирани идентификационни данни (вижте playbook).

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

Следващата стъпка е да импортирате вашата главна/подчинена конфигурация в ClusterControl. Най-лесният и удобен начин за инсталиране на ClusterControl е да използвате инсталационния скрипт, предоставен от Severalnines. Просто изтеглете скрипта и го изпълнете като root потребител или потребител с sudo root разрешение.

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

Ако искате да добавите инсталация на ClusterControl към вашата книга, можете да използвате следните инструкции.

Следващата стъпка е да генерираме SSH ключ, който ще използваме, за да настроим SSH без парола по-късно. Ако имате двойка ключове, която искате да използвате, можете да пропуснете създаването на нов.

ClusterControl:Импортиране на съществуващ клъстер

След успешна инсталация най-накрая можете да импортирате новосъздадения си тестов клъстер в ClusterControl.

Надяваме се, че тази публикация в блога ви даде представа за основната инсталация и настройка на Ansible MariaDB главна/подчинена репликация. Моля, проверете другите ни блогове, където представяме Chef, Puppet, Docker за база данни MariaDB и други внедрявания на клъстери от бази данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Локали за дата и час, налични в MariaDB

  2. Как работи BIT_LENGTH() в MariaDB

  3. Как работи модулният оператор в MariaDB

  4. Мигриране от MySQL Enterprise към MariaDB 10.3

  5. Как да защитите вашата MySQL или MariaDB база данни от SQL инжекция:Част втора