资讯详情

MaxScale 2.5

目录

  • 1.简介
  • 2.使用MariaDB Monitor故障自动转移
    • 2.1 自动Failover
    • 2.2 Rejoin
    • 2.3 Switchover
    • 2.4 配置Servers
    • 2.5 配置mariadb监视器
    • 2.6 使用MariaDB MaxScale的连接路由
    • 2.7 配置监听器
  • 3.合作模式 (高可用)
  • 4.MariaDB MaxScale GUI入门
    • 4.1非https配置 简易测试
    • 4.2 加密配置
    • 4.3功能展示
      • 4.3.1.部分参数可以在线更改
      • 4.3.2. 查看当前server状态
      • 4.3.3.添加新部件
      • 4.3.4.手动切换主从
      • 4.3.5.其他
    • 4.4 query log查询日志
      • filebase
      • match,exclude和options
      • user和 source
      • log_type
      • log_data
      • flush
      • append
      • separator
      • newline_replacement
  • 5.查询脱敏 Masking
    • 5.1 配置
      • 5.1.1 rules
      • 5.1.2 warn_type_mismatch
      • 5.1.3 large_payload
      • 5.1.4 prevent_function_usage
      • 5.1.5 require_fully_parsed
      • 5.1.6 treat_string_arg_as_field
      • 5.1.7 check_user_variables
      • 5.1.8 check_unions
      • 5.1.9 check_subqueries
    • 5.2 规则
      • 5.2.1 replace
      • 5.2.2 obfuscate
      • 5.2.3 with
      • 5.2.3 applies_to
      • 5.2.4 exempted
  • 6.MaxScale 2.5更新日志
  • 7.MariaDB MaxScale安装
    • 7.1 授权数据库账户:
  • 8.MariaDB MaxScale配置
    • 8.0 配置模板:
    • 8.1 全局设置
      • 8.1.1 threads
      • 8.1.2 auth_connect_timeout
      • 8.1.3 query_retries
      • 8.1.4 query_retry_timeout
      • 8.1.5 passive
      • 8.1.6 ms_timestamp
      • 8.1.7 log_throttling
      • 8.1.8 logdir
      • 8.1.9 datadir
      • 8.1.10 libdir
      • 8.1.11 cachedir
      • 8.1.12 piddir
      • 8.1.13 execdir
      • 8.1.1X persistdir
      • 8.1.14 query_classifier_cache_size
      • 8.1.15 query_classifier_args
      • 8.1.16 sql_mode
      • 8.1.17 local_address
      • 8.1.18 users_refresh_time
      • 8.1.19 users_refresh_interval
      • 8.1.20 writeq_high_water
      • 8.1.21 load_persisted_configs
      • 8.1.22 max_auth_errors_until_block
      • 8.1.23 debug
    • 8.2 REST API配置
    • 8.3 Service配置
      • 8.3.1 router
      • 8.3.2 filters
      • 8.3.3 targets
      • 8.3.4 server
      • 8.3.5 cluster
      • 8.3.6 user & password
      • 8.3.7 enable_root_user
      • 8.3.8 auth_all_servers
      • 8.3.9 strip_db_esc
      • 8.3.10 log_auth_warnings
      • 8.3.11 connection_timeout
      • 8.3.12 max_connections
      • 8.3.13 connection_keepalive
      • 8.3.14 net_write_timeout
    • 8.4 Server配置
      • 8.4.1 address
      • 8.4.2 port
      • 8.4.3 socket
      • 8.4.4 monitoruser 和 monitorpw
      • 8.4.5 extra_port
      • 8.4.6 proxy_protocol
      • 8.4.7 rank
    • 8.5 Monitor配置
      • 8.5.常用的监控参数
        • user
        • password
        • monitor_interval
        • backend_connect_timeout
        • backend_write_timeout
        • backend_read_timeout
        • backend_connect_attempts
        • disk_space_threshold
        • disk_space_check_interval
        • script
        • script_timeout
        • events
        • journal_max_age
        • 脚本示例
      • 8.5.2 MariaDB 监视器可选参数
        • assume_unique_hostnames
        • master_conditions
        • slave_conditions
        • ignore_external_masters
        • failcount
        • enforce_read_only_slaves
        • maintenance_on_low_disk_space
        • cooperative_monitoring_locks
      • 8.5.3 配置参数
        • auto_failover
        • auto_rejoin
        • switchover_on_low_disk_space
        • enforce_simple_topology
        • replication_user 和 replication_password
        • replication_master_ssl
        • failover_timeout 和 switchover_timeout
        • verify_master_failure 和 master_failure_timeout
        • servers_no_promotion
        • promotion_sql_file 和 demotion_sql_file
        • handle_events
    • 8.6 Listener配置
      • 8.6.1 service
      • 8.6.2 protocol
      • 8.6.3 address
      • 8.6.4 port
      • 8.6.5 socket
      • 8.6.6 sql_mode
      • 8.6.7 authenticator
      • 8.6.8 authenticator_options
      • 8.6.9 connection_init_sql_file
      • 8.7 Router配置
  • 9.加密密码
    • 9.1 创建加密密码
  • 10.MariaDB MaxScale模块简介
      • 10.1 Monitor
      • 10.2 Filter
      • 10.3 Router
      • 10.4 Service
      • 10.5 Listener
  • 10.MaxCtrl
  • 11.keepalive+maxscale
    • 11.1 安装keepalived
    • 11.2 配置文件
    • 11.3 keepalive日志配置
  • 12 注意事项

1.简介

MariaDB MaxScale是一个数据库代理,它将数据库语句转发到一个或多个数据库服务器。
转发的规则有两种 一种是根据sql语句的语义判断 另一种是根据数据库在集群中的角色判断。
MariaDB MaxScale 目的是为了提供读写分离和高可用的功能。
MariaDB MaxScale有灵活的、可扩展的体系结构,通过插件支持不同的协议和路由方法。

参考: https://mariadb.com/kb/en/maxscale-25-tutorials/

2.使用MariaDB Monitor自动进行故障转移

MariaDB Monitor不仅能够监控MariaDB主从集群的状态,还能够执行故障转移和切换 故障转移(以及切换和重新连接)功能仅支持与基于gtid的复制相结合,而且最初仅支持一主多从结构 故障转移,切换和重新加入功能是MariaDB Monitor的固有部分,但是默认情况下未启用自动故障转移和自动重新加入功能。 配置模板:

[server1]
type=server
address=192.168.121.51
port=3306
protocol=MariaDBBackend
[server2]
...
[server3]
...
[server4]
...
[TheMonitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3,server4
...

如果一切正常将显示 maxctrl list servers 在这里插入图片描述 如果master因为任何原因宕机,那么集群状态将是这样的: 由于默认情况下没有启用故障转移,故障转移机制必须手动调用:

maxctrl call command mariadbmon failover TheMonitor

MariaDB Monitor现在将自动推断哪个slave最适合提升为master,将其提升为master,并相应地修改其他slave。 如果我们现在检查集群状态,我们将看到一个剩余的从服务器已经变成了主服务器。 如果server1现在恢复 它将不会重新加入集群,如下所示: 如果在监视器monitor配置部分中指定了auto_rejoin=true,则会尝试重新加入server1。

2.1 自动Failover

要启用自动故障转移,只需将auto_failover=true添加到配置文件中的监视器monitor部分。

[TheMonitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3,server4
auto_failover=true
auto_rejoin=true
...

如果正常情况下 server1现在宕机,将自动执行故障转移,并将现有的从服务器提升为新的主服务器。 如果持续监视服务器状态,会注意到server1的状态是Down,而server2的状态仍然是Slave,Running。

2.2 Rejoin

要启用自动重新连接,只需将auto_rejoin=true添加到配置文件中的监视器monitor位置。

[TheMonitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3,server4
auto_rejoin=true
...

当启用了自动重新加入时,如果一个失败的主节点重新出现,MariaDB Monitor将尝试将其作为从节点重新加入。

2.3 Switchover

用于明确希望将主角色从一个服务器移动到另一个服务器的情况 如果我们继续前面例子结尾的集群状态,并想让server1再次成为主服务器,那么我们必须发出以下命令:

maxctrl call command mariadbmon switchover TheMonitor server1 server2
maxctrl -u admin -p mariadb -h 10.10.80.163:8989 call command mariadbmon switchover Monitor_name server1  server2

如果命令成功执行,我们将以以下集群状态结束:

2.4 配置Servers

第一步是定义组成集群的服务器。这些服务器将由Servers使用,并由监视器监视。

[dbserv1]
type=server
address=192.168.2.1
port=3306
protocol=MariaDBBackend

[dbserv2]
type=server
address=192.168.2.2
port=3306
protocol=MariaDBBackend

[dbserv3]
type=server
address=192.168.2.3
port=3306
protocol=MariaDBBackend

在address和port参数告诉所在服务器的位置。 protocol应始终设置为MariaDBBackend。 要为MaxScale-to-MariaDB通信启用加密,请添加ssl=true 到server部分

2.5 配置mariadb监视器

[Replication-Monitor]
type=monitor
module=mariadbmon
servers=dbserv1, dbserv2, dbserv3
user=monitor_user
password= 
monitor_interval=2000ms

参数解析: 对象类型 monitor 监视模块 mariadbmon 要监视的服务器列表 dbserv1, dbserv2, dbserv3 连接到服务器时要使用的用户名和密码 monitor_user my_password monitor_interval 监控间隔时间 单位ms

监视用户需要REPLICATION CLIENT特权才能进行基本监视。要创建具有适当授权的用户,请执行以下SQL。

CREATE USER 'monitor_user'@'%' IDENTIFIED BY 'my_password';
GRANT REPLICATION CLIENT on *.* to 'monitor_user'@'%';

如果将使用MariaDB Monitor的自动故障转移,则用户将需要其他授权

GRANT SUPER, RELOAD on *.* to 'monitor_user'@'%';

2.6 使用MariaDB MaxScale的连接路由

本教程的目的是配置一个具有两个可用端口的系统,一个用于写连接,另一个用于读连接。读取连接在从属服务器之间实现负载平衡。

MaxScale检查传入的客户端是否有效。为此,MaxScale需要从后端数据库检索用户身份验证信息。为此,您可以在数据库集群的主服务器上执行以下SQL命令来创建一个特殊的用户帐户。以下教程将使用这些凭据。

CREATE USER 'maxscale'@'%' IDENTIFIED BY '1234567';
GRANT SELECT ON mysql.user TO 'maxscale'@'%';
GRANT SELECT ON mysql.db TO 'maxscale'@'%';
GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.columns_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.proxies_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.roles_mapping TO 'maxscale'@'%';
GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%';

我们需要客户端应用程序可以连接到的两个服务和端口。一种服务将客户端连接路由到主服务器,另一种负载平衡从服务器之间的负载。为此,我们需要在配置文件中定义两个服务。 在配置文件中创建以下两个部分。部分名称是服务的名称,应该有意义。在本教程中,我们使用名称 Write-Service和Read-Service。

[Write-Service]
type=service
router=readconnroute
router_options=master
servers=dbserv1, dbserv2, dbserv3
user=maxscale
password=maxscale_pw

[Read-Service]
type=service
router=readconnroute
router_options=slave
servers=dbserv1, dbserv2, dbserv3
user=maxscale
password=maxscale_pw

router定义了使用的路由模块。在这里,我们使用readconnroute进行连接级路由 servers名称必须与配置文件中servers部分的名称匹配 router_options参数告诉readconnroute-module它应该将客户端连接路由到哪些服务器。对于写服务,我们使用master类型,对于读服务,我们使用slave类型。

2.7 配置监听器

要允许与服务的网络连接,必须将网络端口与之关联。这是通过在配置文件中创建一个单独的侦听器部分来完成的。一个服务可能有多个侦听器

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

[Read-Listener]
type=listener
service=Read-Service
protocol=MariaDBClient
port=3307

service参数告诉侦听器连接到哪个服务 对于Write-Listener,我们将其设置为Write-Service,对于Read-Listener,我们将其设置为Read-Service。

可选的address参数定义了侦听器应该绑定到的本地地址。当主机具有多个网络接口时,可能需要这样做。

3.合作模式 (高可用)

参考文档: https://mariadb.com/resources/blog/mariadb-maxscale-2-5-cooperative-monitoring/ https://mariadb.com/kb/en/mariadb-maxscale-25-mariadb-monitor/#cooperative-monitoring

MariaDB MaxScale 2.5合作监视 MariaDB MaxScale是高级数据库代理,防火墙和查询路由器,可为使用MariaDB Server的MariaDB复制部署提供自动故障转移,以实现高可用性。当主服务器发生故障时,MaxScale自动将副本服务器提升为新的主服务器时,就会发生自动故障转移。协作监视是MaxScale 2.5中许多重要的新功能之一。通过协作监视,如果集群中指定的主要MaxScale节点发生故障,MaxScale节点会自动指定一个新的主要MaxScale节点。

与早期版本所需的非标准化解决方案相比,MaxScale 2.5使用协作监视来分配新的主节点而无需干预。协作监视通过使用后端来防止创建多个主服务器。启用协作监视后,MaxScale尝试使用该GET_LOCK()功能在后端MariaDB服务器上获取锁 。如果特定的MaxScale实例可以获取大多数服务器上的锁,则将其视为主要的MaxScale实例。

锁由以下公式计算: n_servers / 2 + 1

其中“ n_servers”是服务器的数量,但是可以通过两种不同的方法来计算服务器的数量。 使用配置文件maxscale.cnf参数启用协同监视 默认情况下,cooperative_monitoring_locks设置为“none ”并禁用。它可以在两种模式“启用majority_of_all ”和“ majority_of_running ” 不同的模式下 他们计算服务器的数量n_servers,是不同的

majority_of_all模式下 “ n_servers ”是群集中的服务器总数 甚至需要对[Down]的服务器进行计数 例如,在以下情况下:

4个节点主/副本设置,所需的最小锁定数为4/2 + 1 = 3 8个节点主/副本设置,所需的最小锁定数为8/2 + 1 = 5

这样可以避免脑裂现象,但是,如果太多的MariaDB节点同时发生故障,则MaxScale节点将不会成为主节点 ,因为没有一个节点可以达到所需的最小数量的锁。这种情况下的结果是所有节点都变为“辅助”节点。

在majority_of_running 模式下 锁仍将计算为n_servers / 2 + 1,但“ n_servers ”的计算方式是群集中“正在运行”的节点数,而不是群集中的节点总数。随着服务器故障,“ n_servers ”相应减少,最小锁要求也相应减少

例如,在使用的4节点群集中majority_of_running,最小锁要求的计算将如下所示:

所有4个节点都处于活动状态:4/2 + 1 = 3 1个节点发生故障:3/2 + 1 = 2 2个节点中断:2/2 +1 = 2 3个节点中断:1/2 +1 = 1

这支持更多的节点故障,同时仍然能够处理自动MariaDB故障转移。但是,在多个数据中心的情况下,如果两个数据中心之间的网络丢失 ,majority_of_running可能会导致脑裂的情况,并导致创建多个主数据库。majority_of_running仅适用于群集位于同一数据中心的情况。

当主maxscale关闭时 从maxscale将有如下日志:

GUI页面可以插查看状态 也可以通过 show monitors 命令查看 maxctrl -u admin -p mariadb -h 10.10.80.163:8988 show monitors

4.MariaDB MaxScale GUI入门

参考 https://mariadb.com/resources/blog/getting-started-with-the-mariadb-maxscale-gui/

4.1非https配置 简易测试

配置参数到[maxscale] 可以不添加加密 直接访问 ip:port 默认用户名密码为:admin:mariadb admin_secure_gui=false

修改密码: https://mariadb.com/kb/en/mariadb-maxscale-6-mariadb-maxscale-administration-tutorial/#managing-maxctrl-and-rest-api-users

启动后访问: http://10.10.80.67:8989/ http://10.10.80.39:8989/

4.2 加密配置

有两种表示密码的选项,可以使用纯文本或加密密码。为了使用加密密码,必须生成一组密钥,加密和解密过程将使用这些密钥。要生成密钥,请使用该maxkeys命令

存储在 maxscale.cnf 文件中的密码可以选择加密以增加安全性。这是通过在安装 MariaDB MaxScale 时创建加密密钥来完成的。可以通过使用文件名参数执行 maxkeys 实用程序来手动创建加密密钥以存储密钥。MariaDB MaxScale 存储密钥的默认位置是/var/lib/maxscale。密码使用 256 位 AES CBC 加密进行加密。

 # 用法:maxkeys [PATH]
maxkeys /var/lib/maxscale/

更改 MariaDB MaxScale 的加密密钥将使存储在 maxscale.cnf 文件中的任何当前加密的密钥失效。

# 用法:maxpasswd PATH PASSWORD
maxpasswd /var/lib/maxscale/ MaxScalePw001
61DD955512C39A4A8BC4BB1E5F116705

maxpasswd 命令的输出是一个十六进制字符串,它应该被插入到 maxscale.cnf 文件中来代替普通的纯文本密码。MariaDB MaxScale 会将其确定为加密密码,并在将其发送到数据库服务器之前自动对其进行解密。

默认情况下,密钥文件将在/var/lib/maxscale. 如果需要不同的目录,它可以作为程序的第一个参数。有关更多信息,请参阅maxkeys --help。 创建密钥后,该maxpasswd命令可用于生成加密密码。 maxpasswd plainpassword 96F99AA1315BDC3604B006F427DD9484 用户名和密码,无论是加密的还是纯文本的,都使用user和password参数存储在SERVICE部分中 如果自定义密钥文件位置 ,请将其作为第一个参数传递给 maxpasswd,并将要加密的密码作为第二个参数传递 示例配置。

[My-Service]
type=service
router=readconnroute
router_options=master
servers=dbserv1, dbserv2, dbserv3
user=maxscale
password=96F99AA1315BDC3604B006F427DD9484

如果密钥文件不在默认位置,则datadir必须将该 参数设置为包含它的目录。

4.3功能展示

4.3.1.可以在线更改部分参数

4.3.2. 查看当前server状态

4.3.3.添加新部件

4.3.4.手动切换主从

把当前master为server2的集群 切换主到server1 TheMonitor 表示监视器的名字 maxctrl call command mariadbmon switchover TheMonitor server1 server2

4.3.5.其他

1.暂停、移除 monitor server 2.修改service变量 3.修改server变量 4.修改monitor变量 5.配置service

4.4 query log查询日志

配置范例:

[MyLogFilter] 
type=filter
module=qlafilter
filebase=/tmp/SqlQueryLog
options=ignorecase,case,extended
log_type=unified
log_data=date,user,query,service,session,reply_time,default_db
newline_replacement="LN"
separator=,
flush=true
append=true

[MyService] 
type=service 
router=readconnroute 
servers=server1 
user=myuser 
password=mypasswd 
filters=MyLogFilter     #在服务中使用过滤器

该qlafilter日志可以通过执行 maxctrl rotate logs 这将导致在下一条消息写入文件时重新打开日志文件 常用参数:

filebase

为每个会话创建的输出文件的基本名称。必填

match,exclude和options

这些正则表达式设置会 限制记录哪些查询 查询在到达路由模块的途中到达过滤器时进行匹配。如果 定义了match,则过滤器仅作用于匹配该模式的查询。如果未定义match,则认为所有查询都匹配。 如果定义了exclude,则过滤器仅作用于与该模式不匹配的查询。如果 没有定义exclude,则不排除任何内容。 如果两者都定义了,则查询需要匹配match但不匹配exclude。

match=select.*from.*customer.*where
exclude=^insert
options=case,extended

user和 source

这些可选参数限制会话级别的日志记录。如果user已定义,则仅记录具有匹配客户端用户名的会话。如果 source已定义,则仅记录具有匹配客户端源地址的会话。

user=john
source=127.0.0.1

log_type

要使用的日志文件的类型。默认值为session session 写入特定于会话的文件 unified 对所有会话使用一个文件 stdout 与统一相同,但到标准输出

log_data

要记录在日志文件中的数据类型。 service 服务名称 session 唯一会话 ID date 时间戳 user 客户端的用户名和主机名 reply_time 响应时间 query sql语句 default_db 默认(当前)数据库

flush

每次写入后刷新日志文件。默认值为假

append

将新条目附加到日志文件而不是覆盖它们 默认值为假。

separator

默认值为“,”(逗号)。定义日志条目元素之间的分隔符字符串。该值应括在引号中。

newline_replacement

默认值为“”(一个空格)。SQL 查询可能包括换行符,如果直接打印到日志中,可能会中断自动解析。此参数定义应在换行序列(\r、\n 或 \r\n)位置写入的内容。如果将其设置为空字符串,则不会替换换行符并按原样打印到输出。该值应括在引号中。

newline_replacement="NL"

5.查询脱敏 Masking

参考 https://mariadb.com/resources/blog/sensitive-data-masking-with-mariadb-maxscale/

过滤器仅可以被用于掩蔽以下类型的列:BINARY,VARBINARY,CHAR,VARCHAR,BLOB,TINYBLOB, MEDIUMBLOB,LONGBLOB,TEXT,TINYTEXT,MEDIUMTEXT,LONGTEXT, ENUM和SET。如果列的类型是其他类型,则不会执行屏蔽。

Masking过滤器与以下类型的配置设置一起使用。

[Mask-SSN]
type=filter
module=masking
rules=...

[SomeService]
type=service
...
filters=Mask-SSN

5.1 配置

5.1.1 rules

指定存储屏蔽规则的文件的路径。相对路径是相对于 MariaDB MaxScale的模块配置目录进行解释的。默认模块配置目录是 /etc/maxscale.modules.d

rules=/data/maxscale/rule/test.json

5.1.2 warn_type_mismatch

使用此可选参数,可以指示屏蔽过滤器在屏蔽规则与不属于允许类型之一的列匹配时记录警告。

可以使用的值为neverand always,never是默认值。

5.1.3 large_payload

此可选参数指定掩码过滤器应如何处理大于 的16MB负载 可以使用的值为ignore,这意味着此类有效负载中的列不会被屏蔽,以及abort,这意味着如果遇到此类有效负载,则关闭客户端连接。默认值为abort.

5.1.4 prevent_function_usage

此可选参数指定如果应屏蔽的列与某些函数结合使用时屏蔽过滤器的行为方式。 如果值prevent_function_usage是true,那么这会包含有关蒙面列函数的所有语句将被拒绝。由于这意味着使用潜在无害函数(例如 )的查询也会LENGTH(masked_column)被拒绝,因此可以关闭此功能。

prevent_function_usage=false

5.1.5 require_fully_parsed

如果为 true,则无法完全解析(由于解析器限制)的语句将被阻止 默认值为true。

5.1.6 treat_string_arg_as_field

此可选参数指定屏蔽过滤器应如何处理用作函数参数的字符串。如果为 true,它们将作为字段处理,这将导致字段被屏蔽,默认值为true。

5.1.7 check_user_variables

此可选参数指定屏蔽过滤器在用户变量方面的行为方式。如果为true,则像这样的语句 set @a = (select ssn from customer where id = 1); 如果ssn是应屏蔽的列,则将被拒绝。 默认值为true。

5.1.8 check_unions

此可选参数指定屏蔽过滤器相对于 UNION 的行为方式。如果为真,则像这样的语句 SELECT a FROM t1 UNION select b from t2; 如果b是应屏蔽的列,则将被拒绝。 默认值为true。

5.1.9 check_subqueries

此可选参数指定屏蔽过滤器在子查询方面的行为方式。如果为真,则像这样的语句 SELECT * FROM (SELECT a as b FROM t1) as t2; 如果a是应屏蔽的列,则将被拒绝。 默认值为true。

5.2 规则

屏蔽规则表示为 JSON 对象。 顶级对象应包含一个键,rules其值为规则对象数组 规则阵列中的每个规则是JSON对象,预期含有键replace,with,applies_to和 exempted。前两个是必须的,后两个是可选的。

{ 
        
    "rules": [
        { 
        
            "replace": { 
         ... },
            "with": { 
         ... },
            "applies_to": [ ... ],
            "exempted": [ ... ]
        }
    ]
}

5.2.1 replace

此键的值是一个对象,用于指定应屏蔽其值的列。该对象必须包 column并且可以包含 table和database。这些键的值必须是字符串。

{ 
        
    "rules": [
        { 
        
            "replace": { 
        
                "database": "db1",
                "table": "person",
                "column": "ssn"
            },
            "with": { 
         ... },
            "applies_to": [ ... ],
            "exempted": [ ... ]
        }
    ]
}

可选键match可以部分替换原始值:只有匹配的部分会被填充字符替换。

  "replace": { 
         
                "column": "ssn", 
                "match": "(123)" 
            }, 
            "with": { 
         
                "fill": "X#" 
            }

5.2.2 obfuscate

允许通过混淆算法对值进行混淆。不可逆 虽然原则上不可能从混淆后的值中获得原始值,但如果可能的原始值范围有限,则可以通过混淆算法运行所有可能的值来直接找出可能的原始值,并且然后比较结果。

   "obfuscate": { 
        
                "column": "name"
            }
如:SELECT name from db1.tbl1;`

+------+
| name |
+------+
| $-~) |
+------+

5.2.3 with

此键的值是一个对象,用于指定应为replace规则替换匹配列的值。 该对象应包含 key value或 key fill 如果指定value,则其值用于逐字替换实际值,并且指定值的长度必须与实际返回值(来自服务器)完全匹配。如果长度不匹配,fill则使用的值 来屏蔽实际值。

{ 
        
    "rules": [
        { 
        
            "replace": { 
        
                "column": "ssn"
            },
            "with": { 
        
                "value": "XXX-XX-XXXX"
            },
            "applies_to": [ ... ],
            "exempted": [ ... ]
        },
        { 
        
            "replace": { 
        
                "column": "age"
            },
            "with": { 
        
                "fill": "*"
            },
            "applies_to": [ ... ],
            "exempted": [ ... ]
        },
        { 
        
            "replace": { 
        
                "column": "creditcard"
            },
            "with": { 
        
                "value": "1234123412341234",
                "fill": "0"
            },
            "applies_to": [ ... ],
            "exempted": [ ... ]
        },
    ]
}

5.2.3 applies_to

使用这个可选的键,它的值必须是一个字符串数组,它可以指定规则应用于哪些用户。每个字符串都应该是一个 MariaDB 账户字符串 ,%是一个通配符。

如果未指定此key,则对所有用户执行屏蔽 除了exempted中的用户

{ 
        
    "rules": [
        { 
        
            "replace": { 
         ... },
            "with": { 
         ... },
            "applies_to": [ "'alice'@'host'", "'bob'@'%'" ],
            "exempted": [ ... ]
        }
    ]
}

5.2.4 exempted

使用这个可选的键,它的值必须是一个字符串数组,它可以指定规则不应用于哪些用户。每个字符串都应该是一个 MariaDB 账户字符串, %是一个通配符。

{ 
        
    "rules": [
        { 
        
            "replace": { 
         ... },
            "with": { 
         ... },
            "applies_to": [ ... ],
            "exempted": [ "'admin'" ]
        }
    ]
}

6.MaxScale 2.5更新日志

1.MaxAdmin已被删除。 2.介绍了一个新的基于浏览器的工具MaxGUI,用于配置和管理MaxScale。 3.MaxInfo-router和相关的httpd-protocol已被移除。 4.服务器权重已被移除。 服务现在可以在目标参数的帮助下直接路由到其他服务。 服务器参数protocol和authenticator已弃用。任何定义都会被忽略。 Listeners 支持多个身份验证器。 从服务器的复制延迟现在必须小于max_slave_replication_lag,而在旧版本中,复制延迟必须小于或等于配置的限制。 已弃用全局设置auth_read_timeout和auth_write_timeout。任何定义都会被忽略。 除了Columnstore监视器1.0和1.2之外,Columnstore监视器现在还能够监视Columnstore 1.5。 MariaDB-Monitor支持协作监控。 MaxScale缓存现在可以在两个MaxScale实例之间共享,在这种情况下,memcached或Redis都可以用作缓存存储。此外,缓存现在还可以执行表级失效,并且特定于特定用户。 一个全新的binlog路由器实现。 新的 routers, mirror 和kafkacdc. Service-to-service路由现在可以使用targets参数。 TLS CRL和对端主机验证支持。 causal_reads的多种操作模式。

7.MariaDB MaxScale安装

从MariaDB下载页面下载MaxScale软件包: https://mariadb.com/downloads/#mariadb_platform-mariadb_maxscale 下载: wget https://dlm.mariadb.com/1611664/MaxScale/2.5.11/yum/centos/7/x86_64/maxscale-2.5.11-1.rhel.7.x86_64.rpm 安装: yum -y install maxscale-2.5.11-1.rhel.7.x86_64.rpm 编辑配置文件 - 启动 sudo -u maxscale maxscale -f /data/maxscale/maxscale1.cnf

----二进制包安装-------- mkdir /data/maxscale/ cd /data/maxscale/ wget maxscale-6.2.1.rhel.7.tar.gz 获取包 groupadd maxscale useradd -g maxscale maxscale tar -xzvf maxscale-6.2.1.rhel.7.tar.gz mv maxscale-6.2.1.rhel.7 maxscale

cd maxscale sudo chown -R maxscale var

mkdir /data/maxscale/log/ mkdir /data/maxscale/data/ mkdir /var/lib/maxscale mkdir /var/cache/maxscale

chown maxscale /data/maxscale/log/ chown maxscale /data/maxscale/data/ chown maxscale /var/lib/maxscale chown maxscale /var/cache/maxscale

监视器的用户:

CREATE USER 'monitor_user'@'%' IDENTIFIED BY 'my_password';
GRANT REPLICATION CLIENT,SUPER, RELOAD on *.* to 'monitor_user'@'%';

配置服务用

CREATE USER 'maxscale'@'%' IDENTIFIED BY 'maxscale_pw';
GRANT SELECT,SHOW DATABASES ON *.* TO 'maxscale'@'%';

环境变量配置 vim /etc/profile.d/maxscale.sh

PATH=$PATH:/data/maxscale/maxscale/bin
export PATH

刷新环境变量配置 source /etc/profile

使用systemd管理maxscale vim /usr/lib/systemd/system/maxscaled.service

[Unit]
Description=maxscale Server
After=network.target
After=syslog.target

[Service]
User=maxscale
Group=maxscale
PIDFile=/data/maxscale/maxscale.pid
ExecStart=/data/maxscale/maxscale/bin/maxscale -f /data/maxscale/maxscale.cnf --basedir=/data/maxscale/maxscale
Restart=on-failure
RestartPreventExitStatus=1
TimeoutSec=0
PrivateTmp=false
LimitNOFILE=50000

[Install]
WantedBy=multi-user.target

刷新生效 systemctl daemon-reload

7.1 数据库账户授权:

CREATE USER 'maxscale'@'%' IDENTIFIED BY '1234567';
GRANT SHOW DATABASES ON *.* TO 'maxs

标签: 1e计数继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台