我很长一段时间以来一直是MySQL的用户.我想开始使用最流行的叉子之间的所有不同的变化.问题是我找不到它们之间的任何好的比较,我最终只会尝试所有这些.我关心的是生产,因为我不会在生产中试验所有这些叉子.
你有没有在生产中运行任何MySQL分支?
有什么好处?有什么缺点?
MySQL(Percona 5.6)无法启动.
这个错误发生在我身上好几次.每次,我都必须删除MySQL数据目录并重新安装MySQL.
还有另一种修复MySQL的方法吗?(特别是没有吹走数据的那个?)
/var/log/mysql/error.log
150214 16:36:39 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-02-14 16:36:40 0 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
2015-02-14 16:36:40 0 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
2015-02-14 16:36:40 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-02-14 …
Run Code Online (Sandbox Code Playgroud) 这是一个疯狂的:
mysql> CREATE FUNCTION PREG_REPLACE RETURNS STRING SONAME 'lib_mysqludf_preg.so';
ERROR 1125 (HY000): Function 'PREG_REPLACE' already exists
mysql> DROP FUNCTION preg_replace;
ERROR 1305 (42000): FUNCTION (UDF) preg_replace does not exist
Run Code Online (Sandbox Code Playgroud)
嗯....这实际上很有趣......
真正的问题是在查询中不再识别该函数.尝试重新编译,重新安装,重新启动等 - 没有快乐.UDF来自这里:http: //www.mysqludf.org/lib_mysqludf_preg/index.php
从mysql切换到percona 5.5之后.UDF在mysql中运行良好.
问题是: 从mysql升级到percona 5.5后,如何让PREG UDF工作?
答案: 以下是基于Baron的提示的答案:
从mysql error.log:
120319 9:32:06 Percona XtraDB (http://www.percona.com) 1.1.8-rel24.1 started; log sequence number 1547303885
120319 9:32:06 [ERROR] Can't open shared library 'lib_mysqludf_preg.so' (errno: 0 /usr/lib/plugin/lib_mysqludf_preg.so: cannot open shared object file: No such file or directory)
Run Code Online (Sandbox Code Playgroud)
Percona似乎与我的标准MySql安装位于不同的目录中.
MySql查找/ …
我看到MySQL 5.6的死锁,因为似乎试图锁定同一行/两次.
从下面的代码段中,id =(11,12,13,14,15)的行已经锁定.当另一个事务试图获取对这些的锁定时,MySQL无法检测到死锁的事务.
我的阅读是否正确?如果是这样,MySQL 5.6中有什么可以克服这个问题吗?FWIW,5.5中的相同代码工作得很好(几百次迭代).
------------------------ LATEST DETECTED DEADLOCK ------------------------ 2013-07-25 11:46:05 13a515000 *** (1) TRANSACTION: TRANSACTION 2333130, ACTIVE 0 sec fetching rows mysql tables in use 1, locked 1 LOCK WAIT 31 lock struct(s), heap size 6960, 6 row lock(s) MySQL thread id 2944, OS thread handle 0x13ae88000, query id 184533 localhost 127.0.0.1 root Sending data SELECT id FROM table_meta WHERE id IN (11, 12, 13, 14, 15) FOR UPDATE *** (1) WAITING FOR THIS LOCK TO BE …
我正在尝试使用innobackupex从远程计算机进行备份.
./innobackupex --host=<mysql_server> --user=<username> <backup_dir>.
Run Code Online (Sandbox Code Playgroud)
它失败了,因为它无法在服务器中找到目录.
(Errcode: 2 - No such file or directory)
Run Code Online (Sandbox Code Playgroud)
我假设它正在本地机器中搜索目录.请告诉我们如何远程运行备份?
我如何CREATE INDEX
使用Percona的pt-online-schema-change
工具?我想做的事情如下:
CREATE UNIQUE INDEX idx_name ON table_name (col_1, col_2, ...) USING BTREE
根据文档,我必须使用--alter
参数,然后使用适当的ALTER TABLE
语句,减去前面的ALTER TABLE table_name
短语.但是,CREATE INDEX
不是从开头ALTER TABLE
,并且表名嵌入在CREATE INDEX
语句中.那么我该如何前进呢?
我使用percona-toolkit来分析mysql-slow-query(logs).所以命令非常基本:
pt-query-digest slowquery.log
现在结果(错误)是:
18.2s用户时间,100ms系统时间,35.61M rss,105.19M vsz
当前日期:2016年7月7日星期四17:18:43
主机名:Jammer
文件:slowquery.log
管道进程5(迭代)导致错误:sprintf中的冗余参数位于/ usr/bin/pt-query-digest行2556.将重试管道进程4(迭代)2次.
.. ..(相同的结果打印两次)..
管道导致错误:管道进程5(迭代)导致错误:sprintf中的冗余参数位于/ usr/bin/pt-query-digest第2556行.由于进程4(迭代)导致过多错误,因此终止管道.
现在有关环境的细节,我使用的是Ubuntu 16.04,MariaDB 10.1.14,Percona-Toolkit 2.2.16
我在这里发现了bug报告,但它就像一个解决方法,并没有真正解决错误.即使在应用补丁之后,命令结果看起来也不够令人满意.
我在ubuntu 16.04 MySql上面临同样的问题.我的慢查询日志的内容如下.
/ usr/sbin/mysqld,版本:5.7.16-0ubuntu0.16.04.1-log((Ubuntu)).开始于:Tcp端口:3306 Unix套接字:/var/run/mysqld/mysqld.sock时间Id命令参数/ usr/sbin/mysqld,版本:5.7.16-0ubuntu0.16.04.1-log((Ubuntu)).开始于:Tcp端口:3306 Unix套接字:/var/run/mysqld/mysqld.sock时间Id命令参数时间:2016-12-08T05:13:55.140764Z User @ Host:root [root] @ localhost [] Id: 20 Query_time:0.003770 Lock_time:0.000200 Rows_sent:1 Rows_examined:2 SET timestamp = 1481174035; SELECT COUNT(*)FROM INFORMATION_SCHEMA.TRIGGERS;
错误是一样的:
管道导致错误:管道进程5(迭代)导致错误:sprintf中的冗余参数位于/ usr/bin/pt-query-digest第2556行.
Ubuntu 16.04 MySql Ver 14.14 Distrib 5.7.16 pt-query-digest 2.2.16
我正在我的Raspberry Pi上编译Percona(MySQL变体),它有一个ARM处理器.
我在报告的编译过程中遇到了一个问题,但是没有人愿意修复,因为ARM是一个不受支持的平台.
https://bugs.launchpad.net/percona-server/+bug/1002848
我已经设法解决这个问题并成功编译,但我对c ++的了解有些缺乏,而且我不完全理解我是否真的破坏了某些东西.
我已经阅读了很多关于SO的const char*到char*问题的无效转换,这是我对此解决方法的想法.
错误如下:
error: invalid conversion from 'const pthread_mutex_t*' to 'pthread_mutex_t*'
Run Code Online (Sandbox Code Playgroud)
(它实际上不在pthread_mutex_t
我的平台上,但问题是相同的 - 实际类型丢失到无限深渊,即回滚缓冲区)
违规代码是:
uint32 count(uint index) const
{
my_atomic_rwlock_rdlock(&time_collector_lock);
Run Code Online (Sandbox Code Playgroud)
我改为:
uint32 count(uint index) const
{
my_atomic_rwlock_t dummy = time_collector_lock;
my_atomic_rwlock_rdlock(&dummy);
Run Code Online (Sandbox Code Playgroud)
time_collector_lock定义为:
private:
my_atomic_rwlock_t time_collector_lock;
Run Code Online (Sandbox Code Playgroud)
由于这应该是一个互斥体,我有一种感觉,我可能已经使这个非线程安全.或者这样可以吗?
有更好的解决方案吗?
我的mysql老是崩溃。我认为这是因为 my.cnf 配置不当。这是我的 my.cnf 当前配置。请帮我优化一下。我使用的是 1GB 内存和 30GB 固态硬盘。我想优化分配的内存和内存。
我通过 percona 创建了这个配置。
[mysql]
# CLIENT #
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
# GENERAL #
user = mysql
default-storage-engine = InnoDB
socket = /var/lib/mysql/mysql.sock
pid-file = /var/lib/mysql/mysql.pid
performance_schema = off
# 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
# DATA STORAGE #
datadir = /var/lib/mysql/
# BINARY LOGGING # …
Run Code Online (Sandbox Code Playgroud) percona ×10
mysql ×9
mariadb ×2
arm ×1
c++ ×1
deadlock ×1
drizzle ×1
innobackupex ×1
my.cnf ×1
raspberry-pi ×1
sql ×1
toolkit ×1
ubuntu-16.04 ×1