AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[galera](dba)

Martin Hope
LefterisL
Asked: 2021-05-21 03:28:44 +0800 CST

MariaDB Galera 仲裁器无法与 SSL 同步

  • 2

所以场景是这样的。我已经设置了一个 4 节点 MariaDB Galera 集群(10.5)。我还在顶部添加了第 5 个 Galera 仲裁器,一切都同步和连接得很好。但是,当我在集群上启用 SSL 时(从头开始引导它之后),我能够同步 4 个节点,但由于某种原因仲裁器不同步。

有趣的是,当节点同步时,它们会输出“connecting...ssl://172.31.0.4:4567”。但是,当仲裁器尝试同步时,它会输出“connecting...tcp://172.31.0.4:4567”。似乎出于某种原因它正在尝试通过 tcp。

当我启动它时,它的配置是这样的

    name:    garb
    address: gcomm://mariadb-galera-0:4567,mariadb-galera-1:4567,mariadb-galera-2:4567,mariadb-galera-3:4567,mariadb-galera-arb:4567
    group:   scluster
    sst:     trivial
    donor:
    options: socket.ssl_key=/etc/ssl/galera/server-key.pem;socket.ssl_cert=/etc/ssl/galera/server-cert.pem;socket.ssl_ca=/etc/ssl/galera/ca-cert.pem;socket.ssl_cipher=AES128-SHA; gcs.fc_limit=9999999; gcs.fc_factor=1.0; gcs.fc_master_slave=yes
    cfg:
    log:

它不会给我一个 ssl 或证书错误只是超时

INFO: (8bef8261-9d27, 'tcp://0.0.0.0:4567') connection to peer 00000000-0000 with addr tcp://172.31.0.4:4567 timed out, no messages seen in PT3S, socket stats: rtt: 39 rttvar: 19 rto: 200000 lost: 0 last_data_recv: 3500 cwnd: 10 last_queued_since: 3499991400 last_delivered_since: 3499991400 send_queue_length: 0 send_queue_bytes: 0

这些pem文件与我在所有节点 + 仲裁器中使用的文件完全相同。

我在文档中阅读了我需要指定的内容,cipher否则我会收到错误消息。我尝试过AES128-SHA并且AES128-SHA256根本没有声明它,但仍然超时。

下面是来自其中一个节点的 phpmyadmin 的 wsrep 提供程序选项。似乎是空的cipher,但又为什么仲裁员试图连接到“tcp://”而不是像其他人一样连接到“ssl://”? 在此处输入图像描述

感谢您的帮助

mariadb galera
  • 1 个回答
  • 286 Views
Martin Hope
Amit P
Asked: 2021-03-01 23:22:28 +0800 CST

如何使用 MaxScale 限制不良应用程序对 MariaDB Galera 集群的影响?

  • 1

我有一个具有三个 MariaDB 节点的 Galera Replication 集群,其中前面的 Maxscale Active-Passive 集群为 tis 客户端提供单节点映像。

我有一个行为不端的客户端,它打开连接而不关闭它们。在数据库限制达到之前,连接数一直在增加。为了限制我在两个参数下配置的连接数

max_connections=
max_user_connections=

我的情况是这样,当我只配置了 max_connections 时,只要达到限制,Galera 节点就会停止接受更多连接,并出现“连接太多”错误。当 Maxscale 看到此连接拒绝 n 次时,它会将服务器置于维护模式。我可以理解这种行为,这是意料之中的。当我配置 max_user_connections 时,由于应用程序表现不佳并尝试不断建立新连接,当用户特定限制达到进一步的连接尝试时,后端的 mariadb 节点会失败。Maxscale 观察到这些故障,并再次将服务器置于维护模式。我相信在这段时间内它只会看到来自坏客户端的连接尝试,没有其他应用程序尝试连接。

通过这种方式,MaxScale 会随着时间的推移将所有三个节点都置于维护模式,这使得完整的数据库服务不可用。

对于作为管理员的我来说,情况变得相同,设置用户特定的限制并不能实现任何目标。这里想问两点

Q1。如何防止只有一个用户连接失败将后端 mariadb 节点投入维护?

Q2。关于 MaxScale 如何以及何时决定将服务器置于维护模式的任何文档或教程、文章参考?

以下是有关环境的详细信息

Galera - 25.3.23,MariaDB - 10.3.12,MaxScale - 2.4.11,操作系统 - RHEL 7.4 (Maipo)

这是我的配置

MariaDB Galera 配置

[server]

# this is only for the mysqld standalone daemon
[mysqld]
#user statistics
userstat=1
performance_schema
#wait_timeout=600
max_allowed_packet=1024M
#
lower_case_table_names=1
#
max_connections=1500
max_user_connections=200
#
# * Galera-related settings
#
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M; pc.ignore_sb=false; pc.ignore_quorum=false"
#wsrep_cluster_address defines members of the cluster
wsrep_cluster_address=gcomm://x.x.x.1,x.x.x.2,x.x.x.3
wsrep_cluster_name="mariadb-cluster"
wsrep_node_address=x.x.x.1
wsrep_node_incoming_address=x.x.x.1
wsrep_debug=OFF
#
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_doublewrite=1
query_cache_size=0
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=5G
#
bind-address=x.x.x.1
#
[mariadb]
#performance
wait_timeout=31536000
#
#query logging
log_output=FILE
#slow queries
slow_query_log
slow_query_log_file=/var/log/mariadb/mariadb-slow.log
long_query_time=10.0
log_queries_not_using_indexes=ON
min_examined_row_limit=1000
log_slow_rate_limit=1
log_slow_verbosity=query_plan,explain
#
#error logs
log_error=/var/log/mariadb/mariadb-error.log
log_warnings=2

同样配置所有三个 Galera 节点。

MaxScale 配置

[maxscale]
threads=auto

# Server definitions
[mariadb1]
type=server
address=x.x.x.1
port=3306
protocol=MariaDBBackend
#priority=0

[mariadb2]
type=server
address=x.x.x.2
port=3306
protocol=MariaDBBackend
#priority=1

[mariadb3]
type=server
address=x.x.x.3
port=3306
protocol=MariaDBBackend
#priority=1

# Monitor for the servers
#

[Galera-Monitor]
type=monitor
module=galeramon
servers=mariadb1, mariadb2, mariadb3
user=xxx
password=xxx
#disable_master_role_setting=true
monitor_interval=1000
#use_priority=true
#
disable_master_failback=true
available_when_donor=true

# Service definitions

[Galera-Service]
type=service
router=readwritesplit
master_accept_reads=true
connection_keepalive=300s
master_reconnection=true
master_failure_mode=error_on_write
connection_timeout=3600s
servers=mariadb1, mariadb2, mariadb3
user=xxx
password=xxx
#filters=Query-Log-Filter

#Listener

[Galera-Listener]
type=listener
service=Galera-Service
protocol=MariaDBClient
port=4306

mariadb galera
  • 2 个回答
  • 454 Views
Martin Hope
Milad Hamid Elhaei Sahar
Asked: 2020-04-25 03:53:32 +0800 CST

如何在 Mariadb Galera 集群中安全地更改表以将 row_format 设置为压缩或动态?

  • 1

我们有一些 row_format=Compact 的表。最大的表大约是 30Gb,那么我可以如何安全地更改表并将行格式设置为大表的压缩和动态的其他三个每个小于 10GB 的表?这是一个具有 mariadb v10.4.12 和 Galera 4 的三个节点的集群。运行 DDL / alter tables 并更改行格式会导致集群阻塞,并且可能需要很长时间!

谁能帮助并指导我如何做到这一点?您认为在此处使用 RSU 模式是否有帮助?自从我们谈论更改行格式以来它是否安全?

mariadb galera
  • 1 个回答
  • 476 Views
Martin Hope
sleepy
Asked: 2020-02-21 22:43:40 +0800 CST

更改为 13306 后,Galera 记录错误:Slave I/O: error connected to master 'repuser@<master node ID>:3306'

  • 0

在 RHEL 7.3 上使用 Galera 25.3.23

Galera 以前效果很好。将MySQL服务器端口从3306改为13306后,其中一个节点报错,重启后:

Slave I/O: error connecting to master 'repuser@<IP>:3306' - retry-time: 60  maximum-retries: 86400  message: Can't connect to MySQL server on '<IP>' (111 "Connection refused"), Internal MariaDB error code: 2003

其他 2 个节点在重启后工作正常。

谷歌搜索网络,但找不到指定端口号的方法。

此外,如果可能,请分享“repuser”ID 的用法。

mysql galera
  • 1 个回答
  • 119 Views
Martin Hope
haj_baba
Asked: 2019-12-29 03:38:17 +0800 CST

MaxScale 以 root 或其他用户身份登录

  • 0

我安装MaxScale 2.4.4了Galera Cluster. 我可以使用 maxscale 用户访问 galera,但我无法使用其他用户登录到 maxscale。我在 galera 中创建了一个用户,并使用 maxctrl 创建了另一个用户名相同的用户,但它返回 Access denied 错误。如何在 maxscale 2.4.4 中为应用程序创建用户。

最大尺度.cnf

[maxscale]
threads=1

[Galera-Monitor]
type=monitor
module=galeramon
servers=server1,server2,server3
user=maxscale
password=qwe123
disable_master_failback=1

[Galera-Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=maxscale
password=qwe123

[Galera-Listener]
type=listener
#router=readwritesplit
service=Galera-Service
protocol=MySQLClient
port=3306

[Write-Service]
type=service
router=readconnroute
router_options=master
servers=server1, server2, server3
user=maxscale
password=qwe123

[Read-Service]
type=service
router=readconnroute
router_options=slave
servers=server1, server2, server3
user=maxscale
password=qwe123

#[Splitter-Service]
#type=service
#router=readwritesplit
#servers=server1,server2,server3
#user=maxscale
#password=qwe123

#[Splitter-Listener]
#type=listener
#service=Splitter-Service
#protocol=MariaDBClient
#port=3306

[CLI]
type=service
router=cli

[CLI-Listener]
type=listener
service=CLI
protocol=maxscaled
address=0.0.0.0
port=6603

[server1]
type=server
address=192.168.122.93
port=3306
protocol=MySQLBackend

[server2]
type=server
address=192.168.122.17
port=3306
protocol=MySQLBackend

[server3]
type=server
address=192.168.122.13
port=3306
protocol=MySQLBackend

我发现enable_root_user=1可以使用 root 用户登录 maxscale,但我不知道应该在哪里添加它;

maxctrl list servers
┌─────────┬────────────────┬──────┬─────────────┬─────────────────────────┬──────┐
│ Server  │ Address        │ Port │ Connections │ State                   │ GTID │
├─────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ server1 │ 192.168.122.93 │ 3306 │ 0           │ Master, Synced, Running │      │
├─────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ server2 │ 192.168.122.17 │ 3306 │ 0           │ Slave, Synced, Running  │      │
├─────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ server3 │ 192.168.122.13 │ 3306 │ 0           │ Slave, Synced, Running  │      │
└─────────┴────────────────┴──────┴─────────────┴─────────────────────────┴──────┘

maxscale 运行在192.168.122.222,我希望所有应用程序都使用自己的用户连接到该地址;

mariadb galera
  • 1 个回答
  • 781 Views
Martin Hope
Dany Henriquez
Asked: 2019-09-16 15:56:51 +0800 CST

来自远程mariadb10.3 galera 的mariabackup | '/var/lib/mysql/' (Errcode: 2 "No such file or directory")

  • 1

以下设置适用:

  • docker中的3节点galera集群
  • 应该运行 mariabackup 以从 galera 集群中获取数据的备份容器
  • 网络很好。备份容器可以 ping galera
  • mariadb/mariabackup 版本 10.3
  • 备份容器仅安装了 mariabackup。

我使用的命令

mariabackup --backup --host=<service_name> --port=3306 --user=root --password=<pass> --target-dir=/backup

当尝试从备份容器中的 galera-cluster 备份时,我收到以下错误

00] 2019-09-15 23:38:34 Connecting to MySQL server host: mdb_mariadb, user: root, password: set, port: 3306, socket: /var/run/mysqld/mysqld.sock
[00] 2019-09-15 23:38:34 Using server version 10.3.18-MariaDB-1:10.3.18+maria~bionic-log
[00] 2019-09-15 23:38:34 Warning: option 'datadir' points to nonexistent directory '/var/lib/mysql/'
[00] 2019-09-15 23:38:34 Warning: MySQL variable 'datadir' points to nonexistent directory '/var/lib/mysql/'
[00] 2019-09-15 23:38:34 Warning: option 'datadir' has different values:
  '/var/lib/mysql/' in defaults file
  '/var/lib/mysql/' in SHOW VARIABLES
mariabackup based on MariaDB server 10.3.18-MariaDB debian-linux-gnu (x86_64)
[00] 2019-09-15 23:38:34 uses posix_fadvise().
mariabackup: Can't change dir to '/var/lib/mysql/' (Errcode: 2 "No such file or directory")
[00] 2019-09-15 23:38:34 my_setwd() failed , /var/lib/mysql/

我尝试了什么。

  • 研究各种要点以寻找线索
  • 研究服务器安装提供的 mariadb 脚本
  • 尝试不同的选项组合,但总是相同的错误。

问题:

  • 有没有人进行远程备份,可以告诉我你是如何成功的?
  • 方法是否错误,是否有更好的方法可以每天进行一次热备份并在白天进行增量备份?
mariadb galera
  • 1 个回答
  • 1868 Views
Martin Hope
misterjones
Asked: 2019-06-01 10:49:23 +0800 CST

如何指定在 Galera 集群中启动哪个 MariaDB 实例

  • 2

我有几个 MariaDB 服务器,每个都运行多个实例。我试图弄清楚我将如何引导 Galera 集群,但指定我要启动的实例,即:

node1、2 和 3 每个都有通过 mysqld_multi 运行的实例 1-4,每个实例都在自己的端口上运行。

我想在集群的每台服务器上使用实例 4,所以我关闭了每台服务器。

在我的测试集群(运行一个 MariaDB 实例)上,引导很简单:在第一个节点上使用 galera_new_cluster 启动它,然后启动另外两台服务器。

我将如何做同样的事情但指定 GNR "4" 来引导集群?

mariadb galera
  • 1 个回答
  • 252 Views
Martin Hope
Anton Aleksandrov
Asked: 2019-05-30 00:37:35 +0800 CST

如何使用 ProxySQL 缓存插入的数据以避免延迟

  • 0

我们正在使用带有 Galera 插件的 MariaDB 10.2。集群由 4 个节点组成 - 3 个用于繁忙的服务复杂查询,1 个用于备份。

最近我们遇到了 ProxySQL,这听起来对我们来说非常有趣,因为它可以将插入查询拆分到一台服务器并从其他服务器中选择数据。我们希望避免在高活动期间出现死锁和自动增量问题。

但是我们的一位开发人员发现了一个延迟——在使用 ProxySQL 时,他尝试插入一条简单的记录并立即选择该记录。一般来说,每隔一秒或三秒这样的选择请求就会因延迟而失败。如果他添加微小的 0.01 秒延迟 - 他永远不会失败,因为所有 galera 节点都能够在这段时间内同步。

现在的问题是 - 是否可以使用 ProxySQL 缓存插入的数据,因此至少在前 0.01 秒内会从缓存中返回即时“选择”。

或者在这种情况下还有其他方法或建议吗?

谢谢你。:)

galera cache
  • 1 个回答
  • 307 Views
Martin Hope
nbari
Asked: 2019-05-14 05:18:04 +0800 CST

galera 集群如何在不使用 RSU/TOI 的情况下运行 ALTER

  • 0

我需要运行一个 alter 语句,但想防止锁定/停止集群。Galera 文档建议使用:

SET wsrep_OSU_method='RSU';

然后运行 ​​ALTER 语句,一旦完成:

SET wsrep_OSU_method='TOI';

问题是这需要在每个节点上运行,而且我只能访问负载均衡器后面的一个节点,有什么替代方案或解决方法吗?

mariadb galera
  • 1 个回答
  • 419 Views
Martin Hope
Alex Protopopescu
Asked: 2019-02-19 15:38:37 +0800 CST

Galera Arbitrator 系统要求与实际 Galera MariaDB 节点要求对比

  • 0

现在我们的设置是 CloudFlare > 1x HAProxy(达拉斯,德克萨斯州),3x 应用程序服务器(达拉斯,德克萨斯州),Galera 多主集群(达拉斯,德克萨斯州)中的 3x MariaDB 节点。应用程序服务器会自动水平缩放以处理向它们抛出的任何流量。HAProxy 和数据库服务器在需要时扩展。应用程序服务器还维护单独的 SQL 读取缓存以减轻数据库上的负载。

我们的主要卖点是无论发生什么情况都保持我们的产品在线,因为我们的解决方案迎合了政府的紧急服务,而且由于我们是一家初创公司,我们的预算非常紧张。

出乎意料的是,我们当前的云提供商(我们在接下来的几个月中无法更改)每月大约有 30 分钟遭受 DDOS 攻击。对于我们的情况,甚至一分钟的停机时间都是可以接受的。

所以我正在考虑使用 CloudFlare > 3x HAProxy(德克萨斯州达拉斯;加利福尼亚州弗里蒙特;新泽西州纽瓦克)> 6x 应用服务器(德克萨斯州达拉斯;加利福尼亚州弗里蒙特;新泽西州纽瓦克)> 3 Galera Multi-master + 2 Galera 仲裁员(德克萨斯州达拉斯;加利福尼亚州弗里蒙特;新泽西州纽瓦克;佐治亚州亚特兰大;旧金山,旧金山)。

这将大大增加我们的成本,这就是为什么我想要两个 Galera 仲裁器,如果我可以在降低成本的同时提高稳定性的话。

我的主要问题是,Galera Arbitrator 的资源要求是什么,是否值得拥有三个 MariaDB 节点和两个 Galera Arbitrator 节点,而不是集群中只有三个 MariaDB 节点?另一种说法是,是否值得在超过三个节点的设置上使用 garbd?

如果在路由方面,我们的 HAProxy 服务器将选择同一区域中的应用程序服务器,随后选择同一区域中的数据库服务器。这些选择基于连接时间和服务器负载的混合。

mysql galera
  • 1 个回答
  • 401 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve