美文网首页运维框架架构
Ansible部署系列续:(三)安装MySQL-pxc

Ansible部署系列续:(三)安装MySQL-pxc

作者: Anson_1f2a | 来源:发表于2021-06-15 02:21 被阅读0次

    3. 安装MySQL-pxc

    3.1. 说明

    之前为了搭建高可用的MySQL的集群,所以安装MySQL-pxc,具体介绍可以看https://www.percona.com/software/mysql-database/percona-xtradb-cluster
    不知道为什么服务器下载都巨慢,所以我都使用离线安装。下载的是主要的包,还有其他一堆依赖需要服务器自己去下载。

    ansiblehosts文件

    [mysqlservers]
    sz-1 node_name=pxc1
    sz-2 node_name=pxc2
    

    3.2. yml脚本

    ---
    - hosts: mysqlservers
      remote_user: root
      vars_files:
        - ../vars.yml
    
      tasks:
      - name: Ensure SELinux is set to enforcing mode
        lineinfile:
          path: /etc/selinux/config
          regexp: '^SELINUX='
          line: SELINUX=permissive
      - name: Copy rpm
        copy:
          src: "{{ PLAYBOOK_DIR }}/files/mysql"
          dest: /mnt
          owner: root
          group: root
          mode: 0755
      - name: install prepare
        yum:
          name: "/mnt/mysql/percona-release-latest.noarch.rpm"
          state: present
    
      - name: install pxc
        shell: "yum localinstall -y /mnt/mysql/Percona/*"
    
      - name: firewarld add 3306
        firewalld:
          port: 3306/tcp
          permanent: true
          immediate: true
          zone: public
          state: enabled
      - name: firewarld add 4444
        firewalld:
          port: 4444/tcp
          permanent: true
          immediate: true
          zone: public
          state: enabled
      - name: firewarld add 4567
        firewalld:
          port: 4567/tcp
          permanent: true
          immediate: true
          zone: public
          state: enabled
      - name: firewarld add 4568
        firewalld:
          port: 4568/tcp
          permanent: true
          immediate: true
          zone: public
          state: enabled
          
      - name: Copy config
        template:
          src: "{{ PLAYBOOK_DIR }}/mysql-pxc/templates/wsrep.cnf.j2"
          dest: /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
          owner: root
          group: root
          mode: 0755
    
      - name: set SELinux to permissive
        shell: setenforce 0
        
      - name: start mysql@bootstrap
        service:
          name: mysql@bootstrap
          state: started
        when: inventory_hostname == groups['mysqlservers'][0]
    

    因为是搭建集群,需要先启动第一个节点,进行配置完后再启动其他节点,各节点会自动建立链接。

    3.3. 模板文件

    因为搭建的是集群环境,因此都需要配置节点

    3.3.1 wsrep.cnf.j2

    [mysqld]
    # Path to Galera library
    wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
    
    # Cluster connection URL contains IPs of nodes
    #If no IP is found, this implies that a new cluster needs to be created,
    #in order to do that you need to bootstrap this node
    wsrep_cluster_address=gcomm://{% set comma = joiner(",") %}
    {% for item in groups['mysqlservers'] -%}
        {{ comma() }}{{ hostvars[item].inventory_hostname }}
    {%- endfor %}
    
    # In order for Galera to work correctly binlog format should be ROW
    binlog_format=ROW
    
    # MyISAM storage engine has only experimental support
    default_storage_engine=InnoDB
    
    # Slave thread to use
    wsrep_slave_threads=8
    
    wsrep_log_conflicts
    
    # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
    innodb_autoinc_lock_mode=2
    
    # Node IP address
    wsrep_node_address={{ ansible_default_ipv4.address }}
    # Cluster name
    wsrep_cluster_name=newtranx-pxc-cluster
    
    #If wsrep_node_name is not specified,  then system hostname will be used
    wsrep_node_name={{ node_name }}
    
    #pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
    pxc_strict_mode=ENFORCING
    
    # SST method
    wsrep_sst_method=xtrabackup-v2
    
    #Authentication for SST method
    wsrep_sst_auth=sstuser:passw0rd
    

    3.4. 运行ansible-playbook

    ansible-playbook -i /etc/ansible/hosts mysql/main.yml
    

    3.5. 基本配置

    修改密码、创建远程用户、修改权限,这里不做赘述,参考之前写的《Ansible部署系列:(六)安装MySQL》

    3.6. 启动其他节点

    ---
    - hosts: mysqlservers
      remote_user: root
      vars_files:
        - ../vars.yml
    
      tasks:
        - name: set SELinux to permissive
          shell: setenforce 0
      
        - name: start mysql
          service:
            name: mysqld
            state: started
          when: inventory_hostname != groups['mysqlservers'][0]
    

    3.7. 查看各节点状态

    show status like 'wsrep%';
    

    相关文章

      网友评论

        本文标题:Ansible部署系列续:(三)安装MySQL-pxc

        本文链接:https://www.haomeiwen.com/subject/zjfceltx.html