返回顶部
首页 > 资讯 > 数据库 >高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇
  • 608
分享到

高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇

高可用|Xenon实现MySQL高可用架构常用操作篇 2020-08-03 22:08:15 608人浏览 猪猪侠
摘要

原创:知数堂 上一篇文章,我们详细介绍了 Xenon 实现 Mysql 高可用架构的部署过程。接下来本篇将介绍 Xenon 的常用操作,帮助大家在完成环境搭建之后,能把 Xenon 熟练的用起来,以更好的对 mysql 高可用架构进行

高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇

原创:知数堂

上一篇文章,我们详细介绍了 Xenon 实现 Mysql 高可用架构的部署过程。接下来本篇将介绍 Xenon 的常用操作,帮助大家在完成环境搭建之后,能把 Xenon 熟练的用起来,以更好的对 mysql 高可用架构进行管理。

| 1 启动集群

1.1 启动 Mysql

# db1:
[mysql@db1 ~]$ nohup mysqld_safe --defaults-file=/etc/my.cnf &
[1] 5526
[mysql@db1 ~]$ nohup: ignoring input and appending output to ‘nohup.out’
 
# db2:
[mysql@db2 ~]$ nohup mysqld_safe --defaults-file=/etc/my.cnf &
[1] 3637
[mysql@db2 ~]$ nohup: ignoring input and appending output to "nohup.out"
mysql –uroot –p    # 开启增强半同步
set global  rpl_semi_sync_slave_enabled=1;
stop  slave io_thread;
start slave  io_thread;

db3 的启动步骤同 db2。

1.2 启动 Xenon

db1:
[mysql@db1 ~]$ cd /usr/local/xenon/bin/
[mysql@db1 bin]$ ./xenon -c /etc/xenon/xenon.json > /etc/xenon/log/xenon.log 2>&1 &

db2、db3 的启动方式同 db1。

注意:当 MySQL 未启动时,启动 Xenon 会自动启动 MySQL。

1.3 检查半同步复制

启动时,需要检查半同步复制是否开启。

(product)root@localhost [(none)]> show variables like "%semi%";
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 10000      |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
| rpl_semi_sync_slave_enabled               | OFF        |
| rpl_semi_sync_slave_trace_level           | 32         |
……

主要参数:主节点rpl_semi_sync_master_enabled 的状态为 ON,从节点 rpl_semi_sync_slave_enabled 的状态为 ON,表示半同步复制正常开启。

| 2 帮助命令

通过 xenoncli 的帮助命令查看可选的命令。

[mysql@db1 bin]$ ./xenoncli  help
A simple command line client for xenon
 
Usage:
  xenoncli [command]

Available Commands:
  cluster     cluster related commands
  init        init the xenon config file
  mysql       mysql related commands
  perf        perf related commands
  raft        raft related commands
  version     Print the version number of xenon client
  xenon       xenon related commands
 
Use "xenoncli [command] --help" for more infORMation about a command.

举例说明,查看 cluster 的操作命令帮助。

[mysql@db1 bin]$  ./xenoncli cluster -h
cluster related commands
Usage:
  xenoncli cluster [command]
 
Available Commands:
  add         add peers to leader(if there is no leader, add to local)
  gtid        show cluster gtid status
  log         merge cluster xenon.log from logdir
  mysql       show cluster mysql status
  raft        show cluster raft status
  remove      remove peers from leader(if there is no leader, remove from local)
  status      show cluster status
  xenon       show cluster xenon status
 
Use "xenoncli cluster [command] --help" for more information about a command.

| 3 查看集群

3.1 查看状态

xenoncli cluster status

xenoncli cluster mysql

xenoncli cluster xenon

file

file

3.2 检查集群一致状态

xenoncli cluster raft

file

3.3 检查集群 GTID 状态

xenoncli cluster gtid

file

| 4 关闭集群

xenoncli mysql stopmonitor
xenoncli mysql shutdown
pkill xenon

| 5 添加/删除节点

5.1 添加节点

xenoncli cluster add 192.168.0.2:8801,192.168.0.3:8801,192.168.0.5:8801

Xenon 允许添加已经添加过的节点。如果节点已经在集群里面,将直接被忽视,不做任何操作。

5.2 删除节点

xenoncli cluster  remove 192.168.0.2:8801,192.168.0.3:8801,192.168.0.5:8801

| 6 备份 MySQL 到本地

[root@db1 backup]# xenoncli mysql backup
Usage:
  xenoncli mysql backup --to=backupdir [flags]
[mysql@db1 bin]$ ./xenoncli mysql backup --to=/backup/data
 2020/02/10 04:28:43.924306       [WARNING]     rebuildme.found.best.slave[10.10.10.11:8801].leader[10.10.10.10:8801]
 2020/02/10 04:28:43.924576       [WARNING]     S1-->found.the.best.backup.host[10.10.10.11:8801]....
 2020/02/10 04:28:43.945828       [WARNING]     S2-->rm.and.mkdir.backupdir[/backup/data]
 2020/02/10 04:28:43.945845       [WARNING]     S3-->xtrabackup.begin....
 2020/02/10 04:28:43.946692       [WARNING]     rebuildme.backup.req[&{From: BackupDir:/backup/data SSHHost:10.10.10.10 SSHUser:mysql SSHPasswd:123456 SSHPort:22 IOPSLimits:100000 XtrabackupBinDir:/usr/bin}].from[10.10.10.11:8801]
 2020/02/10 04:29:06.360412       [WARNING]     S3-->xtrabackup.end....
 2020/02/10 04:29:06.360444       [WARNING]     S4-->apply-log.begin....
 2020/02/10 04:29:11.010835       [WARNING]     S4-->apply-log.end....
 2020/02/10 04:29:11.011275       [WARNING]     completed OK!
 2020/02/10 04:29:11.011300       [WARNING]     backup.all.done....

因 xenoncli 会尝试先删除 backupdir 再 mkdir,故不建议使用 /backup 根目录路径。若使用这种路径,rm 可以成功,mkdir 会失败。

| 7 Rebuild 重建

选择最佳状态的从节点,进行 XtraBackup 流式重建,from 参数可指定重建源节点。

  • 作用:重建当前节点 MySQL
  • 场景:节点坏掉需要快速重建
// 在要做重建的节点执行: 
xenoncli mysql rebuildme

// 如果想以指定节点为准重建,执行: 
xenoncli mysql -h

// 基于指定节点复制重建当前 MySQL 节点
[mysql@db1 bin]$ ./xenoncli mysql rebuildme --from=10.10.10.11:8801
 2020/02/11 01:19:40.907645       [WARNING]     =====prepare.to.rebuildme=====
                        IMPORTANT: Please check that the backup run completes successfully.
                                   At the end of a successful backup run innobackupex
                                   prints "completed OK!".
 
 2020/02/11 01:19:40.908418       [WARNING]     S1-->check.raft.leader
 2020/02/11 01:19:40.911586       [WARNING]     S2-->prepare.rebuild.from[10.10.10.11:8801]....
 2020/02/11 01:19:40.913050       [WARNING]     S3-->check.bestone[10.10.10.11:8801].is.OK....
 2020/02/11 01:19:40.913066       [WARNING]     S4-->set.learner
 2020/02/11 01:19:40.915499       [WARNING]     S5-->stop.monitor
 2020/02/11 01:19:40.916758       [WARNING]     S6-->kill.mysql
 2020/02/11 01:19:40.947717       [WARNING]     S7-->check.bestone[10.10.10.11:8801].is.OK....
 2020/02/11 01:19:40.950867       [WARNING]     S8-->rm.datadir[/backup/data]
 2020/02/11 01:19:40.950879       [WARNING]     S9-->xtrabackup.begin....
 2020/02/11 01:19:40.951632       [WARNING]     rebuildme.backup.req[&{From: BackupDir:/backup/data SSHHost:10.10.10.10 SSHUser:mysql SSHPasswd:123456 SSHPort:22 IOPSLimits:100000 XtrabackupBinDir:/usr/bin}].from[10.10.10.11:8801]
 2020/02/11 01:19:51.200092       [WARNING]     S9-->xtrabackup.end....
 2020/02/11 01:19:51.200116       [WARNING]     S10-->apply-log.begin....
 2020/02/11 01:19:56.666199       [WARNING]     S10-->apply-log.end....
 2020/02/11 01:19:56.666209       [WARNING]     S11-->start.mysql.begin...
 2020/02/11 01:19:56.666757       [WARNING]     S11-->start.mysql.end...
 2020/02/11 01:19:56.666766       [WARNING]     S12-->wait.mysqld.running.begin....
 2020/02/11 01:19:59.680987       [WARNING]     wait.mysqld.running...
 2020/02/11 01:19:59.709382       [WARNING]     S12-->wait.mysqld.running.end....
 2020/02/11 01:19:59.709395       [WARNING]     S13-->wait.mysql.working.begin....
 2020/02/11 01:19:59.710943       [WARNING]     S13-->wait.mysql.working.end....
 2020/02/11 01:19:59.710955       [WARNING]     S14-->stop.and.reset.slave.begin....
 2020/02/11 01:19:59.731108       [WARNING]     S14-->stop.and.reset.slave.end....
 2020/02/11 01:19:59.731121       [WARNING]     S15-->reset.master.begin....
 2020/02/11 01:19:59.739414       [WARNING]     S15-->reset.master.end....
 2020/02/11 01:19:59.739455       [WARNING]     S15-->set.gtid_purged[1520b6dd-2fb1-11ea-ab64-080027d70146:1-14
].begin....
 2020/02/11 01:19:59.742273       [WARNING]     S15-->set.gtid_purged.end....
 2020/02/11 01:19:59.742284       [WARNING]     S16-->enable.raft.begin...
 2020/02/11 01:19:59.743512       [WARNING]     S16-->enable.raft.done...
 2020/02/11 01:19:59.743534       [WARNING]     S17-->wait[3000 ms].change.to.master...
 2020/02/11 01:19:59.743551       [WARNING]     S18-->start.slave.begin....
 2020/02/11 01:19:59.763468       [WARNING]     S18-->start.slave.end....
 2020/02/11 01:19:59.763478       [WARNING]     completed OK!

| 8 手动 Failover/switchover

手动触发主从切换。

(product)root@localhost [(none)]> set global read_only=on;
Query OK, 0 rows affected (0.00 sec)
 
[mysql@db1 bin]$ ./xenoncli raft trytoleader
 2020/02/11 01:48:51.219975       [WARNING]     [10.10.10.10:8801].prepare.to.propose.this.raft.to.leader
 2020/02/11 01:48:51.255617       [WARNING]     [10.10.10.10:8801].propose.done
[mysql@db1 bin]$ ./xenoncli  cluster status
+------------------+-------------------------------+---------+---------+--------------------------+---------------------+----------------+------------------+
|        ID        |             Raft              | Mysqld  | Monitor |          Backup          |        Mysql        | IO/SQL_RUNNING |     MyLeader     |
+------------------+-------------------------------+---------+---------+--------------------------+---------------------+----------------+------------------+
| 10.10.10.10:8801 | [ViewID:4 EpochID:0]@LEADER   | RUNNING | ON      | state:[NONE]
            | [ALIVE] [READWRITE] | [true/true]    | 10.10.10.10:8801 |
|                  |                               |         |         | LastError:               |                     |                |                  |
+------------------+-------------------------------+---------+---------+--------------------------+---------------------+----------------+------------------+
| 10.10.10.11:8801 | [ViewID:4 EpochID:0]@FOLLOWER | RUNNING | ON      | state:[NONE]
            | [ALIVE] [READONLY]  | [true/true]    | 10.10.10.10:8801 |
|                  |                               |         |         | LastError:               |                     |                |                  |
+------------------+-------------------------------+---------+---------+--------------------------+---------------------+----------------+------------------+
| 10.10.10.18:8801 | [ViewID:4 EpochID:0]@FOLLOWER | RUNNING | ON      | state:[NONE]
            | [ALIVE] [READONLY]  | [true/true]    | 10.10.10.10:8801 |
|                  |                               |         |         | LastError:               |                     |                |                  |
+------------------+-------------------------------+---------+---------+--------------------------+---------------------+----------------+------------------+

| 9 MySQL Stack Info

查看 MySQL 如何调用堆栈信息。Quick Stack 功能速度快,对流程几乎没有影响。

xenoncli perf -h
perf related commands
 
Usage:
  xenoncli perf [command]
 
Available Commands:
  quickstack  capture the stack of mysqld using quickstack

| 10 Raft + Operation

不发起选主 enable 是恢复,disable 指该 Xenon 节点只复制。

xenoncli raft -h
raft related commands
 
Usage:
  xenoncli raft [command]
 
Available Commands:
  add                add peers to local
  disable            enable the node out control of raft
  disablepurgebinlog disable leader to purge binlog
  enable             enable the node in control of raft
  enablepurgebinlog  enable leader to purge binlog(default)
  nodes              show raft nodes
  remove             remove peers from local
  status             status in JSON(state(LEADER/CANDIDATE/FOLLOWER/IDLE))
  trytoleader        propose this raft as leader

| 11 启动增强半同步检查

# 启动半同步复制检查
xenoncli raft enablechecksemisync

# 启动或关闭半同步复制检查
xenoncli raft disablechecksemisync

我们可以看到半同步的参数是:

(product)root@localhost [(none)]> show variables like "%rpl%";
+-------------------------------------------+---------------------+
| Variable_name                             | Value               |
+-------------------------------------------+---------------------+
| rpl_semi_sync_master_enabled              | ON                  |
| rpl_semi_sync_master_timeout              | 1000000000000000000 |
| rpl_semi_sync_master_trace_level          | 32                  |
| rpl_semi_sync_master_wait_for_slave_count | 1                   |
| rpl_semi_sync_master_wait_no_slave        | ON                  |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC          |
| rpl_semi_sync_slave_enabled               | ON                  |
| rpl_semi_sync_slave_trace_level           | 32                  |
| rpl_stop_slave_timeout                    | 31536000            |
+-------------------------------------------+---------------------+

若通过 set global 修改半同步的 timeout,将自动订正为无限大;若基于运维临时调整,需要先执行 xenoncli mysql disablechecksemisync 再修改;若运维完,需要恢复自动订正的话,执行 enablechecksemisync

// 例如:修改 timeout 参数为 10,
(product)root@localhost [(none)]> set global rpl_semi_sync_master_timeout=10;
Query OK, 0 rows affected (0.00 sec)
 
(product)root@localhost [(none)]> show variables like "%rpl%";
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 10         |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
| rpl_semi_sync_slave_enabled               | ON         |
| rpl_semi_sync_slave_trace_level           | 32         |
| rpl_stop_slave_timeout                    | 31536000   |
+-------------------------------------------+------------+
9 rows in set (0.00 sec)
 
// 过一会儿又自动变为无穷大了
(product)root@localhost [(none)]> show variables like "%rpl%";
+-------------------------------------------+---------------------+
| Variable_name                             | Value               |
+-------------------------------------------+---------------------+
| rpl_semi_sync_master_enabled              | ON                  |
| rpl_semi_sync_master_timeout              | 1000000000000000000 |
| rpl_semi_sync_master_trace_level          | 32                  |
| rpl_semi_sync_master_wait_for_slave_count | 1                   |
| rpl_semi_sync_master_wait_no_slave        | ON                  |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC          |
| rpl_semi_sync_slave_enabled               | ON                  |
| rpl_semi_sync_slave_trace_level           | 32                  |
| rpl_stop_slave_timeout                    | 31536000            |
+-------------------------------------------+---------------------+
9 rows in set (0.00 sec)

| 指令分类

查询集群信息:

xenoncli cluster 指令

操作本机的:

xenoncli raft 指令
xenoncli perf quickstack
xenoncli mysql backup | cancelbackup | kill | rebuildme | shutdown | start | startmonitor |status | stopmonitor | sysvar

先尝试连接到 Leader 执行,如果没有 Leader,则在本机执行:

xenoncli mysql changepassWord | createsuperuser | createuser | createuserwithgrants |
dropuser | getuser

下期预告

下期我们将介绍 Xenon 配置文件相关的使用。

推荐阅读

  • 高可用 | Xenon 实现 MySQL 高可用架构 部署篇
  • 高可用 | Xenon:后 MHA 时代的选择
您可能感兴趣的文档:

--结束END--

本文标题: 高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇

本文链接: https://lsjlt.com/news/8721.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇
    原创:知数堂 上一篇文章,我们详细介绍了 Xenon 实现 MySQL 高可用架构的部署过程。接下来本篇将介绍 Xenon 的常用操作,帮助大家在完成环境搭建之后,能把 Xenon 熟练的用起来,以更好的对 MySQL 高可用架构进行...
    99+
    2020-08-03
    高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇
  • MySQL高可用架构:mysql+keepalived实现
    系统环境及架构#主机名    系统版本        mysql版本  ip地址 mysqlMaster    centos7.4        mysql5.7        192.168.1.42 ...
    99+
    2024-04-02
  • Mysql 高可用架构
      MMM方案 即使主从复制中间出现异常情况,MMM记录了详细同步日志,重启服务后会从错误的地方继续同步,不会丢失数据; Mysql经典架构方案 此方案做了读写分离,写入是通过访问映射VIP地址,写入到主服务器,再通过v...
    99+
    2020-03-29
    Mysql 高可用架构
  • 用MHA架构实现MySQL高可用方法
    下面一起来了解下用MHA架构实现MySQL高可用方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望用MHA架构实现MySQL高可用方法这篇短内容是你想要的。MySQL复制是异步或者半同步的。当maste...
    99+
    2024-04-02
  • 高可用 | 关于 Xenon 高可用的一些思考
    原创:知数堂 上一篇文章,我们详细介绍了 Xenon 实现 MySQL 高可用架构的常用操作。本篇将对关于 Xenon 高可用的一些思考及高频问题进行解答。 问题 1:宕机时 binlog 有 gap 会补日志吗? Xenon 不会...
    99+
    2016-01-28
    高可用 | 关于 Xenon 高可用的一些思考
  • 金融级MySQL高可用方案-Xenon
    搞了一下午,终于把xenon环境搭建起来了。 [root@devdb01 zxdata]# /usr/local/xenon/bin/xenoncli cluster status +-----------...
    99+
    2024-04-02
  • MHA实现MySQL高可用集群架构
    转转连接 https://www.cnblogs.com/tanxiaojun/p/10424699.html MHA简介 MHA(Master HighAvailability)目前在MySQL高可...
    99+
    2024-04-02
  • MySQL高可用群集------配置MMM高可用架构
    MMM简介: MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语...
    99+
    2024-04-02
  • MySQL高可用架构之MHA
    一、MHA介绍   MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可...
    99+
    2019-01-11
    MySQL高可用架构之MHA
  • MySQL高可用架构之MHA实践
    本文主要是描述MHA高可用快速部署步骤以及简单使用命令 1、下载安装包     mha 依赖包:        &n...
    99+
    2024-04-02
  • MySQL高可用架构之MaxScale实践
        本次安装部署基于MHA已部署的情况下,只部署MaxScale,并且采用的是rpm包安装     MaxScale是ma...
    99+
    2024-04-02
  • k8s高可用架构
    概述...
    99+
    2023-06-04
  • 【MySQL】【高可用】基于MHA架构的MySQL高可用故障自动切换架构
    基于MHA架构的MySQL高可用切换架构 环境: ​ CentOS7+MySQL 5.7 + GTID 业务系统:mainBusiness ​ node1 : 192.16...
    99+
    2024-04-02
  • MySQL高可用架构之Galera Cluster
    MySQL高可用架构之Galera Cluster1、实验准备及拓扑至少需要三个节点node1 192.168.150.137 node2 192.168.150.138 node3&n...
    99+
    2024-04-02
  • mysql MHA 高可用架构部署
    MHA简介:即Master High Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具, 该工具仅...
    99+
    2024-04-02
  • MySQL之高可用架构详解
    目录引言MySQL高可用一主一备:MySQL主从同步的几种模式:总结引言 “高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。 服务...
    99+
    2024-04-02
  • MySQL中怎么实现集群高可用架构
    今天就跟大家聊聊有关MySQL中怎么实现集群高可用架构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL+DRDB架构通过DRBD基于bloc...
    99+
    2024-04-02
  • MySQL高可用架构之MHA架构全解
    目录一、介绍二、组成三、工作过程四、架构五、实例展示MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating m...
    99+
    2024-04-02
  • 【Redis】Sentinel 高可用架构
    一 前言    Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身...
    99+
    2024-04-02
  • MySQL高可用架构-MMM、MHA、MGR、PXC
    主从复制如何工作 在主库把数据记录到binlog(二进制日志)。 备库开IO线程把binlog复制到自己的relaylog(中继日志)。 备库读取中继日志,重放到备库上。 半同步复制 半同步复制可以确保备库拥有主库数据的拷...
    99+
    2015-08-21
    MySQL高可用架构-MMM MHA MGR PXC
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作