我的应用程序连接到两个MySQL5.6(实际上是AmazonAurora)实例的故障转移集群。主动节点始终是可写访问的,而被动节点在read_only中运行模式(这不同于规范的MySQL故障转移集群,默认情况下所有从节点都是可写访问的)。AmazonRDS提供一个符号DNS名称,它始终指向ActivityMySQL节点的IP地址。在故障转移过程中,之前的主节点以read_only模式重新启动,而之前的被动节点变为可写访问并提升为主节点。此外,DNS记录已更改,因此集群的DNS名称现在指向新的主节点。即使我在Java端完全禁用DNS缓存(通过sun.net.inetaddr.ttl或ne
我们正在使用Java/Spring/Ibatis/MySql。这些技术是否有办法在应用程序级别管理只读连接。我希望在具有只读MySql用户的基础上添加额外的保护层。如果BasicDataSource或SqlMapClientTemplate提供只读连接的配置就好了。否则,似乎我只剩下MySql读取用户并强制使用仅读取方法的接口(interface)。谢谢 最佳答案 例如Connection#CreateStatement可以带参数statement=connection.createStatement(ResultSet.TYPE_
我想在AmazonRDS上的数据库中为MySQL表添加索引,但我不想在创建索引时停止使用数据库。这answer建议使用只读副本提升,首先在只读副本上创建索引,然后提升只读副本。我创建了一个只读副本来尝试这种方法,但是当我尝试更改只读副本上的索引时,我得到了ERROR1290(HY000):TheMySQLserverisrunningwiththe--read-onlyoptionsoitcannotexecute这个声明。我该怎么做才能编辑只读副本,这会阻止Amazon继续更新只读副本以匹配主数据库吗? 最佳答案 默认情况下,只读
是否可以/建议创建只能访问RDSMySQL只读副本而不能访问主数据库服务器的用户?我有一些super用户,我想授予访问权限,以便他们可以运行运行缓慢的查询,但不想让他们访问主生产数据库本身。尝试直接在服务器上执行此操作,我得到ERROR1290(HY000):TheMySQLserverisrunningwiththe--read-onlyoptionsoitcannotexecutethisstatement,所以我猜我必须这样做它在数据库参数组或类似的地方。无论如何,想法? 最佳答案 您不应仅在只读副本中创建用户。对于RDS来说
我们有一个用于归档旧数据的大型MyISAM表。这种归档每月执行一次,除了这些情况外,数据永远不会写入表中。无论如何要“告诉”MySQL这个表是只读的,以便MySQL可以优化从这个表读取的性能?我查看了MEMORY存储引擎,但问题是该表太大以至于它会占用服务器内存的很大一部分,这是我不想要的。希望我的问题足够清楚,我是数据库管理方面的新手,所以欢迎任何意见或建议。 最佳答案 而不是取消和重新压缩历史表:如果你想访问单个表的历史,你可以使用合并表来组合压缩的只读历史表。因此假设您有一个事件表和具有相同表结构的压缩历史表,您可以使用以下方
我最近遇到了RDS只读副本崩溃,因此需要启动一个新的只读副本。现在我在那里有两个只读副本。我想删除失败的那个。只是终止的情况吗?它对主控或其他只读副本有影响吗?以前从来没有这样做过,所以想确保我这样做是正确的 最佳答案 这应该是一个绝对安全的操作,但是为您的主服务器(或者甚至是其他副本,如果它在线、正在复制和同步)拍摄最后一分钟的快照不会有什么坏处。在MySQL复制中,主服务器和副本服务器之间的连接是从副本(“从服务器”)服务器端发起的——如果一个副本服务器离线,主服务器将关闭连接并继续其业务;副本消失对主人来说基本上没有风险,即使
我有一个MySQL主实例和一个只读从实例。我想在两个实例中分别维护用户和权限。master上的mysql模式不会复制到slave。问题是从实例上的用户由于只读状态而不允许更改他们的密码。给予这些用户SUPER权限是不合适的,即使是暂时的,只是为了更改他们的密码。有没有办法使MySQL只读,但在逐个模式的基础上,而不是在实例范围内?我只希望我的问题空间中的数据是只读的。不是我的解决方案空间(数据库用户、数据库权限等)。 最佳答案 read_only仅在用户没有SUPER权限时有效。你可以试试这个:创建一个存储过程来更改密码在您的过程中
我正在将数据导入到future的数据库中,该数据库将包含一个静态MyISAM表(只能从中读取)。我选择MyISAM是因为据我所知,它可以更快地满足我的要求(我对MySQL/SQL一点经验都没有)。该表将包含各种列,例如ID、姓名、性别、电话、状态...以及国家/地区、城市、街道列。现在的问题是,我应该为最后3列创建表(例如Country:Country_ID、Country_Name)并通过ID在主表中引用它们(规范化...[?]),还是将它们作为VARCHAR存储在主表(显然有重复)?我主要关心的是速度——因为不会写入表,所以数据完整性不是优先事项。唯一的操作是选择特定行或搜索符合特
我正在尝试创建一个只能从数据库中读取的用户。这是phpMyAdmin上的用户创建屏幕。对于第一组(Data),我想我只需要SELECT。但我不确定第二组和第三组(Structure和Administration)。EventTriggerExecute等一些选项有点令人困惑。我需要那些只读用户吗?我究竟需要启用/禁用什么? 最佳答案 如果用户只能读取数据库,则不应授予他们任何“结构”或“管理”下列出的权限。 关于php-在phpMyAdmin中创建一个只读用户,我们在StackOverf
我已经针对MySQL打开了一个错误报告http://bugs.mysql.com/bug.php?id=70793&thanks=4.这里有一个代码示例可以证明这个错误。我发现错误报告中还包含一个解决方法。此解决方法适用于PHP和控制台我在存储过程和PHPPDO方面遇到了一个奇怪的问题。我不允许发布存储过程的主体,但我可以提供以下信息。当从控制台与PHPPDO共享的相同用户访问时,它在只读副本上正常工作--编辑:我在这里的初始报告是部分不正确,如果临时表存在,存储过程将工作;如果临时表在控制台和pdo环境中都不存在,则存储过程将失败。有关详细信息,请参阅链接到MySQL的错误报告。我已