MySql问题:只读(The MySQL server is running with the --read-only ......)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql问题:只读(The MySQL server is running with the --read-only ......)相关的知识,希望对你有一定的参考价值。

ERROR 1290 (HY000): The mysql server is running with the --read-only option so it cannot execute this statement

数据库服务器是linux, 新建了一个用户,给了它select,insert,update,delete权限,但是使用这个用户通过windows命令行访问数据库,只能查询,不能删除、更新及插入。
grant select,insert,update,delete on [db].* to [user]@ip

参考技术A set global read_only=off 参考技术B grant命令发上来一下

AWS RDS MySQL 只读副本滞后问题

【中文标题】AWS RDS MySQL 只读副本滞后问题【英文标题】:AWS RDS MySQL Read Replica Lag Issues 【发布时间】:2014-05-04 04:06:44 【问题描述】:

我运行的服务需要能够支持大约 4000+ IOPS 并保持副本延迟

我正在使用 AWS RDS MySQL 实例并且有 2 个只读副本。我的服务在只读副本上遇到了巨大的副本延迟峰值,因此我与 AWS 支持人员联系了一周,试图了解我遇到延迟的原因——我预置了 6000 IOPS,并且我的实例非常强大。他们给了我各种各样的理由。

更改实例类型后,从 5.5 升级到 MySQL 5.6 以利用多线程,并且它们替换了底层硬件,我仍然随机看到明显的副本延迟。

最终,我决定开始修改参数组,将我的配置更改为只读副本的任何我能找到的与复制过程有关的东西,现在终于体验到

以下是我更改的设置及其看似成功的值(我复制了默认的 mysql 5.6 参数组并将这些值更改为仅将更新的参数组应用于只读副本):

innodb_flush_log_at_trx_commit=0
sync_binlog=0
sync_master_info=0
sync_relay_log=0
sync_relay_log_info=0

请阅读其中的每一项以了解修改的影响:http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html

其他需要注意的事项:

Convert any MyISAM tables to InnoDB
Upgrade from MySQL < 5.6 to MySQL >= 5.6
Ensure that your provisioned IOPS are > the combined read/write IOPS you require
Ensure that your read replica instances are >= master instance

如果其他人有任何其他参数可以在只读副本或主数据库上进行修改以获得最佳复制性能,我很乐意听到更多信息。

2014 年 7 月 8 日更新

为了利用我设置的 Mysql 5.6 多线程复制:

slave_parallel_workers=5 (Set it to the number of read replica DBs you have running)

我在这里找到了这个:

https://blogs.oracle.com/MySQL/entry/benchmarking_mysql_replication_with_multi

【问题讨论】:

您能否澄清“确保您的只读副本实例 >= 主实例” - 您是指实例类吗? 是的,如果不是更大,请确保实例类至少相同 【参考方案1】:

Mysql 复制按顺序执行单个数据库上的所有事务,而 master - 可以并行执行这些事务。

您可能在单个 DA 上执行了大部分更新,这就是不允许您利用多线程复制的原因。

检查您的副本服务器上的iostat。大多数情况下,这些问题是由于机器上的高 IO 而发生的。

为了减少机器上的 IO - 您可以进行一些额外的更改:

增加innodb_buffer_pool_size - 这是您应该更改默认值的第一件事。如果此实例仅运行 mysql - 您可以在此处分配大约 80% 的可用内存。

还要验证以下参数:

 log_slave_updates = false
 binlog_format = STATEMENT

(如果您配置了 MIXED 或 ROW binlog_format - 请确认您从此处了解这意味着什么 http://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html

如果你有很多数据被多次更改 - 增加

innodb_max_dirty_pages_pct 到 90 或 95% 值得检查。

【讨论】:

以上是关于MySql问题:只读(The MySQL server is running with the --read-only ......)的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB serv

mysql数据库全局只读和会话只读问题解析

php artisan serve - 如何让mysql运行

远程连接mysql root账号报错:2003-can't connect to MYSQL serve

对远程 MySql 数据库的 MS Access 只读

远程登陆mysql报错:ERROR 1130 (HY000): Host '10.0.0.8' is not allowed to connect to this MySQL serv