Ansible-角色部署MySQL主从

Ansible-角色部署MySQL主从

配置主机

[root@server ansible]# vim hosts
[mysql]
node1
node2
[my_master]
node1
[my_slave]
node2

创建角色

[root@server ansible]# ansible-galaxy init roles/mysqld
- Role roles/mysqld was created successfully

调用角色配置主从

[root@server ansible]# vim roles/mysqld/tasks/main.yml
[root@server ansible]# cat roles/mysqld/tasks/main.yml
---
# tasks file for roles/mysqld
- name: set firewalld
  service:
    name: firewalld
    state: stopped
    enabled: no
- name: stop selinux
  lineinfile:
    path: /etc/sysconfig/selinux
    regexp: '^SELINUX='
    line: 'SELINUX=disabled'
- name: setenforce 0
  shell: setenforce 0
- name: install mariadb
  yum:
    name:
      - mariadb-server
      - mariadb
    state: present
- name: copy moban1
  template:
    src: my_master.cnf.j2
    dest: /etc/my.cnf
  when: inventory_hostname in  {{ groups.my_master }}
- name: copy moban2
  template:
    src: my_slave.cnf.j2
    dest: /etc/my.cnf
  when: inventory_hostname in  {{ groups.my_slave }}
- name: restare mariadb
  service:
    name: mariadb
    state: started
    enabled: yes
- name: quanxian
  shell: mysql -uroot -e "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '123456';"
- name: quanxian2
  shell: mysql -uroot -e "GRANT REPLICATION SLAVE ON *.* TO 'zhan'@'slave' IDENTIFIED BY '123456';"
  when: inventory_hostname in  {{ groups.my_master }}
- name: quanxian3
  shell: mysql -uroot -e "CHANGE MASTER TO MASTER_HOST='192.168.193.130', MASTER_USER='zhan', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;"
  when: inventory_hostname in  {{ groups.my_slave }}
- name: start
  shell: mysql -uroot -e "start slave;"
  when: inventory_hostname in  {{ groups.my_slave }}

模板文件

[root@server ansible]# vim roles/mysqld/templates/my_master.cnf.j2
[root@server ansible]# cat roles/mysqld/templates/my_master.cnf.j2
[mysqld]
log_bin=mysql-bin
server_id=20
[root@server ansible]# vim roles/mysqld/templates/my_slave.cnf.j2
[root@server ansible]# cat roles/mysqld/templates/my_slave.cnf.j2
[mysqld]
log_bin=mysql-bin
server_id=30

调用mysqld角色

[root@server ansible]# vim mysql.yml
[root@server ansible]# cat mysql.yml
---
- name: use mysqld
  hosts: mysql
  roles:
    - mysqld
[root@server ansible]# ansible-playbook mysql.yml

PLAY [use mysqld] *************************************************************************************

TASK [Gathering Facts] ********************************************************************************
ok: [node1]
ok: [node2]

TASK [mysqld : set firewalld] *************************************************************************
changed: [node1]
changed: [node2]

TASK [mysqld : stop selinux] **************************************************************************
changed: [node1]
changed: [node2]

TASK [mysqld : setenforce 0] **************************************************************************
changed: [node2]
changed: [node1]

TASK [mysqld : install mariadb] ***********************************************************************
changed: [node2]
changed: [node1]

TASK [mysqld : copy moban1] ***************************************************************************
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_master }}
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_master }}
skipping: [node2]
changed: [node1]

TASK [mysqld : copy moban2] ***************************************************************************
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_slave }}
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_slave }}
skipping: [node2]
changed: [node1]

TASK [mysqld : restare mariadb] ***********************************************************************
changed: [node1]
changed: [node2]

TASK [mysqld : quanxian] ******************************************************************************
changed: [node2]
changed: [node1]

TASK [mysqld : quanxian2] *****************************************************************************
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_master }}
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_master }}
skipping: [node2]
changed: [node1]

TASK [mysqld : quanxian3] *****************************************************************************
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_slave }}
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_slave }}
skipping: [node2]
changed: [node1]

TASK [mysqld : start] *********************************************************************************
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_slave }}
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {%
%}. Found: inventory_hostname in  {{ groups.my_slave }}
skipping: [node2]
changed: [node1]

PLAY RECAP ********************************************************************************************
node1                      : ok=12   changed=11   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
node2                      : ok=7    changed=6    unreachable=0    failed=0    skipped=5    rescued=0    ignored=0


查看

[root@node1 ~]# cat /etc/my.cnf

[mysqld]
log_bin=mysql-bin
server_id=20
[root@node2 ~]# cat /etc/my.cnf
[mysqld]
log_bin=mysql-bin
server_id=30

[root@node2 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.28-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show slave status \G
*************************** 1. row ***************************
                Slave_IO_State: Connecting to master
                   Master_Host: 192.168.193.130
                   Master_User: zhan
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000001
           Read_Master_Log_Pos: 154
                Relay_Log_File: node2-relay-bin.000001
                 Relay_Log_Pos: 4
         Relay_Master_Log_File: mysql-bin.000001
              Slave_IO_Running: Connecting
             Slave_SQL_Running: Yes
               Replicate_Do_DB:
           Replicate_Ignore_DB:
            Replicate_Do_Table:
        Replicate_Ignore_Table:
       Replicate_Wild_Do_Table:
   Replicate_Wild_Ignore_Table:
                    Last_Errno: 0
                    Last_Error:
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 154
               Relay_Log_Space: 256
               Until_Condition: None

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值