问题标签 [proxysql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 过程调用无法通过 ProxySql 工作,错误 MySql.Data.MySqlClient.MySqlException (0x80004005): 表 'mysql.proc' 不存在
我有两个用于 mysql 的 RDS 实例,1 个主节点和 1 个复制从节点。我已经设置了一个监听 6033 端口的 ProxySql EC2 实例,它将所有写入请求路由到主节点,并将所有读取请求路由到从节点。
在我的 .NET 代码中,如果我执行简单的内联查询,例如“select * from tableX;” 然后它通过 ProxySql EC2 实例执行,但是当我将此语句放在一个过程中并通过 c# 代码调用该过程时,它会引发错误:
MySql.Data.MySqlClient.MySqlException (0x80004005): 表 'mysql.proc' 不存在
我正在使用 MySql.Data 8.0.13 nuget 包进行数据库交互。AWS RDS 上的 Mysql 版本是 8.0.13。
在 .NET 应用程序中,连接字符串是:
服务器=xxx.amazonaws.com;端口=6033;用户=xxx;数据库=abc;密码=xxxx;字符集=utf8mb4;
此外,如果我通过 SqlYog 连接,我可以执行该过程而不会出现任何错误,但使用 .NET 则无法正常工作。
proxysql - Proxysql - 请帮我澄清“规则链”功能
我是 proxysql 的新手,这是我的环境: Centos 7 , proxysql-1.4.13 。我定义了 2 个主机组 id:主机组 id 2 用于可写入的 mysql 服务器,主机组 id 3 用于可读取的 mysql 服务器。
所有以 insert、update、delete、alter 开头的查询都应该路由到主机组 id 2。
所有以 select 开头的查询都应该路由到主机组 id 3。所以这是我的规则:
他们工作正常。顺便问一下,这些规则可以吗?我应该用 match_pattern 替换 match_digest 吗?
但是,我的应用程序有 1 个功能,可以将数据插入表中(创建预订),然后从该表中选择(几乎立即)新数据。因此,如果选择查询失败(因为新数据尚未复制到主机组 id 3),应用程序功能将运行错误。
我想在将查询插入到主机组 id 2 后立即路由选择查询,以便成功获取新数据。
我阅读了 proxysql 文档https://github.com/sysown/proxysql/wiki/Main-(runtime)#mysql_query_rules和这个讨论https://github.com/sysown/proxysql/pull/825,我认为这是解决方案我,不是吗?我仍然不清楚这些 flagIN、flagOUT、next_query_flagIN、sticky_conn 的东西,但我会试一试。
我知道插入查询摘要是 0xCDD6DB677604AFA7
选择查询摘要是 0x0DCD2E8ADF6A66CB 然后我添加 2 个新规则:
它们工作正常,插入查询后的选择查询路由到主机组 id 2,因此它成功获取新数据并且应用程序功能运行正常。
但我做得对吗?我很困惑,因为 stats_mysql_query_rules 结果:在应用程序功能运行之前:
应用程序功能运行后(10 个预订):
为什么 rule_id 101 命中率从 33 --> 43 增加?所以 rule_id 101 (match_digest ^insert) 也匹配应用程序功能中的插入查询?这是否意味着我做错了?
mysql - 带有记录所有查询的 mysql 的 Docker Basic Proxysql
我希望在本地使用 Docker 设置 proxysql 和 mysql,这样我就可以使用类似的东西流式传输所有传出日志(包括任何失败的日志)
这样我就可以调试查询等。我取得了很好的进展。我的 docker compose 文件看起来像这样
我的 sqlproxy Dockerfile看起来像这样
所以我可以通过 ssh 进入 proxysql 容器,并且可以验证我可以从 proxysql 容器内部连接到 db 容器。
通过运行此命令。注意 db 是 mysql 容器的名称
我可以通过运行以下命令来启动 proxysql
就在我的问题之外。
1)如何从本地机器通过代理连接到数据库?我的想法是这样的吗?
2)如何在proxysql容器上配置sqlproxy?我查看了默认/etc/proxysql.cnf
文件,这让我有点困惑?我在这里复制了配置,我认为值应该是什么?
mariadb - ProxySQL 给我错误 Access denied for user
我在我的服务器中安装了 ProxySQL。
服务器详情:CentOS Linux 版本 7.5.1804(核心)
ProxySQL 版本:proxysql-2.0.2-1-centos7.x86_64.rpm MaridaDB 版本:Distrib 10.3.7-MariaDB
一切正常,但我随机遇到以下问题。
mysql - 重启 EC2 实例后如何保留 ProxySQL 的配置?
我已按照此处的教程进行操作,并在 Ubuntu AWS EC2 实例上设置了 ProxySQL v2.0.2 服务。
困扰我的一件事是,在 EC2 实例重新启动后,ProxySQL 的配置消失了。
例如,在 EC2 实例重新启动之前,SELECT * FROM mysql_servers;
返回我添加到 ProxySQL 的后端数据库。但是EC2重启后,SELECT * FROM mysql_servers;
返回一个空集。而且我必须重新配置 ProxySQL 以允许客户端通过 ProxySQL 连接到数据库。
EC2 实例重启后如何保留 ProxySQL 配置?
为什么命令不能SAVE MYSQL VARIABLES TO DISK;
保留配置?
我使用admin interface
.
我试过在文件mysql_users
部分添加服务器/etc/proxysql.cnf
。但似乎完全没有效果。这很奇怪。
regex - 多列的 ProxySQL 数据屏蔽
我想屏蔽my_table
使用 ProxySQL 命名的表中多个列的敏感信息。
我已按照本教程column_name
使用以下方法成功屏蔽了表中命名的单个列mysql_query_rules
:
但是,当我添加第二条规则来屏蔽表中调用second_column_name
的另一列时,proxysql 无法屏蔽第二列。这是第二条规则:
添加2条规则后的查询结果如下:
SELECT column_name FROM my_table;
返回一个蒙面的column_name
.
SELECT second_column_name FROM my_table;
返回一个蒙面的second_column_name
.
SELECT column_name, second_column_name FROM my_table;
返回带column_name
掩码但未second_column_name
掩码的数据。
SELECT second_column_name, column_name FROM my_table;
还返回带column_name
掩码的数据,但未second_column_name
掩码。
这是否意味着 1 个查询只能与 1 个规则匹配?
如何使用 ProxySQL 屏蔽多列中的数据?
proxysql - 从 PHP 连接到 Proxysql 使用什么凭据和端口
我正在创建一个连接到 proxysql 的应用程序。所有集群都是通过 proxysql 配置的,但是我应该在我的应用程序中使用什么凭据和端口来连接到 proxysql?
google-app-engine - 如何使用 Google App Engine 和 Google Cloud SQL 进行数据库自动伸缩?
我正在尝试使用 Flask 和 MySQL 在 Google App Engine 标准环境中设置网络应用程序。
我知道 Google App Engine 能够根据所需的性能动态扩展它的实例,但我不确定如何为我的 MySQL 服务器做到这一点。
对于 MySQL 连接,我尝试连接到 Google Cloud SQL。我知道这对单个实例是如何工作的,但我想知道是否可以连接多个实例,从而允许在使用相同数据的同时动态扩展我的存储。
到目前为止,我已经通过此链接找到了如何在 Google 计算引擎实例和 Google Cloud SQL 上执行此操作的信息,但无法了解这将如何在 Google App Engine 标准环境中工作。
mysql - 是否可以要求 ProxySQL 在读取时使用特定的 GTID?
我们有一个应用程序向 ProxySQL 发出写入,然后立即读取可能会受到写入的影响。ProxySQL 后面是四台 MySQL 服务器——一台写入器和三个从写入器复制的读取器。
现在,ProxySQL 能够通过记录原始写入的 OK 数据包中发回的 GTID 和读取器的 binlog 提要来确保它选择一个“最新的”读取器,以确保它选择一个已经执行写入的读取器。
我们的问题是,由于我们的拓扑结构,读取实际上可能在与写入不同的连接上到达 ProxySQL。因此,“读取”连接可能持有较旧的 GTID,因此可能会选择尚未发生写入的“非最新”读取器。
如果可以告诉 ProxySQL 确保阅读器使用“指定”GTID(我们自己从 OK 数据包中解析出来的)而不是连接上的 GTID,我们可以看到一个可能的解决方案,但我们没有知道我们是否可以这样做 - 我在文档中看不到任何内容。
任何关于可行解决方案的想法都将受到欢迎!
我们正在使用带有 ProxySQL 版本 2.0.3-29-g00f26d5 的 mySQL 5.7.25。
我们目前的结果是我们经常执行写入然后执行读取,但读取返回写入之前存在的状态。
mysql - NodeJS mysql 模块将 localhost 转换为 127.0.0.1 并且连接失败
我正在使用该mysql
包连接到设置为连接到 MySQL 数据库的 ProxySQL。从命令行,以下工作:
但是,这不起作用。
这是错误信息。
用户被创建为
我尝试添加另一个用户'demo'@'127.0.0.1'
并为其授予权限;没用。
如何保留上面的定义并mysql
返回成功的连接?