为了实验目的,我设置了一个 Mariadb Maxscale(1 个主服务器和 2 个副本)复制集群。据我所知,使用 Maxscale 的主要目的是决定查询哪个服务器。因此,我不确定如何将我的 DBI 查询定向到 Maxscale 而不是特定服务器。
我通常使用 Perl DBI 以以下方式连接数据库;
my $dbh = DBI->connect("DBI:mysql:database=$db_name};$server",$user,$passwd);
有人能告诉我如何使用 Maxscale 做到这一点吗?
maxctrl list servers
┌─────────┬─────────────┬──────┬─────────────┬─────────────────┬──────────┬─────────────────┐
│ Server │ Address │ Port │ Connections │ State │ GTID │ Monitor │
├─────────┼─────────────┼──────┼─────────────┼─────────────────┼──────────┼─────────────────┤
│ server1 │ 192.168.0.2 │ 3306 │ 0 │ Master, Running │ 0-2-1438 │ MariaDB-Monitor │
├─────────┼─────────────┼──────┼─────────────┼─────────────────┼──────────┼─────────────────┤
│ server2 │ 192.168.0.3 │ 3306 │ 0 │ Slave, Running │ 0-2-1438 │ MariaDB-Monitor │
├─────────┼─────────────┼──────┼─────────────┼─────────────────┼──────────┼─────────────────┤
│ server3 │ 192.168.0.4 │ 3306 │ 0 │ Slave, Running │ 0-2-1438 │ MariaDB-Monitor │
└─────────┴─────────────┴──────┴─────────────┴─────────────────┴──────────┴─────────────────┘
我似乎能够按照以下方式连接:
$ mysql -h 192.168.0.1 -umaxscale -ppasswd -P4006 -e 'SHOW DATABASES;'
+--------------------+
| Database |
+--------------------+
| admin |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
我只是想不明白如何通过 Perl DBI 成功查询。
MaxScale 只是一个代理,因此您应该能够像通常连接 MariaDB 一样进行连接:
您只需确保您的 DBI 瞄准 MaxScale 主机和端口。