对于“并发插入”,MySQL参考手册有如下解释:
MyISAM 存储引擎支持并发插入,以减少给定表的读写器之间的争用:如果 MyISAM 表在数据文件中没有空洞(中间删除了行),则可以执行 INSERT 语句将行添加到最后SELECT 语句从表中读取行的同时。
http://dev.mysql.com/doc/refman/5.5/en/concurrent-inserts.html
假设我们的数据库“并发插入”参数设置为“自动”(1)。
我们有一个有间隙的 MyISAM 表。当我们插入新行并填补这些空白时,表是否“立即”准备好接受未来插入查询的“并发插入”?
或者我们是否需要在表知道没有间隙之前运行“优化”?
我需要运行一个查询来查找和替换 mysql 数据库的所有表中的一些文本。
我找到了这个查询,但它只在 tbl_name 表和列字段中查找文本。
update tbl_name set column=REPLACE(column, 'fuschia', 'fuchsia');
Run Code Online (Sandbox Code Playgroud)
我需要它来查看所有表和所有字段:(数据库中的任何地方)
我的 mysql_slave 陷入了一个错误,并累积到 200,000+ Seconds_Behind_Master。我应该重建它并从头开始,还是让它自己赶上?
我们使用 Percona 的 pt-table-checksum 进行 MySQL 复制完整性检查。
是否可以使用某种配置文件传递部分或全部选项?
例如,我们可以在文件中写入我们想要检查的表列表吗?
我理解的手册没有讲这样的文件:http : //www.percona.com/doc/percona-toolkit/2.1/pt-table-checksum.html
我有两个 MySQL 实例,一个 master 和一个 slave。
如何在避免停机的同时切换它们以使从站成为主站,反之亦然?
GRANT ALL ON my-database.* TO my-user@10.0.0.1 IDENTIFIED BY 'password';
ERROR 1046 (3D000): No database selected
Run Code Online (Sandbox Code Playgroud)
好的,我创建了一个名称上带有“-”的数据库(对用户做了同样的事情)……然后当我尝试在其上设置授权时,数据库将无法工作。
如果我使用基础错误是不同的
MariaDB [(none)]> use my-base
Database changed
MariaDB [my-base]> GRANT ALL ON 'my-base'.* TO 'my-user'@'10.0.0.1' IDENTIFIED BY 'password';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''my-base'.* TO 'my-user'@'10.0.0.1' IDENTIFIED BY 'password'' at line 1
MariaDB [my-base]>
Run Code Online (Sandbox Code Playgroud) 我正在从 Ubuntu 服务器安装运行 Percona-Server 实例。我正在使用一个需要访问这个数据库的应用程序,它的性能非常差。一旦建立了数据库,应用程序就会进入(安装时)并创建模式。它将所有内容默认为 MyISAM,但是我已将表引擎转换回 InnoDB。我遇到的问题是插入性能非常差。这个应用程序的写入量非常大,似乎它一次将每一行 1 写入磁盘,而不使用任何类型的缓冲区,但是我不确定如何检查或验证这一点。即使从其中一个表中选择(*)也需要 2.4 秒,并且只有 163,000 行。我有点不知所措,我还能做什么。
服务器有 8GB 的内存,在发生这种情况时 CPU 几乎完全空闲。
我的.cnf:
[mysql]
# CLIENT #
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld]
# GENERAL #
user = mysql
default_storage_engine = InnoDB
socket = /var/run/mysqld/mysqld.sock
pid_file = /var/run/mysqld/mysqld.pid
# MyISAM #
key_buffer_size = 32M
myisam_recover = FORCE,BACKUP
# SAFETY #
max_allowed_packet = 16M
max_connect_errors = 1000000
skip_name_resolve
sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate_is_now = 1
innodb = FORCE
innodb_strict_mode = 1
# DATA STORAGE # …Run Code Online (Sandbox Code Playgroud) 我在下面RPM_UPGRADE_HISTORY的/var/lib/mysql
MySQL RPM upgrade to version 5.6.10-1.linux_glibc2.5
'pre' step running at Fri Mar 15 15:41:26 EDT 2013
ERR file(s):
-rw-r----- 1 mysql root 1725 2013-03-15 13:45 /var/lib/mysql/mysql.err
Run Code Online (Sandbox Code Playgroud)
我检查了错误文件以找到以下信息:
2013-03-15 15:43:22 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-03-15 15:43:22 11993 [Note] Plugin 'FEDERATED' is disabled.
2013-03-15 15:43:22 11993 [Note] InnoDB: The InnoDB memory heap is disabled
2013-03-15 15:43:22 11993 [Note] InnoDB: Mutexes and rw_locks use …Run Code Online (Sandbox Code Playgroud) 我们正在使用 MySQL。我们有一个 master,最终会有 2 个 slave。当某些表中的数据发生变化时,数据库中有触发器会执行。我想知道是否禁用奴隶中的触发器。在我看来,我应该。似乎应该在从站中禁用时间戳之类的东西,否则从站上的数据将与主站上的数据不同。
我不是 DBA,我是开发人员。我们公司没有 DBA,所以运营管理员和我正在解决这个问题。我们已经设置并复制了主站和一个从站,我们在从站上遇到了重复输入错误。
我们正在考虑不要因为重复的复制错误而停止复制,如这篇文章所示:http : //www.ducea.com/2008/02/13/mysql-skip-duplicate-replication-errors/。我们不知道这是否是个好主意。我确实觉得这掩盖了问题,但我们都不知道如何解决问题。
如果我们应该禁用触发器和/或设置从属设备不插入时间戳,我们该怎么做?还是将 db 建立为从站会自动执行这些操作?
我正在将 Windows 中的 JIRA 从 HSQL 迁移到 MySQL,但我遇到了消息Unknown system variable 'storage_engine'。虽然我创建了一个备份,安装了 MySQL 并将 J 连接器复制到了 JIRA 的库中。
然后我设置系统变量storage_engine = InnoDB并重新启动机器,但消息仍然存在。
你能指点我一个好的方向吗?