AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-40876

IGGt's questions

Martin Hope
IGGt
Asked: 2023-04-14 18:40:36 +0800 CST

如何从 mysql JSON 列访问 JSON 数据

  • 5

我在 MySQL 的 JSON 字段中有以下条目,如何访问 wid_1 -> pct_usage 数据?

{ "wid_1": { "cof": 1, "pct_usage": 50.0, "tid": 69285334, "wid": 1 }, "wid_2": { "cof": 1, "pct_usage": 50.0, "tid": 69285335, "wid": 2 } }

我尝试了各种变体:

json_unquote(json_extract(s.`col_name`,'$.wid_1'.'pct_usage')) as wid_1_pct,
json_unquote(json_extract(s.`col_name`,'$.wid_1','pct_usage')) as wid_1_pct,
json_unquote(json_extract(s.`col_name`,'$.wid_1'{'pct_usage'})) as wid_1_pct, 
json_unquote(json_extract(s.`col_name`,'$.wid_1','{pct_usage}')) as wid_1_pct,

但它们都不起作用。

mysql
  • 1 个回答
  • 18 Views
Martin Hope
IGGt
Asked: 2022-08-25 03:48:28 +0800 CST

MySQL 从字符串中间删除引号,同时保持字符串的其余部分完好无损

  • 1

我的表中有一些字段包含类似于以下的数据:

{"item1":"stuff","item2":"12345","item3":0,"item4":"this field contains some data that has "quotes" in it that need to be removed","item5":"some other stuff","item6":"","item7":"","item8":"a.b.c.d.e.f"}

我需要更新数据以删除该item4部分的引号,同时保持其余数据不变。

例如这个:

"item4":"this field contains some data that has "quotes" in it that need to be removed"

需要变成:

"item4":"this field contains some data that has quotes in it that need to be removed"

我可以通过以下方式毫无问题地删除引号:

SET @dataval =('{"item1":"stuff","item2":"12345","item3":0,"item4":"this field contains some data that has "quotes" in it that need to be removed","item5":"some other stuff","item6":"","item7":"","item8":"a.b.c.d.e.f"}');

select REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(@dataval,'"item4":"',-1),'","item5"',1),'"','');

但是,当然,这会丢失数据的重置。

有没有办法在一个查询中执行此操作,还是我需要执行一些操作,例如将数据复制到临时表中,删除引号,然后REPLACE使用修改后的数据对原始数据执行操作?

mysql mysql-5.7
  • 1 个回答
  • 36 Views
Martin Hope
IGGt
Asked: 2022-05-06 05:49:56 +0800 CST

如何将 Debian 10 上的 mysql 从 8.029 降级到 8.02x

  • 1

我在我的测试服务器(Debian 10)上安装了 MySQL。我最近将它更新到最新版本(8.0.29),但它存在一些问题,所以我想回到旧版本(8.0.28)。但我无法为我的生活弄清楚如何做到这一点。

我已删除现有数据库,并尝试使用以下方法重新安装它:

apt-get install mysql-server=8.0.28-1debian10

但这没有用,并建议我运行:

apt --fix-broken install

当然,它再次将其升级到最新版本。

我已经尝试了很多变体,但都导致mysql-server can't be found或类似的错误。

我一直在网上搜索,似乎有很多人问类似的问题,但没有真正的解决方案。甚至官方的 MySQL 文档也掩盖了这一点。

可以做到吗?如果是这样,怎么办?它只是一个测试数据库,所以我对废弃它并重新开始没有任何问题。

mysql mysql-8.0
  • 2 个回答
  • 230 Views
Martin Hope
IGGt
Asked: 2022-01-22 06:29:09 +0800 CST

Inndob Cluster - 自动收集 mysqlsh 的输出?

  • 1

有没有办法从 mysqlshell 获取输出并在脚本或类似文件中使用它。

我已经建立了一个用于测试的基本集群(3 x MySQL 8.0.27 数据库,在 Debian 11 上运行)。

我现在正试图找到一种从 mysqlshell 的cluster.status()输出中捕获输出的方法。

例如,从 mysqlshell 内部我可以运行:

cluster=dba.getCluster()
cluster.status().defaultReplicaSet.topology['test-1:3306'].replicationLag

获取当前的复制延迟。我想捕获它,以便可以自动监控它。

我假设这些统计数据中的大多数也将存在于某处的performance_schemaormysql_innodb_cluster_metadata数据库中,但我看不到它们。

有没有办法做到这一点?

mysql mysql-8.0
  • 1 个回答
  • 42 Views
Martin Hope
IGGt
Asked: 2021-11-11 04:38:11 +0800 CST

exitStateAction 在 MySQL INNODB Cluster 上未按预期工作

  • 0

我正在设置和测试一个Innodb Cluster. 到目前为止,我有三个运行 8.0.27 的节点和两个路由器都工作正常。

我现在想测试如果网络连接突然消失会发生什么。

我设置了所有三个节点:

"autoRejoinTries", "3"
"exitStateAction","OFFLINE_MODE"
"expelTimeout":"5"

因此,当我使用以下命令从节点 3 中删除网络连接时:

ifdown eth0

我看到它从集群中消失并显示为:

"status": "UNREACHABLE",

在服务器本身上它说:

"Cluster has no quorum and cannot process write transactions: Group has no quorum"

但我期待数据库会进入offline_mode. 但是当我检查时,它仍然说它已关闭:

SELECT @@GLOBAL.offline_mode;
+-----------------------+
| @@GLOBAL.offline_mode |
+-----------------------+
|                     0 |
+-----------------------+

我错过了什么,或者误解了什么"exitStateAction","OFFLINE_MODE"意思?

mysql mysql-8.0
  • 1 个回答
  • 46 Views
Martin Hope
IGGt
Asked: 2021-07-16 07:34:52 +0800 CST

从bash脚本中执行mysqlshell?可能吗?

  • 2

我正在为数据库编写备份脚本并想使用 mysqlshellutil.dumpSchemas()实用程序。

但是我到底怎样才能让它在 shell 脚本中工作呢?

我的基本流程是这样的:

filename_1: backup.sh
. . .
mysqlsh --file mysqlshell_backup.js


filename_2: mysqlshell_backup.js
\connect backup_user:<password>@127.0.0.1:3306
util.dumpSchemas(<options........>)
\q

但是当我运行它时,我得到的只是错误:

SyntaxError: Invalid or unexpected token at mysqlshell_backup.js:2:0
in \connect backup_user:<password>@127.0.0.1:3306

但如果我手动运行代码,例如:

mysqlsh
MySQL  JS > \connect backup_user:<password>@127.0.0.1:3306

它工作正常。

MySQL  127.0.0.1:3306 ssl  JS > 

我尝试使该文件本身成为可执行文件,并通过添加以下内容自行运行它:

#!/usr/local/mysql-shell/bin/mysqlsh --file
\connect backup_user:<password>@127.0.0.1:3306
util.dumpSchemas(<options........>)
\q

但后来我得到:

mysqlshell_backup.js: line 2: connect: command not found
mysqlshell_backup.js: line 3: syntax error near unexpected token `[<options>],'
mysqlshell_backup.js: line 3: `util.dumpSchemas(<options>)

但同样,如果我直接从 mysqlshell 中运行它,代码工作正常,所以我知道没有语法错误。

实际上有没有办法将 mysqlshell 命令作为更大脚本的一部分运行,或者我只是在这里浪费时间?

mysql bash
  • 1 个回答
  • 286 Views
Martin Hope
IGGt
Asked: 2019-07-30 07:39:12 +0800 CST

MySQL,组复制在一次重启后无法生存

  • 1

谁能看到我哪里出错了,因为这正在驱使我转弯。

我已经在我的 Windows 10 笔记本电脑上安装了全新的 MySQL 8.0.17。我已经完成了整个initialize过程,登录并设置了root用户并将其设置为服务。

my.ini 文件包含(其中包括):

port = 3306
server-id = 8306
binlog_format = row
relay-log-info-repository = TABLE
master-info-repository = TABLE
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_checksum = NONE

到目前为止,一切都很好。我登录,一切正常。

接下来我关闭 MySQL,并将以下内容添加到 my.cnf 文件中。

#GROUP REPLICATION#
loose-transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="1587d451-feca-11e8-a7b3-c85b768dc0dd"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:33061"
loose-group_replication_group_seeds= "127.0.0.1:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_member_weight=100
loose-group_replication_ip_whitelist="169.254.243.231"

添加最后一个条目是因为之前的尝试抱怨它不在白名单中。

我再次重新启动 MySQL。

现在我开始设置组复制。

SET SQL_LOG_BIN=0;
CREATE USER 'GReplication'@'%' IDENTIFIED WITH 'mysql_native_password' BY '@Replication123';
GRANT REPLICATION SLAVE ON *.* TO 'GReplication'@'%';
SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER='GReplication', MASTER_PASSWORD='@Replication123' FOR CHANNEL 'group_replication_recovery';

INSTALL PLUGIN group_replication SONAME 'group_replication.dll';
SHOW PLUGINS;

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

SELECT * FROM performance_schema.replication_group_members;

这显示了一个活跃的成员。

MySQL  localhost:3306 ssl  SQL > SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 454b0127-b204-11e9-a032-c85b768dc0db | pc12345     |        3306 | ONLINE       | PRIMARY     | 8.0.17         |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
1 row in set (0.0005 sec)

我现在将 my.ini 文件中的以下行更改为“on”

loose-group_replication_start_on_boot=on

并重新启动 MySQL。

但是,当我检查时,我现在得到:

MySQL  localhost:3306 ssl  SQL > SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 454b0127-b204-11e9-a032-c85b768dc0db | pc12345     |        3306 | OFFLINE      |             |                |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
1 row in set (0.0005 sec)

查看错误日志,一切似乎都运行良好,直到:

2019-07-29T15:26:17.651950Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error connecting to all peers. Member join failed. Local port: 33061'
2019-07-29T15:26:17.791783Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member was unable to join the group. Local port: 33061'
2019-07-29T15:27:17.469988Z 2 [ERROR] [MY-011640] [Repl] Plugin group_replication reported: 'Timeout on wait for view after joining group'
2019-07-29T15:27:17.473776Z 2 [Note] [MY-011649] [Repl] Plugin group_replication reported: 'Requesting to leave the group despite of not being a member'
2019-07-29T15:27:17.476534Z 2 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member is leaving a group without being on one.'
2019-07-29T15:27:17.492689Z 12 [Note] [MY-010596] [Repl] Error reading relay log event for channel 'group_replication_applier': slave SQL thread was killed
2019-07-29T15:27:17.495987Z 12 [Note] [MY-010587] [Repl] Slave SQL thread for channel 'group_replication_applier' exiting, replication stopped in log 'FIRST' at position 0
2019-07-29T15:27:17.498976Z 9 [Note] [MY-011444] [Repl] Plugin group_replication reported: 'The group replication applier thread was killed.'

我假设我在某处遗漏了一步,但它是什么?我浏览了所有我能找到的文档,但看不出有什么不同?

我也尝试在 Linux 上设置它,结果大致相同。

mysql mysql-8.0
  • 1 个回答
  • 1237 Views
Martin Hope
IGGt
Asked: 2019-01-04 08:49:50 +0800 CST

在 MySQL 8.0 中禁用二进制日志

  • 11

如何在 MySQL 8.0 上禁用二进制日志记录?

我需要导入一个大的 MySQLDump 文件,并且不想用许多 GB 的数据填充二进制日志。过去我会设置log_bin=0并my.cnf重新启动数据库。

但是对于 MySQL 8.0,我尝试了各种设置,但每次我登录数据库并运行:

SELECT @@global.log_bin;

它不断返回1

我努力了:

log_bin = 0
log_bin = OFF
#log_bin = 1

是否可以禁用二进制日志?

mysql log
  • 6 个回答
  • 11415 Views
Martin Hope
IGGt
Asked: 2018-10-17 08:07:19 +0800 CST

与 MySQL 5.5 相比,MySQL 5.7 上的 MySQL 复制要慢得多

  • 0

我有两个用于测试的数据库设置(因此没有实时数据或连接)。

第一个是5.5.57充当主数据库的 MySQL 数据库。第二个是5.7.23充当奴隶的 MySQL 数据库。它Statement Based Replication在 MySQL 5.5 和Row Based ReplicationMySQL 5.7 上运行。

出于某种原因,较大的查询在 MySQL 5.7 上似乎需要更长的时间。例如我有下表:

CREATE TABLE `test1` (
  `col0` int(11) DEFAULT NULL,
  `col1` int(11) DEFAULT NULL,
  `col2` datetime DEFAULT NULL,
  `col3 datetime DEFAULT NULL,
  `col4` int(11) DEFAULT NULL,
  `col5` int(11) DEFAULT NULL,
  `col6` int(11) DEFAULT NULL,
  `col7` int(4) DEFAULT NULL,
  `col8` int(11) DEFAULT NULL,
  `col9` datetime DEFAULT NULL,
  `col10` datetime DEFAULT NULL,
  `UniqRef` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `col11` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `col12` tinyint(1) unsigned zerofill DEFAULT NULL,
  `col13` tinyint(1) unsigned DEFAULT NULL,
  PRIMARY KEY (`UniqRef`),
  KEY `col0` (`col0`),
  KEY `col3` (`col3`),
  KEY `col4` (`col4`),
  KEY `col8` (`col8`),
  KEY `col5` (`col5`),
  KEY `col10` (`Deleted`),
  KEY `col2` (`col2`),
  KEY `col12` (`col12`) USING BTREE,
  KEY `col13` (`col13`)
) ENGINE=InnoDB AUTO_INCREMENT=400046649 DEFAULT CHARSET=latin1;

该表的大小为 21GB,包含 83261829 行(使用count(*))。

如果我运行查询: UPDATE test.test1 SET col9 = NOW() WHERE UniqRef IN ('397958600','397940686','397940704','397940678','397. . . . .

该查询包含 6945 个 uniqref 条目。它在 MySQL 5.5 上几乎立即运行,但随后复制到 MySQL 5.7 并需要 90 秒才能运行。

我已经更改了各种设置,但到目前为止它们没有任何区别:

SET @@global.slave_compressed_protocol = 0;

SET @@global.sync_binlog = 0;

set @@global.range_optimizer_max_mem_size = 0;

我还尝试将read_io_threads和更改write_io_threads为各种值,以及更改 的数量buffer pool instances和禁用二进制日志。

是否有任何其他变量可能会有所不同,以尝试加快我错过的速度?

更新 2018-10-17

我设法通过设置在本地(直接在 MySQL 5.7 上)加快查询速度SET @@global.range_optimizer_max_mem_size = 16777216;。在此之后,查询从 90+ 秒变为 0 秒。

然而,当相同的查询在 MySQL 5.5 上运行并复制到 MySQL 5.7 时,它仍然需要 90 多秒才能运行。

mysql mysql-5.5
  • 1 个回答
  • 322 Views
Martin Hope
IGGt
Asked: 2018-10-05 02:12:08 +0800 CST

Information_Schema.Tables 在 MySQL 5.5 和 MySQL 5.7 中报告不同的结果

  • 1

information_schema.tables我已经开始测试一些 MySQL 5.7 数据库来替换我们老化的 5.5 数据库,并且Table 记录数据大小的方式似乎发生了重大变化。

我运行以下查询:

SELECT  
    table_schema AS table_schema,   
    table_name AS table_name,   
    (data_length + index_length + data_free) AS table_size, 
    ROUND((data_length + index_length + data_free)/POWER(1024,3),2) AS table_sizeGB,    
    t.data_length,  
    t.index_length, 
    t.data_free
FROM information_schema.TABLES t
WHERE table_schema = 'myDb' 
ORDER BY table_size DESC, table_name
LIMIT 10;

这给了我 10 个最大的表。我每天运行这个来记录随时间的增长。在 MySQL 5.5 上它需要 apx 5 秒,在 MySQL 5.7 上它是即时的。

在 MySQL 5.5 上,我得到最大表的以下结果:

myDb | myTable | 319383535616 | 297.45 | 319116279808 | 262012928 | 5242880

在 MySQL 5.7 上,我得到:

myDB | myTable | 270051115008 | 251.50 | 269824819200 | 226295808 | 0

这两个数据库都是相隔几天创建的。5.7 数据库是 5.5 数据库的从属数据库。两者都不活跃(只是作为活跃系统的奴隶)。

如果我查看服务器,表 .ibd 文件在 5.5 数据库上为 302GB,在 5.7 数据库上为 292GB。

我预计会有一个小差异(一个是使用 Antelope,另一个是 Barracuda 文件格式——两者都是 innodb)。数据不断添加到数据库中,并且很少(如果有的话)被删除。

在 MySQL 5.5 数据库上,我可以看到每次运行查询时数字都在增加,即使相隔仅几秒钟。但是在 MySQL 5.7 上,自从我一周前开始查看以来,这些数字并没有改变。

这是正确的行为吗?在我错过的 MySQL 5.7 中,有没有更好的方法来监视它?

--更新于 2018-10-16

三周后,查询结果在 MySQL 5.7 上仍然几乎相同:

5.5 -- myDb | myTable | 327890632704 | 305.37 | 327616036864 | 268304384 |6291456
5.7 -- myDb | myTable | 270055309312 | 251.51 | 269824819200 | 226295808 | 4194304

服务器上的物理大小在 MySQL 5.5 上为 310GB,在 MySQL 5.7 上为 300GB。

两个表的创建方式相同。

这两个数据库都还没有激活,所以唯一运行的查询(除了我的测试)来自复制。

两个数据库都使用innodb_file_per_table.

MySQL 5.5 是使用 mysqldump 从活动的从服务器复制的。

5.7 数据库是使用 mysqldump + mysql_upgrade 从 MySQL 5.5 数据库复制而来的。

Optimize table 从未在这些表上运行过。

mysql mysql-5.5
  • 1 个回答
  • 284 Views
Martin Hope
IGGt
Asked: 2018-09-25 01:42:56 +0800 CST

MySQL 复制停止,但仍然说它正在运行

  • 2

我有一个奇怪的复制问题。作为参考,我将 MySQL 5.5 与基于语句的复制一起使用。我们在站点 A / 网络 A 上有一个主站和从站,在站点 B / 网络 B 上有一个从站。

网络 A 上的一切都很好。问题发生在站点 B/网络 B 上连接到站点 A 主服务器的数据库上。

现在有几次我看到站点 B 的数据库上的复制停止了。如果我看一下SLAVE_IO_RUNNING他们都说. 在所有程度上和目的上,一切对我来说都很好。但是,我的监控报告说我们运行的心跳事件落后了。就好像从站连接到主站,但没有接收到任何数据。SLAVE_SQL_RUNNINGSHOW SLAVE STATUSyes

各种pos值 ( read_master_log_pos, relay_log_pos, exec_master_log_pos) 都是静止不动的。我还检查了其中一个的中继日志,那时传入的数据就停止了。

如果我同时查看主数据库和从数据库,则没有长时间运行的查询会导致这种情况。一切似乎都按预期运行,并且如前所述,站点 A 的从站都很好并且保持最新状态。

有问题的数据库都在运行不同的查询,所以它不是特定的查询令人不安的事情。

MySQL 的错误日志中没有任何内容。

我们模拟了一次短暂的网络故障(尽管从我们的监控中我们看不到这些时间有任何网络中断)并且数据库按预期工作。一旦网络重新连接,它们就会恢复复制。

这是通过运行来解决的stop slave; start slave;,此时一切都继续进行,就好像什么都没发生过一样。

还有其他人遇到过类似的问题吗?或者可以阐明可能发生的事情。我的直觉是有一个非常短暂的网络中断,太短以至于监控无法捕捉到,但我不知道为什么这会扰乱 MySQL。

mysql replication
  • 1 个回答
  • 1159 Views
Martin Hope
IGGt
Asked: 2018-05-11 07:10:10 +0800 CST

如何停止 MySQL 在重启时重新创建 SSL 文件

  • 1

我们正在使用 MySQL 5.7.22。每次我重新启动 MySQL 时,它都会ca-key.pem在datadir.
问题是我已经在服务器上有这些文件,在/etc/mysql/ssl.

运行show global variables like '%ssl%'告诉我它正在查看 中的正确文件/etc/mysql/ssl,但它仍然在datadir.

我可以看到有一个选项,auto_generate_certs=off 但是当我将它添加到my.cnf文件时,它只是出现unknown variable并且 MySQL 无法启动

有没有办法阻止它在我每次重新启动数据库时都创建这些证书?

mysql mysql-5.7
  • 1 个回答
  • 241 Views
Martin Hope
IGGt
Asked: 2017-09-06 00:50:04 +0800 CST

MySQL查询用主键重新覆盖索引

  • 1

我有下表(真实的有更多的列)。

CREATE TABLE `test`.`j_data` (
`j_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`j_name` VARCHAR(80) NULL DEFAULT NULL
PRIMARY KEY (`j_id`));

我们定期运行查询,其中使用的主列是 PK,例如

SELECT * FROM j_data WHERE j_id = 123;

但是我们现在希望运行很多查询,例如:

SELECT j_id FROM j_data WHERE j_name = xxx; 

这会受益于j_name和上的覆盖索引吗j_id?

ADD INDEX `j_name_id` (`j_name` ASC, `j_id` ASC);

还是索引就j_name足够了?这是一个很大的表,所以如果它不太可能帮助我,我不想花时间添加索引。

mysql
  • 1 个回答
  • 168 Views
Martin Hope
IGGt
Asked: 2017-06-07 04:45:13 +0800 CST

MySQL - 尝试安装插件时出现重复条目

  • 1

我正在尝试在我的 MySQL 数据库上安装插件,但每次尝试时都会出现重复条目​​错误:

INSTALL PLUGIN audit_log SONAME 'audit_log.so';
Error Code: 1062. Duplicate entry 'audit_log' for key 'PRIMARY'

但是如果我跑:

SHOW PLUGINS;
SELECT * FROM `information_schema`.`plugins`;

没有它的迹象。

如果我运行,SELECT * FROM mysql.plugin;那么会有一个条目。

但是,如果我运行UNINSTALL PLUGIN audit_log;,它会告诉我它不存在。Error Code: 1305. PLUGIN audit_log does not exist

我知道文件在那里,因为这台服务器上有两个数据库在运行,mysqld_multi并且在另一个下安装得很好。

服务器是5.5.54,服务器是Debian 8(jessie)。

还有什么我可以做的吗?我可以简单地将它从mysql.plugin表中删除而不会引起问题吗?重新启动服务器是不可行的,因为它是我的主数据库。

mysql mysql-5.5
  • 1 个回答
  • 558 Views
Martin Hope
IGGt
Asked: 2016-10-27 07:15:45 +0800 CST

MySQL 5.5 使用哪个版本的 xtrabackup?

  • 0

我刚刚Percona xtrabackup在我的 Debian (jessie) 服务器上安装了一个副本,但是当我运行它时,它说它是:

innobackupex version 2.3.5 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 45cda89)

但我使用的是 MySQL 5.5。这是用于我的数据库的 innobackupex 的正确版本吗?如果不是,我应该使用哪个版本?文档不是很清楚。

我使用以下过程安装它:

apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

sudo pico /etc/apt/sources.list

then add the following two lines
    deb http://repo.percona.com/apt jessie main
    deb-src http://repo.percona.com/apt jessie main

apt-get update

apt-get install percona-xtrabackup
mysql mysql-5.5
  • 1 个回答
  • 1290 Views
Martin Hope
IGGt
Asked: 2016-09-28 01:35:09 +0800 CST

MySQL:为什么 `varchar` 字段中字符串的 `length`(字节长度)比实际字符串短?

  • 0

我确定有一个非常明显的答案但是:

为什么字段length中字符串的(字节长度)varchar比实际字符串短?

例如

CREATE TABLE `test1` (
  `testdata` varchar(4) DEFAULT NULL
) CHARSET=latin1;

insert into test1 (`testdata`) VALUES('ÂÂÂÂ');

select 
    testdata,
    length(testdata),
    char_length(testdata),
    length('ÂÂÂÂ'),
    char_length('ÂÂÂÂ')
from test1

**result:**
testdata: ÂÂÂÂ
length: 4
char_length: 4
length: 8
char_length: 4
mysql-5.5
  • 1 个回答
  • 233 Views
Martin Hope
IGGt
Asked: 2016-08-16 01:59:32 +0800 CST

查询可以在执行完成之前写入二进制日志吗?

  • 1

我有一个数据库,它是一个奴隶和一个主人。例如,它从我们的主站点复制数据,然后复制到一组从数据库。(这主要是一个测试设施,因此在工作时间之外不受监控)。

周日早上 7:55,它开始执行INSERT查询。这是一个标准查询,每天执行数千次。它是一个查询,而不是事务的一部分。该表上没有触发器。此表(和所有其他表)是INNODB.

但是,这一次它卡住了。当我今天进入办公室时,它已经运行了 24 小时(显然)。复制落后了一天。

但是,当我查看二进制日志时,它显示为COMMITed。

#160814  7:55:25 server id 21  end_log_pos 103319397    Query   thread_id=635785334 exec_time=4294967294    error_code=0
SET TIMESTAMP=1471157725/*!*/;
INSERT INTO tablename . . . 
/*!*/;
# at 103319397
#160814  7:55:25 server id 21  end_log_pos 103319424    Xid = 284047583
COMMIT/*!*/;
# at 103319424

我检查了从属数据库,正如你所期望的那样,它就在那里。

我有一个监控系统,它记录(除其他外)进程列表,它表明对于该INSERT查询,它永远停留在STATE = UPDATE.

我还检查了slow query log它是否在那里,它不是。

binary log我的理解是,只有在主服务器上才能将查询写入commmited,所以任何人都可以解释这里发生了什么吗?

有一个连锁反应,今天早上8点38分,有一次测试系统尝试连接,第一个SELECT查询也卡住了,然后它拒绝了所有连接。所以我被迫重新启动数据库。此时它运行崩溃恢复,并继续进行,就好像什么都没发生一样。

它是 MySQL 5.5.47 并使用基于语句的复制。

mysql mysql-5.5
  • 3 个回答
  • 2225 Views
Martin Hope
IGGt
Asked: 2016-06-04 05:45:21 +0800 CST

发行说明中的​​ MySQL Bug 参考,但在哪里?

  • 0

这可能是一个愚蠢的问题,但在 MySQL 发行说明中,很多都跟在 BUG 参考编号之后。但是当你在bugs.mysql.com上搜索它们时,大多数这些 BUGS 都不存在。

示例:InnoDB: A full-text query raised an assertion. Under certain circumstances, DDL operations such as ALTER TABLE ... RENAME caused full-text auxiliary tables to be removed on server restart. (漏洞 #13651665)

尽管我尽了最大的努力,但我还是找不到在哪里可以找到这些错误。谁能指出我正确的位置?

mysql
  • 1 个回答
  • 65 Views
Martin Hope
IGGt
Asked: 2015-12-16 00:24:55 +0800 CST

查询引擎状态中的 MySQL 信号量

  • 2

在我们的一个从属数据库最近出现问题/减速期间,我注意到当我运行SHOW ENGINE INNODB STATUS. 我得到以下信息:

----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 822986039, signal count 17045541908
--Thread 140562108442368 has waited at row0sel.c line 2930 for 0.00 seconds the semaphore:
S-lock on RW-latch at 0x7fd752e55c40 created in file buf0buf.c line 938
a writer (thread id 140562088974080) has reserved it in mode  exclusive
number of readers 0, waiters flag 1, lock_word: 0
Last time read locked in file row0sel.c line 2930
Last time write locked in file /tmp/buildd/mysql-5.5-5.5.44/storage/innobase/buf/buf0buf.c line 3168

事实上,这种情况大约有 15 个。

查看交易,列出了 apx 200 笔交易,其中有一半显示为waiting in InnoDB queue,另一半显示为fetching data。

所有的交易都是SELECT查询,它们都没有显示任何locks.

谁能告诉我SEMAPHORES(以上)与什么有关?

mysql innodb
  • 1 个回答
  • 4265 Views
Martin Hope
IGGt
Asked: 2015-08-28 07:06:49 +0800 CST

MySQL - 在 LOAD XML INFILE 语句中包含默认值

  • 1

我有下表:

CREATE TABLE `tab1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `DEFAULT` VARCHAR(25) DEFAULT NULL,
  `ITEM` varchar(25) DEFAULT NULL,
  `TIMESTAMP` TIMESTAMP DEFAULT NULL,
  `NAME` varchar(25) DEFAULT NULL,
  `SURNAME` varchar(45) DEFAULT NULL,
  `LOADED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
);

然后我有一个包含多个条目的 XML 文件,例如:

<RECORD
  ITEM="item1"
  TIMESTAMP="2015-08-26 10:04:40"
  NAME="Bob"
  SURNAME="SMITH"
/>

我使用 MySQL 导入数据:

LOAD XML LOCAL INFILE 'c:/myFile.xml'
INTO TABLE `test`.`tab1`
ROWS IDENTIFIED BY '<RECORD>';

这工作正常。但是我需要为该DEFAULT字段指定一个默认值。但它需要在我加载文件时指定,并且每个文件都会不同。(为了论证,让我们使用文件名,myfile.xml)

如何在 XML 导入期间为此行添加默认值?

我看着使用类似的东西:

LOAD XML LOCAL INFILE 'c:/myFile.xml'
INTO TABLE `test`.`tab1` (@default="myfile.xml")
ROWS IDENTIFIED BY '<RECORD>'; 
SET DEFAULT=@default;

但它不喜欢那样。有办法解决这个问题吗?

mysql mysql-5.5
  • 1 个回答
  • 874 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve