Questions tagged «mysql-5.5»

MySQL 5.5版-出于搜索目的,请同时加上mysql标签。

2
我们可以在MySQL 5.0 Replication中做什么来解决带宽问题?
我正在开发一个在客户端PC(Win)上运行的应用程序,该PC配置有MySQL服务器5.1实例,该实例将充当远程主服务器的只读从属服务器。远程主服务器有几十个模式,但是每个客户端只需要一个模式,因此我在my.ini中提供了copy-do-db设置,以仅复制客户端所需的模式。复制是可行的,但是当我们的客户进入仅通过3G无线访问互联网(按数据用量收费)的地区时,他们很快就会超出数据计划的限制,并遇到了昂贵的问题。 据我了解,MySQL将所有模式的所有事务都写入单个binlog文件中,这意味着每个客户端必须下载在主服务器上的每个模式上执行的所有事务,然后一旦下载,则对每个复制应用数据库过滤器- 客户端的my.ini文件中的do-db设置。 为了最大程度地减少这种低效率,我采用了slave_compressed_protocol = 1设置,该设置似乎将传输的数据减少了50%,但仍然导致我们的客户的数据流量迅速超过了3G账单。 我无法想象我是唯一面对这个问题的人,所以我敢肯定,通过设置x = y,我将获得大量有关如何实现这一目标的答案。但是,我找不到有关这种设置的任何文档,也找不到推荐的方法。 到目前为止,这是我对可能的解决方案的想法,请提供反馈或替代路线: 为每个模式设置“代理”从属(在不同的框上,或在具有不同的MySQL实例/端口的同一框上) 配置代理从属服务器,使其仅复制客户端希望复制的一个数据库。 将客户端的MySQL实例配置为相应代理从属的从属。 这应该导致客户端仅提取其架构的binlog数据。不利的一面(据我所知)是,它极大地增加了我们设置的复杂性,可能使其更加脆弱。 有什么想法吗?这种方法还能行吗? 注意,我们正在RedHat上运行MySQL 5.0服务器,但是如果它可以解决的话,我们可以升级到5.5。

2
是否应在适用于MySQL的AWS RDS t1-micro中增加max_connections?
我有一个运行MySQL 5.5的AWS RDS t1-micro。它给我太多连接错误。我检查了一下,它允许并发最多连接34个。我读到的是可以通过为此Micro实例创建一个数据库参数组来增加此最大值。 我的困惑是 我是否应该增加数据库参数组中微控制器的最大连接值?还是我应该考虑升级到提供更多最大连接数的下一个RDS级别(125)? 我应该将微型RDS上的max_connections增加到125,而不是升级到RDS小实例吗? 我为什么要做出什么决定? 谢谢

2
有效的mysql表/索引设计,可处理3500万行以上的表,并具有200+相应的列(双精度),可以查询其任意组合
我正在针对以下情况寻求有关表/索引设计的建议: 我有一个大表(股价历史数据,InnoDB,3500万行,并且还在不断增长),它具有复合主键(资产(整数),日期(日期))。除了定价信息外,我还有200个双精度值需要与每个记录相对应。 CREATE TABLE `mytable` ( `assetid` int(11) NOT NULL, `date` date NOT NULL, `close` double NOT NULL, `f1` double DEFAULT NULL, `f2` double DEFAULT NULL, `f3` double DEFAULT NULL, `f4` double DEFAULT NULL, ... skip a few … `f200` double DEFAULT NULL, PRIMARY KEY (`assetid`, `date`)) ENGINE=`InnoDB` DEFAULT CHARACTER …

2
从未使用以DATETIME作为复合键第一部分的主键索引
我在将DATETIME(甚至日期)作为PRIMARY KEY的第一部分时遇到问题。 我使用MySQL 5.5 这是我的两张桌子: -- This is my standard table with dateDim as a dateTime CREATE TABLE `stats` ( `dateDim` datetime NOT NULL, `accountDim` mediumint(8) unsigned NOT NULL, `execCodeDim` smallint(5) unsigned NOT NULL, `operationTypeDim` tinyint(3) unsigned NOT NULL, `junkDim` tinyint(3) unsigned NOT NULL, `ipCountryDim` smallint(5) unsigned NOT NULL, `count` …

2
tinyint(N)是什么意思?
据我所知,当我们使用带有数字数据类型的参数长度时,它指定了显示宽度。 我尝试了以下方法: mysql> create table boolean_test (var1 boolean, var2 tinyint); Query OK, 0 rows affected (0.10 sec) mysql> show create table boolean_test; +--------------+------------------------- | Table | Create Table +--------------+------------------------- | boolean_test | CREATE TABLE `boolean_test` ( `var1` tinyint(1) DEFAULT NULL, `var2` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +--------------+--------------------------- …


2
什么max_allowed_pa​​cket足够大,为什么我需要更改它?
我在主从设置中安装了MySQL(5.5),并创建了另一个从服务器。 我停止了原来的从属服务器,转储了数据,复制并重新导入了它,然后运行良好。我注意到了原始从站的master_log pos,并使用这些命令将其设置在新的从站上 CHANGE MASTER TO MASTER_HOST='<ipaddress>', MASTER_USER='<username>', MASTER_PASSWORD='<password>', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851', MASTER_LOG_POS=15824150, MASTER_CONNECT_RETRY=10; 当我开始新的奴隶时,我得到了 Last_IO_Error:从二进制日志读取数据时,主机出现致命错误1236:'日志事件条目超过了max_allowed_pa​​cket; 增加master上的max_allowed_pa​​cket 但是,当我启动原始从属服务器时,它运行起来很好,并且现在已同步。 所以问题是: 当前值是16M,我怎么知道要走多大?(我宁愿避免生产服务器的反复试验)。 当原来的从属服务器很好时,为什么我需要增加主控板上的值,问题可能出在新的从属服务器上吗? 更新 正如Rolando在主机,旧从机和新从机上建议的那样,我将max_allowed_pa​​cket增加到1073741824,然后重新启动它们(SET GLOBAL max_allowed_packet = 1073741824;由于某些原因,似乎没有用) 现在最后一个IO错误与以前相同,但是现在我看到了 Last_SQL_Error:中继日志读取失败:无法解析中继日志事件条目。可能的原因是:主站的二进制日志已损坏(您可以通过在二进制日志上运行“ mysqlbinlog”来检查),从站的中继日志已损坏(可以通过在中继日志上运行“ mysqlbinlog”来检查)网络问题,或主从MySQL的错误。如果要检查主站的二进制日志或从站的中继日志,则可以通过在此从站上发布“ SHOW SLAVE STATUS”来知道其名称。 如果我在主文件上执行一个mysqlbinlog,它会用命令滚动很久很久很久-该文件为722M-如果我为从属中继日志执行该操作 错误:Log_event :: read_log_event()中的错误:“健全性检查失败”,data_len:38916267,event_type:69 错误:无法读取偏移量为253的条目:日志格式错误或读取错误。 我检查了变量,但所做的更改有效 mysql>显示变量LIKE'%max_allowed_pa​​cket%'; 在新的从属设备上显示max_allowed_packetAND slave_max_allowed_packet,而在主设备上只有max_allowed_packet 所以我对母版进行了版本检查: mysql> show variables LIKE '%version%'; +-------------------------+--------------------------------------+ | …


2
计数子查询中的行
简单:我想计算子查询的行数。请注意,状态是主机是否在线。 错误的代码 SELECT COUNT(ip_address) FROM `ports` ( SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ) 解释 第一个查询单独运行时返回以下内容: SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ip_address 192.168.1.1 192.168.1.2 192.168.1.248 192.168.1.251 192.168.1.254 单独运行的第二个查询返回以下内容: SELECT COUNT(ip_address) FROM `ports` 17 题 我想知道如何计算5个IP地址的列表。 我一直在网上寻找这个简单问题的可能解决方案,并且感到沮丧,所以我想请专家们。


1
启用“ log_queries_not_using_indexes”会禁用“ long_query_time”吗?
我注意到,在MySQL中实现的时候log_queries_not_using_indexes,slow_query_log和long_query_time,生成慢查询日志文件将包含大量的查询即使查询时间比少得多long_query_time。 似乎一旦log_queries_not_using_indexes启用,无论“ long_query_time”是什么,Mysql都会记录所有不使用索引的查询。 有办法克服吗?我的意思是,有没有一种方法可以记录所有比花费更多时间的查询long_query_time,而不管它们是否使用索引?

1
在复制环境中删除bin日志
我有一个关于在复制环境中删除二进制日志的问题: 我们有一个具有1个主设备和2个从设备的环境(运行mysql 5.5)。有时,在繁重的处理时间中,我们遇到了空间问题,因此bin日志目录已满。日志每3天过期一次。我想知道,是否有理由将所有主机(包括主机和从机)上的日志保存3天?例如,将日志在主服务器上保留3天,在从属服务器上保留1天是否有意义?最好的方法是什么? 谢谢!

2
如何从InnoDB表中删除碎片?
我有一个具有表数量的数据库。 我想从表中删除一些记录,说记录数超过20K或50K。 所有的表都是InnoDB。而且file_per_table是关闭。 当我从多个表中删除记录时,表中会出现碎片。 有什么方法可以消除碎片吗? 4月17日更新 mysql> select TABLE_NAME, TABLE_SCHEMA, Data_free from information_schema.TABLES where TABLE_SCHEMA NOT IN ('information_schema', 'mysql') and Data_Free >0; +-----------------+--------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | Data_free | +-----------------+--------------+-----------+ | City | world_innodb | 5242880 | | City_Copy | world_innodb | 5242880 | | Country | world_innodb | …

2
将600GB表索引键数据类型从INT更改为BIGINT的最快方法
我需要将600GB MySQL表中的数据类型从INT更改为BIGINT。该列具有唯一索引。对于未签名的INT,我可能会很好,但是我认为更改为BIGINT或BIGINT会非常痛苦。该表的引擎是InnoDB。什么会更容易: 更改表 复制结构和 INSERT INTO (SELECT *) 转储表和更改转储文件表定义 还要别的吗? 更新:根据要求,MySQL ver 5.5.15,没有外键并创建表: CREATE TABLE `tbl` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `created_at` datetime NOT NULL, `tid` bigint(20) NOT NULL, `t` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `f` tinyint(1) NOT NULL, `i_id` bigint(20) NOT …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.