Ansible部署MariaDB galera集群(多主)

这篇具有很好参考价值的文章主要介绍了Ansible部署MariaDB galera集群(多主)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ansible部署MariaDB galera集群(多主)

介绍

MariaDB Galera集群是一套基于同步复制的、多主的MySQL集群解决方案,使用节点没有单点故障,可用性高,读写性能高,可扩展性好。

主要特点

  • 同步复制,主备无延迟

  • 多主架构允许多个节点成为集群中的主节点,并且所有主节点都可以处理写入请求,这意味着你可以在任何节点上写入数据,而不仅仅是在单个节点上。

  • 无单点故障如果一个节点失败,其他节点仍然可以继续工作,并且当故障节点恢复时,它会自动重新加入集群

节点规划

IP 主机名 节点
192.168.200.10 ansible Ansible节点
192.168.200.20 node1 Node1节点
192.168.200.30 node2 Node2节点
192.168.200.40 node3 Node3节点

基础环境准备

(1)修改主机名

[root@localhost ~]# hostnamectl set-hostname ansible
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# hostnamectl set-hostname node3

(2)安装ansible

[root@ansible ~]# yum install -y epel-release
[root@ansible ~]# yum install -y ansible

(3)配置Ansible节点和远程主机的连接

[root@ansible ~]# ssh-keygen
[root@node1 ~]# ssh-keygen
[root@node2 ~]# ssh-keygen
[root@node3 ~]# ssh-keygen

(4)配置主机组

[root@ansible ~]# vim /etc/ansible/hosts
[node1]
192.168.200.20
[node2]
192.168.200.30
[node3]
192.168.200.40

(5)配置Yum文件

Mariadb10.3(10.3自带galera软件)

[root@ansible ~]# vim mariadb.repo
[mariadb]
name=MariaDB
baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

(6)配置server-node(1~3).conf文件,用于复制到远程节点

[root@ansible ~]# vim server-node1.cnf
[server]
[mysqld]
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.200.20,192.168.200.30,192.168.200.40"
binlog_format=row
default_storage_engine=InnoDB
wsrep_node_name=node1
[embedded]
[mariadb]
[mariadb-10.3]
[root@node1 ~]# cp server-node1.cnf server-node2.cnf 
[root@node1 ~]# cp server-node1.cnf server-node3.cnf 
[root@node1 ~]# sed -i 's/wsrep_node_name=node1/wsrep_node_name=node2/g' server-node2.cnf 
[root@node1 ~]# sed -i 's/wsrep_node_name=node1/wsrep_node_name=node3/g' server-node3.cnf 
配置文件server.conf参数详解
wsrep_on=ON    # 是否启用插件
wsrep_provider=/usr/lib64/galera/libgalera_smm.so  # 指定galera的库文件的地址
wsrep_cluster_address="gcomm://192.168.200.20,192.168.200.30,192.168.200.40" # 集群IP
binlog_format=row  # 二进制日志的格式为row
default_storage_engine=InnoDB # 默认的存储引擎为InnoDB
wsrep_node_name=node3 # 指定了当前节点名称

(7)测试主机连通性

[root@ansible ~]# ansible all -m ping
192.168.200.20 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.200.30 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.200.40 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

编写剧本文件

[root@ansible ~]# vim install_galera_cluster.yaml
- hosts: all
  remote_user: root
  tasks:
  - name: stop firewalld setenforce 0
    shell: systemctl stop firewalld && setenforce 0
  - name: copy hosts
    copy: src=/etc/hosts dest=/etc/hosts
  - name: copy repo
    copy: src=mariadb.repo dest=/etc/yum.repos.d/
  - name: install mariadb
    yum: name=mariadb-server state=installed
  - name: start mariadb
    service: name=mariadb state=started enabled=yes
  - name: init_mysql
    shell: mysqladmin -uroot password 000000
  - name: stop mariadb
    service: name=mariadb state=stopped
    
- hosts: node1
  remote_user: root
  tasks:
  - name: copy server-node1.cnf
    copy: src=server-node1.cnf dest=/etc/my.cnf.d/server.cnf
  - name: chushihua
    shell: galera_new_cluster
 
- hosts: node2
  remote_user: root
  tasks:
  - name: copy server-node2.cnf
    copy: src=server-node2.cnf dest=/etc/my.cnf.d/server.cnf

- hosts: node3
  remote_user: root
  tasks:
  - name: copy server-node3.cnf
    copy: src=server-node3.cnf dest=/etc/my.cnf.d/server.cnf

- hosts: node2,node3
  remote_user: root
  tasks:
  - name: start mariadb
    shell: systemctl start mariadb

执行剧本文件

[root@ansible ~]# ansible-playbook install_galera_cluster.yaml 

PLAY [all] ***********************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************
ok: [192.168.200.20]
ok: [192.168.200.30]
ok: [192.168.200.40]

TASK [stop firewalld setenforce 0] ***********************************************************************************************************************
changed: [192.168.200.20]
changed: [192.168.200.30]
changed: [192.168.200.40]

TASK [copy hosts] ****************************************************************************************************************************************
ok: [192.168.200.40]
ok: [192.168.200.30]
ok: [192.168.200.20]

TASK [copy repo] *****************************************************************************************************************************************
changed: [192.168.200.20]
changed: [192.168.200.30]
changed: [192.168.200.40]

TASK [install mariadb] ***********************************************************************************************************************************
changed: [192.168.200.20]
changed: [192.168.200.30]
changed: [192.168.200.40]

TASK [start mariadb] *************************************************************************************************************************************
changed: [192.168.200.40]
changed: [192.168.200.20]
changed: [192.168.200.30]

TASK [init_mysql] ****************************************************************************************************************************************
changed: [192.168.200.20]
changed: [192.168.200.40]
changed: [192.168.200.30]

TASK [stop mariadb] **************************************************************************************************************************************
changed: [192.168.200.40]
changed: [192.168.200.20]
changed: [192.168.200.30]

PLAY [node1] *********************************************************************************************************************************************

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

TASK [copy server-node1.cnf] *****************************************************************************************************************************
changed: [192.168.200.20]

TASK [chushihua] *****************************************************************************************************************************************
changed: [192.168.200.20]

PLAY [node2] *********************************************************************************************************************************************

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

TASK [copy server-node2.cnf] *****************************************************************************************************************************
changed: [192.168.200.30]

PLAY [node3] *********************************************************************************************************************************************

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

TASK [copy server-node3.cnf] *****************************************************************************************************************************
changed: [192.168.200.40]

PLAY [node2,node3] ***************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************
ok: [192.168.200.30]
ok: [192.168.200.40]

TASK [start mariadb] *************************************************************************************************************************************
changed: [192.168.200.40]
changed: [192.168.200.30]

PLAY RECAP ***********************************************************************************************************************************************
192.168.200.20             : ok=11   changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.200.30             : ok=12   changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.200.40             : ok=12   changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

查看集群状态

(node1,node2,node3都可以查看)

[root@node1 ~]#  mysql -uroot -p000000

MariaDB [(none)]> show status like '%wsrep%';
+-------------------------------+-------------------------------------------------------------+
| Variable_name                 | Value                                                       |
+-------------------------------+-------------------------------------------------------------+
| wsrep_applier_thread_count    | 1                                                           |
| wsrep_apply_oooe              | 0.000000                                                    |
| wsrep_apply_oool              | 0.000000                                                    |
| wsrep_apply_waits             | 0                                                           |
| wsrep_apply_window            | 0.000000                                                    |
| wsrep_causal_reads            | 0                                                           |
| wsrep_cert_deps_distance      | 0.000000                                                    |
| wsrep_cert_index_size         | 0                                                           |
| wsrep_cert_interval           | 0.000000                                                    |
| wsrep_cluster_conf_id         | 2                                                           |
| wsrep_cluster_size            | 3                                                           |
| wsrep_cluster_state_uuid      | 08f31069-2ec0-11ee-b090-fff9379da121                        |
| wsrep_cluster_status          | Primary                                                     |
| wsrep_cluster_weight          | 3                                                           |
| wsrep_commit_oooe             | 0.000000                                                    |
| wsrep_commit_oool             | 0.000000                                                    |
| wsrep_commit_window           | 0.000000                                                    |
| wsrep_connected               | ON                                                          |
| wsrep_desync_count            | 0                                                           |
| wsrep_evs_delayed             |                                                             |
| wsrep_evs_evict_list          |                                                             |
| wsrep_evs_repl_latency        | 0/0/0/0/0                                                   |
| wsrep_evs_state               | OPERATIONAL                                                 |
| wsrep_flow_control_active     | false                                                       |
| wsrep_flow_control_paused     | 0.000000                                                    |
| wsrep_flow_control_paused_ns  | 0                                                           |
| wsrep_flow_control_recv       | 0                                                           |
| wsrep_flow_control_requested  | false                                                       |
| wsrep_flow_control_sent       | 0                                                           |
| wsrep_gcomm_uuid              | 08f1dd06-2ec0-11ee-829f-06675c76d425                        |
| wsrep_gmcast_segment          | 0                                                           |
| wsrep_incoming_addresses      | 192.168.200.20:3306,192.168.200.40:3306,192.168.200.30:3306 |
| wsrep_last_committed          | 0                                                           |
| wsrep_local_bf_aborts         | 0                                                           |
| wsrep_local_cached_downto     | 18446744073709551615                                        |
| wsrep_local_cert_failures     | 0                                                           |
| wsrep_local_commits           | 0                                                           |
| wsrep_local_index             | 0                                                           |
| wsrep_local_recv_queue        | 0                                                           |
| wsrep_local_recv_queue_avg    | 0.111111                                                    |
| wsrep_local_recv_queue_max    | 2                                                           |
| wsrep_local_recv_queue_min    | 0                                                           |
| wsrep_local_replays           | 0                                                           |
| wsrep_local_send_queue        | 0                                                           |
| wsrep_local_send_queue_avg    | 0.000000                                                    |
| wsrep_local_send_queue_max    | 1                                                           |
| wsrep_local_send_queue_min    | 0                                                           |
| wsrep_local_state             | 4                                                           |
| wsrep_local_state_comment     | Synced                                                      |
| wsrep_local_state_uuid        | 08f31069-2ec0-11ee-b090-fff9379da121                        |
| wsrep_open_connections        | 0                                                           |
| wsrep_open_transactions       | 0                                                           |
| wsrep_protocol_version        | 9                                                           |
| wsrep_provider_name           | Galera                                                      |
| wsrep_provider_vendor         | Codership Oy <info@codership.com>                           |
| wsrep_provider_version        | 25.3.37(rd0a7bd7)                                           |
| wsrep_ready                   | ON                                                          |
| wsrep_received                | 9                                                           |
| wsrep_received_bytes          | 552                                                         |
| wsrep_repl_data_bytes         | 0                                                           |
| wsrep_repl_keys               | 0                                                           |
| wsrep_repl_keys_bytes         | 0                                                           |
| wsrep_repl_other_bytes        | 0                                                           |
| wsrep_replicated              | 0                                                           |
| wsrep_replicated_bytes        | 0                                                           |
| wsrep_rollbacker_thread_count | 1                                                           |
| wsrep_thread_count            | 2                                                           |
+-------------------------------+-------------------------------------------------------------+

  • wsrep_cluster_size 3 :集群成员有3个

  • wsrep_cluster_status Primary: 主服务器

  • wsrep_connected ON:是否处于连接中

  • wsrep_incoming_addresses 192.168.200.20:3306,192.168.200.40:3306,192.168.200.30:3306 :连接中的主机

  • wsrep_ready ON :插件是否应用中

测试

使用node1写入数据

[root@node1 ~]#  mysql -uroot -p000000
MariaDB [(none)]> create database node1;

MariaDB [(none)]> use node1;

MariaDB [node1]> CREATE TABLE employees (
    ->   id INT PRIMARY KEY AUTO_INCREMENT,
    ->   name VARCHAR(50),
    ->   age INT,
    ->   department VARCHAR(50)
    -> );

MariaDB [node1]> INSERT INTO employees (name, age, department) VALUES
    ->   ('John Doe', 30, 'Sales'),
    ->   ('Jane Smith', 25, 'Marketing'),
    ->   ('David Johnson', 35, 'HR');
    

node2查看是否同步

[root@node2 ~]# mysql -uroot -p000000
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| node1              |
| performance_schema |
| test               |
+--------------------+
MariaDB [node1]> select * from employees;
+----+---------------+------+------------+
| id | name          | age  | department |
+----+---------------+------+------------+
|  1 | John Doe      |   30 | Sales      |
|  4 | Jane Smith    |   25 | Marketing  |
|  7 | David Johnson |   35 | HR         |
+----+---------------+------+------------+

如果此时node3宕机了

[root@node3 ~]# systemctl stop mariadb

查看集群信息

MariaDB [node1]> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+
# 立马剔除宕机的主机

如果给他恢复?数据是否还在文章来源地址https://www.toymoban.com/news/detail-621691.html

MariaDB [node1]> select * from employees;
+----+---------------+------+------------+
| id | name          | age  | department |
+----+---------------+------+------------+
|  1 | John Doe      |   30 | Sales      |
|  4 | Jane Smith    |   25 | Marketing  |
|  7 | David Johnson |   35 | HR         |
+----+---------------+------+------------+
# 数据还在

到了这里,关于Ansible部署MariaDB galera集群(多主)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ansible 服务部署-部署 ELK 集群服务

    引用博文:https://blog.csdn.net/qq_22648091/article/details/114140816 侵权联删 ​ 创建三台 云主机分别命名为 elk01、elk02 和 elk03,Ansible 主机可以使用上一题的环境。要求 Ansible 节点编写剧本,执 行 Ansible 剧本可以在这三个节点部署 ELK 集群服务(在/root 目录下创建 install_elk 目录作 为

    2023年04月08日
    浏览(47)
  • ansible部署zookeeper和kafka集群

    节点 IP ansible 192.168.200.75 node1 192.168.200.76 node2 192.168.200.77 node3 192.168.200.78 基础环境配置就不过多赘述了 主机名、主机解析、免密访问、ansible下载、配置ansible主机、防火墙、selinux、配置centos2009镜像、配置ftp远程。均已配置 在ansible节点的/root目录下创建example目录,作为Ansib

    2024年02月09日
    浏览(46)
  • 【Ambari】Ansible自动化部署大数据集群

    目录 一.版本说明和介绍信息 1.1 大数据组件版本 1.2 Apache Components 1.3 Databases支持版本 二.安装包上传和说明 三.服务器基础环境配置 3.1global配置修改 3.2主机名映射配置 3.3免密用户名密码配置 3.4 ansible安装 四. 安装Ambari-server 4.1 安装ambari-server 4.2 检查REPO源 五、HDP 安装

    2024年04月15日
    浏览(65)
  • Ansible Playbook快速部署一主多从MySQL集群

    部署目标: 1、快速部署一套一主两从的mysql集群 2、部署过程中支持交互式定义安装目录及监听端口号 部署清单目录结构: 主机清单: 定义了需要部署mysql的主机组、IP及设定mysql主机角色 声明变量: 声明变量的好处在于用户可以按需改这一个文件,而不需要挨个儿修改部

    2024年02月13日
    浏览(36)
  • 基于ansible的自动化二进制模式部署高可用Kubernetes集群

    【说明】 本文档详细描述了在openEuler 22.03 LTS上通过ansible以二进制模式自动化部署高可用Kubernetes集群(适用k8s v1.26版本)。 本文档参考了小陈运维的ansible剧本,并进行了适当改造,使之适用于openEuler 22.03 LTS,并改用nginx实现高可用;仅采用containerd作为容器运行时;采用ca

    2024年02月08日
    浏览(95)
  • a24.ansible 生产实战案例 -- 基于kubeadm安装kubernetes v1.20 -- 集群部署(一)

    源码下载地址:https://github.com/raymond999999/kubernetes-ansible 角色 机器名 机器配置 ip地址 安装软件 ansible ansible-server.example.local 2C2G 172.31.3.100 ansible master1 k8s-master01.example.local 2C4G 172.31.3.101 chrony-client、docker、kubeadm 、kubelet、kubectl master2 k8s-master02.example.local 2C4G 172.31.3.102 chrony-clien

    2024年02月11日
    浏览(53)
  • 集群基础4——haproxy负载均衡mariadb

    使用haproxy对mysql多机单节点进行负载均衡。 主机IP 角色 安装服务 192.168.161.131 后端服务器1 mariadb,3306端口 192.168.161.132 后端服务器2 mariadb,3306端口 192.168.161.133 调度服务器 haproxy,mariadb客户端 在后端服务器1、2上操作。 1.安装数据库,并启动。 2.数据库账户授权。 3.查看两台

    2024年02月16日
    浏览(46)
  • docker部署的mariadb忘记密码

    docker 里的 mariadb 数据库密码忘了,如果以前我会选择直接干掉重装,但是数据怎么办? 1 数据量小 就跳过密码登录进去备份出来 2 想办法改掉密码 我直接选择后者,跳过密码,mariadb10.4以后不能直接改密码了, 尝试了修改 my.cnf 跳过密码 和修改 docker.cnf 跳过密码skip-grant-t

    2024年02月06日
    浏览(81)
  • CentOS 7 部署 MariaDB 的 2 种方法

    有两种安装 MariaDB 服务器的方法。您可以安装 CentOS 7 存储库中可用的默认版本,也可以通过手动添加 MariaDB 存储库来安装最新版本。 如果安装过MariaDB或MySQL,使用以下命令彻底删除它们: CentOS 存储库中 MariaDB 的默认版本是 MariaDB 5.5。虽然不是最新版本,但它非常稳定,强烈

    2024年04月11日
    浏览(30)
  • Ansible环境搭建,CentOS 系列操作系统搭建Ansible集群环境

    Ansible是一种自动化工具,基于Python写的,原理什么的就不过多再说了,详情参考:https://www.itwk.cc/post/403.html https://blog.csdn.net/qq_34185638/article/details/131079320?spm=1001.2014.3001.5502 HOSTNAME IP OS master.example.com 10.5.5.132 CentOS Stream 8 Mini Install node1.example.com 10.5.5.133 CentOS Stream 8 Mini Install n

    2024年02月14日
    浏览(97)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包