我的情况是 MySQL 日志分区在不到一天的时间内就被填满了。我无法禁用二进制日志,因为我需要它们进行复制。
我知道我可以设置日志保留时间,但它接受天数,搜索只显示我这个https://serverfault.com/questions/179165/can-expire-logs-days-be-less-than-1-day-in -mysql问题,建议通过脚本自己完成。
由于这个问题已经有将近 8 年的历史了,我想知道现在是否有可能。
如果重要,我正在使用 Percona MySQL 5.7
由于我们的初创公司发展顺利,我们现在遇到了一些您一直认为永远不会影响您的问题。
我们已经扩展了很多应用程序堆栈:我们将临时信息的高读/写表卸载到一个单独的 Percona 服务器,其中表以“Engine=MEMORY”运行,并将其他部分迁移到 cassandra 集群。
现在我们剩下一个“精益”数据库,其中我们的读/写负载为 88%/12%。在这一点上,我有几个问题想得到一些反馈:
1. 读奴隶
通过我们的读/写设置,一些(例如 2-3 个)读从站应该将我们的写主站上的读负载减少到最低限度。read-slave 解决方案的可扩展性如何:如果我们的负载增加一倍/三倍,我们的负载是添加额外的 read slaves 将继续为读取提供足够的容量?我阅读了这篇文章:每个主人的奴隶数量有什么限制?然而,不是出于可扩展性背景,这可能看起来很愚蠢,但这是一个可冻结的解决方案吗?有很多人在推动分片而不是读从解决方案,但是,我现在真的认为我们的读/写负载不需要重写我们应用程序的大部分......有什么想法吗?
2. 多数据中心和复制
此外,我们正在考虑为附近的数据中心提供服务,以减少网络延迟(我们处理不喜欢延迟的移动应用程序)。计划是使用很多提到的半同步。复制(见:这是个好主意,MySQL数据库分成两个服务器,并为MySQL复制的高延迟互连是否受影响?)的主-主复制,其中每个数据中心都有一个主,和多个读的奴隶。同样,天真地,我很想知道在扩展时这是否在“最佳实践”的范围内。
3. 硬件和配置
过去几周我一直忙于对我们的实时系统进行基准测试,我得出的结论是,无论我们为第 1 点和第 2 点选择哪种解决方案,我们当前使用的服务器都不会运行很长时间,是否可以我对我们的设置有一些想法:
CPU: Intel(R) Xeon(R) CPU E31275 @ 3.40GHz mit 8 cores (hyperthreading)
RAM: 16GB
Raid 10 with a strip size of 64 KB and controller cache enabled
Software: Percona 5.5
Database size: 83.7GB
Top 5 Tables:
21302MB table1
7656MB table2
5477MB table3
4352MB table4
3663MB table5
Run Code Online (Sandbox Code Playgroud)
my.cnf 设置: …
我正在尝试为我们的新基础架构选择最佳配置,但对结果有些困惑。
我使用 sysbench v0.5 进行测试:
准备数据
sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua \
--oltp-test-mode=complex --oltp-table-size=1000000 \
--mysql-db=mydb --mysql-user=root --mysql-password=mypassword prepare
Run Code Online (Sandbox Code Playgroud)
做测试
sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua \
--oltp-test-mode=complex --oltp-table-size=1000000 --oltp-read-only=off \
--num-threads=6 --max-time=60 --max-requests=0 \
--mysql-db=mydb --mysql-user=root --mysql-password=mypassword run
Run Code Online (Sandbox Code Playgroud)
从下面的结果可以看出,主-主复制(3台机器的percona)性能最差,然后是mySQL主-从(2台机器)配置,最快的是mySQL作为单个独立服务器。
这是复制解决方案的正常情况吗?看起来太慢了,配置之间的 10 倍差异在我看来很不正常。也许我错过了一些东西......我对 Percona Galera Cluster 完全失望,它以对 innodb 的速度着称。呼:)
请检查下面提供的信息并提出建议,谢谢。
服务器位于同一个数据中心,都与一个 Gbit 交换机相连,并有第二个以太网卡,所有这些都配置为它们之间的专用网络。
目前,服务器上没有负载。
第一次测试
# hdparm -Tt …Run Code Online (Sandbox Code Playgroud) 我有一个基于主键的分区表,其中包含 15 亿行。但是当我检查.ibd文件时,GB 中只有 80 ibd 显示,而 120ibd 显示 1MB 文件。我想知道当我使用PARTITIONS 200. 我的结构如下。鉴于这一点id,checksum两者都是独一无二的。
CREATE TABLE `mapping` (
`id` varchar(50) NOT NULL DEFAULT '',
`sha_checksum` varchar(50) NOT NULL DEFAULT '',
`path_id` varchar(90) DEFAULT NULL,
`file_id` varchar(35) DEFAULT NULL,
`server_id` CHAR(6) DEFAULT NULL,
PRIMARY KEY (`id`,`sha_checksum`)
) ENGINE=InnoDB
/*!50100 PARTITION BY KEY (id,sha_checksum)
PARTITIONS 200 */
Run Code Online (Sandbox Code Playgroud)
请帮助我理解我错在哪里。
我一直在优化我的 MySQL 服务器,在调整了一些查询之后,我最终在 pt-query-digest 输出顶部得到了 COMMIT 项,如下面的摘录所示:
# 322s user time, 770ms system time, 71.75M rss, 223.13M vsz
# Current date: Sat Oct 1 11:12:58 2016
# Hostname: XXXX
# Files: /home/tools/Slow10.log
# Overall: 1.08M total, 1.47k unique, 61.74 QPS, 0.17x concurrency _______
# Time range: 2016-10-01 06:15:09 to 11:06:35
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 2913s 1us 14s 3ms 15ms 27ms 194us
# Lock …Run Code Online (Sandbox Code Playgroud) 我正在处理一组非常大的数据库,这些数据库都是 innodb。
为了我的舒适,我在 mysql restart 上多次提到这个:
ibdata files do not match the log sequence number
但是,当该消息发生时,我已经清楚地看到 mysql 在重新启动之前正确关闭。
然后它“修复”到原始序列号,没有丢失任何东西。
永久处理和修复此问题的最佳方法是什么?
使用 Percona innodb_file_per_table=1
示例日志:
InnoDB: Initializing buffer pool, size = 80.0G
InnoDB: Completed initialization of buffer pool
InnoDB: Highest supported file format is Barracuda.
InnoDB: The log sequence numbers 475575972691 and 475575972691 in ibdata files do not match the log sequence number 925369860131 in the ib_logfiles!
InnoDB: Database was not shutdown normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information …Run Code Online (Sandbox Code Playgroud) 我们的服务器正在创建很多表,其中之一就是表Lock_。
我们在 Percona 上使用 MySQL 5.5。我们还使用utf8_general_ci和utf8。
在表上创建以下索引时会抛出以下错误Lock_:
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)
这是创建表查询:
create table Lock_ (
uuid_ VARCHAR(75) null,
lockId LONG not null primary key,
companyId LONG,
userId LONG,
userName VARCHAR(75) null,
createDate DATE null,
className VARCHAR(75) null,
key_ VARCHAR(200) null,
owner VARCHAR(255) null,
inheritable BOOLEAN,
expirationDate DATE null
);
Run Code Online (Sandbox Code Playgroud)
索引查询:
create unique index IX_DD635956 on Lock_ (className, key_, owner);
Run Code Online (Sandbox Code Playgroud)
这个问题发生在我们的一台产品服务器上(之前是独立的 mysql,后来转移到 …
我们想设置一个具有主-主同步复制的 mysql 集群,以提供 HA,以便一个 db 用于从一个应用程序写入,另一个用于从其他应用程序写入。是一款高写中读的webapp
我们正在考虑添加 mysql 集群并考虑 percona 与 mysql 集群。
MySQL ndb 集群可以导入 innodb 转储吗?
ndb 集群可以支持 MySQL 异步和 2 路同步复制吗?
ndb 不写入磁盘可以保证一致性吗?即如果有 2 个节点集群并且两者都关闭并且数据没有刷新到磁盘怎么办
ndb cluster 可以支持 4-5 个表连接吗?表会在同一个节点中还是会由于分布式连接而存在任何网络延迟
ndb 集群是否支持 MySQL-fabric Python api?
ndb cluster 是否支持多主双向同步?
percona 集群是否支持以上项目?
我刚刚发现table_definition_cache并且我正在尝试决定将其设置为什么。由于性能问题,我弄乱了我的配置。
在一台服务器上,我有 36599 个表,当我运行SHOW GLOBAL STATUSOpened tables 的值是 930312。table_definition_cache设置为 20k。
在另一台服务器上,我有 45349 个表,当我运行SHOW GLOBAL STATUSOpened tables 的值是 94383。table_definition_cache设置为 40k。
我不确定将它设置为什么table_definition_cache值,因为服务器似乎做了很多打开/交换。
两台服务器都是 CentOS 6 并且正在运行
服务器版本:5.6.32-78.0 Percona Server (GPL),78.0 版,修订版 8a8e016
感谢您的关注!我非常感谢您的反馈。
我是 Percona XtraBackup 的新手。我一直在尝试执行从本地(测试服务器大约 600GB)到远程服务器的完整备份流。
\n\n我只是有一些问题,需要指导,我认为这是最好的地方。
\n\n我有这个命令,我在本地执行
\n\ninnobackupex --user=user --password=password --stream=tar /which/directory/ | pigz | ssh user@10.11.12.13 "cat - > /mybackup/backup.tar.gz"
我的问题是:
\n\n我的日志扫描没有改变/增加
\n\n>> log scanned up to (270477048535)\n>> log scanned up to (270477048535)\n>> log scanned up to (270477048535)\n>> log scanned up to (270477048535)\n>> log scanned up to (270477048535)\nRun Code Online (Sandbox Code Playgroud)\n\n我之前读过一条评论,有人说如果没有人使用数据库,日志扫描不会增加。(是的,没有人在使用数据库)\xc2\xa0
它已经运行了一段时间了。
\n\n我尝试使用 xtrabackup 到大约 1.7TB 的本地测试服务器,并在短短几个小时内完成。这是因为我正在使用流所以它很慢吗?
\n\n我的命令中“/which/directory/”\xc2\xa0 的用途是什么?是否要先将\xc2\xa0文件存储在/which/directory/\xc2\xa0中,然后传输到我的远程服务器?为什么我必须指定一个目录?
在我的本地服务器 /which/directory/ 和我的远程服务器 /mybackup/ 上没有创建文件。
\n\n难道我做错了什么 ? …
percona ×10
mysql ×9
innodb ×3
mysql-5.5 ×3
performance ×3
replication ×2
backup ×1
clustering ×1
ibdata ×1
index ×1
linux ×1
mariadb ×1
mysql-5.7 ×1
partitioning ×1
slow-log ×1
table ×1
xtrabackup ×1