mysql一主两从

本文详细介绍了如何在Linux环境下规划并部署MySQL一主两从集群,包括服务器配置、使用Ansible进行自动化部署、检查集群状态和数据同步。同时展示了如何在每个步骤中使用Galera插件来实现高可用性和数据一致性。
摘要由CSDN通过智能技术生成

mysql一主两从部署

服务器规划

ip主机名规格
11.0.1.52controller1c4g50g
11.0.1.46node11c4g50g
11.0.1.47node21c4g50g
11.0.1.48node31c4g50g

linux 部署

三个节点操作 前提要关闭防火墙和selinux

# 配置hosts
11.0.1.46 node1
11.0.1.47 node2
11.0.1.48 node3
# 解压 mariadb-repo.tar.gz
[root@node1 ~] tar xvf mariadb-repo.tar.gz
# 配置 mariadb.repo
[root@node1 ~] cat > /etc/etc/yum.repos.d/mariadb.repo < eof
[centos]
name = centos
baseurl = http://11.0.1.1/centos/
gpgcheck=0
enabled=1
[mariadb]
name = MariaDB
baseurl = file:///root/mariadb-repo
gpgcheck=0
enabled=1
eof
# 清凉缓存 
[root@node1 ~] yum clean all && yum makecache
# 下载 mariadb-server,galera
[root@node1 ~] yum install -y mariadb-server galera
# 配置 mariadb 开机自启
[root@node1 ~] systemctl enable mariadb --now
# 关闭mariadb 
[root@node1 ~]systemctl stop mariadb
# 配置server.cnf
[root@node1 ~] cat > /etc/my.cnf.d/server.cnf <eof
[server]
[mysqld]
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://node1,node2,node3
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
[embedded]
[mariadb]
[mariadb-10.3]
eof

在node1节点执行集群初始化

[root@node1 ~] galera_new_cluster

在 node2,node3 重启 mariadb 服务

[root@node2 ~] systemctl start mariadb
[root@node3 ~] systemctl start mariadb

在 node 1 节点设置密码

[root@node1 ~] mysqladmin -uroot password 123456

检查集群效果

查看集群状态

[root@node1 ~]# ss -tunlp|grep -e  4567 -e  3306
tcp    LISTEN     0      128       *:4567                  *:*                   users:(("mysqld",pid=2675,fd=11))
tcp    LISTEN     0      80        *:3306                  *:*                   users:(("mysqld",pid=2675,fd=30))

查看是否启用galera插件

[root@node1 ~]# mysql -uroot -p123456 -e 'show status like "wsrep_ready";'
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready   | ON    |
+---------------+-------+

目前集群机器数

[root@node1 ~]# mysql -uroot -p123456 -e 'show status like "wsrep_cluster_size";'
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

查看连接的主机

[root@node1 ~]# mysql -uroot -p123456 -e 'show status like "wsrep_incoming_addresses";'
+--------------------------+----------------------------------------------+
| Variable_name            | Value                                        |
+--------------------------+----------------------------------------------+
| wsrep_incoming_addresses | 11.0.1.46:3306,11.0.1.48:3306,11.0.1.47:3306 |
+--------------------------+----------------------------------------------+

测试集群mariad数据是否同步

[root@node1 ~]# mysql -uroot -p123456 -e 'create database lizk;'
[root@node1 ~]# mysql -uroot -p123456 -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lizk               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
[root@node2 ~]# mysql -uroot -p123456  -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lizk               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
[root@node3 ~]# mysql -uroot -p123456  -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lizk               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

ansible部署 mysql一主两从

先配置 ansible 进入 /data/asnible/mariadb-cluster 创建以下文件

# hosts
11.0.1.46 node1
11.0.1.47 node2
11.0.1.48 node3
# mariadb.repo
[centos]
name = centos
baseurl = http://11.0.1.1/centos/
gpgcheck=0
enabled=1
[mariadb]
name = MariaDB
baseurl = file:///root/mariadb-repo
gpgcheck=0
enabled=1
# server.cnf
[server]
[mysqld]
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://node1,node2,node3
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
[embedded]
[mariadb]
[mariadb-10.3]

# cscc_install.yaml
---
- hosts: all
  remote_user: root
  tasks:
  - name: copy hosts
    copy: src=hosts dest=/etc/hosts
  - name: rm repo
    shell: rm -rf /etc/yum.repos.d/*
  - name: scp mariadb-repo.tar.gz
    copy: src=mariadb-repo.tar.gz dest=/root
  - name: tar mariadb-repo
    shell: tar xvf mariadb-repo.tar.gz
  - name: copy repo
    copy: src=mariadb.repo dest=/etc/yum.repos.d/
  - name: clean and makecache repo
    shell: yum clean all && yum makecache
  - name: install mariadb,galera
    yum: name=mariadb-server,galera
  - name: start mariadb
    service: name=mariadb state=started enabled=yes
  - name: stop mariadb
    service: name=mariadb state=stopped
  - name: copy server.cnf
    copy: src=server.cnf dest=/etc/my.cnf.d/server.cnf
- hosts: node1
  remote_user: root
  tasks:
  - name: start mariadb
    shell:  galera_new_cluster
- hosts: node2,node3
  remote_user: root
  tasks:
  - name: start mariadb
    service: name=mariadb state=started
- hosts: node1
  remote_user: root
  tasks:
  - name: set db password
    shell: mysqladmin -uroot password 123456

ansible 执行效果

在这里插入图片描述

在这里插入图片描述
上面用到 包可以去资源里面下载

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MHA是MySQL的高可用方案之一,它可以在一主多从的环境下实现MySQL的高可用。下面是一主从做高可用MHA的步骤: 1. 安装MHA管理节点 首先需要在一台机器上安装MHA管理节点,这里假设安装在192.168.1.1上。 2. 准备MySQL主库和从库 在台从服务器上安装MySQL,并且将它们配置为主从复制的关系。主服务器的状态可以通过show master status;命令来查看,从服务器的状态可以通过show slave status;命令来查看。 3. 配置MHA 在管理节点上创建MHA的配置文件,例如mha.cnf,并在其中指定主服务器和从服务器的IP地址、MySQL的用户名和密码等信息。具体配置可以参考MHA的文档。 4. 启动MHA管理节点 在管理节点上执行以下命令启动MHA管理节点: ``` masterha_manager --conf=/path/to/mha.cnf ``` 5. 启动MHA监控脚本 在主服务器上执行以下命令启动MHA监控脚本: ``` nohup masterha_check_ssh --conf=/path/to/mha.cnf & ``` 这个脚本会定期检查主服务器和从服务器的SSH连接是否正常,如果连接出现问题,就会自动切换为新的主服务器。 6. 测试切换 为了测试切换是否正常,可以手动模拟主服务器宕机的情况,例如通过killall mysqld来停止主服务器的MySQL服务。此时MHA会自动将一个从服务器提升为新的主服务器。 注意:在实际生产环境中,需要对MHA进行充分的测试和验证,以确保它能够正常地实现MySQL的高可用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值