我最近在Ubuntu 12.04 OS桌面上安装了5.5.28-29.2 Percona Server(GPL),Release 29.2.我试图使用不同的方法停止服务器:
- sudo /etc/init.d/mysql stop
- sudo kill -9 pid
- mysqladmin -u root -p shutdown
Run Code Online (Sandbox Code Playgroud)
所有这些方法都会停止该过程,但它会在死亡后自动启动.我检查了syslog(/ var/log/syslog /)并总是向我显示下一个跟踪:
Jan 4 17:50:44 kernel: [ 1915.494219] init: mysql main process (17311) killed by KILL signal
Jan 4 17:50:44 kernel: [ 1915.494245] init: mysql main process ended, respawning
Jan 4 17:50:44 kernel: [ 1915.500025] type=1400 audit(1357318244.557:48): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18458 comm="apparmor_parser"
Jan 4 17:50:46 /etc/mysql/debian-start[18501]: Upgrading MySQL tables if necessary.
Jan 4 17:50:46 /etc/mysql/debian-start[18504]: /usr/bin/mysql_upgrade: the '--basedir' …
Run Code Online (Sandbox Code Playgroud) 我一直在MySQL服务器中遇到脏页刷新问题.由于服务器中缺少资源,这会占用大量CPU资源并导致我的网站崩溃.我在数据库中获得了1000万条记录,并将进一步增长.我的表在innodb中运行,从基于事务的站点开始,我需要innodb.将迁移到Percona服务器将删除我的脏页刷新问题.一般来说迁移或坚持使用MySQL会更好吗?
一旦我搬到percona,如果我想恢复到Mysql,我可以将备份从percona恢复到mysql吗?
我找不到在哪里设置文件my.cnf
或者my.ini
是.我想改变一些配置的aspecte.
我正在使用Centos 6.
我可以在Ubuntu上安装MYSQL而不提示下面的代码:
dbpass="mydbpassword"
export DEBIAN_FRONTEND=noninteractive
echo mysql-server-5.1 mysql-server/root_password password $dbpass | debconf-set-selections
echo mysql-server-5.1 mysql-server/root_password_again password $dbpass | debconf-set-selections
apt-get -y install mysql-server
Run Code Online (Sandbox Code Playgroud)
有debconf-set-choices的部分我在网上找到了某个地方(可能在这里不记得),到目前为止它对我来说还算合适.我不是那么了解它是如何工作的专家,但确实如此.
但是,我想为Percona做同样的事情.我已经设置了apt包管理器来处理使用apt-get for percona.所以现在我的代码如下:
dbpass="dbpass" && export dbpass
export DEBIAN_FRONTEND=noninteractive
echo percona-server-server-5.5 percona-server-server-5.5/root_password password $dbpass | debconf-set-selections
echo percona-server-server-5.5 percona-server-server-5.5/root_password_again password $dbpass | debconf-set-selections
apt-get -y install percona-server-server-5.5
Run Code Online (Sandbox Code Playgroud)
但是,Percona安装但没有定义的密码.我知道我在debconf中丢失了一些东西.
我在这里感谢一些指导.
提前致谢.
我有这个查询的问题:
SELECT
uca.user_activity_id,
uca.user_call_id,
uca.call_activity_id,
uca.user_activity_token,
uc.call_group_id,
uc.user_id
FROM users_calls_activities uca
INNER JOIN users_calls_activities uca2 ON uca2.user_activity_id = uca.user_activity_is_validated_with
AND aux.user_call_id = 1744136
INNER JOIN users_calls uc ON uc.user_call_id = uca.user_call_id;
Run Code Online (Sandbox Code Playgroud)
我们有一个带有percona服务器的集群(5.6.29),在Azure中有5个节点(从0到4).节点0-3和4之间的区别在于,第一个节点在平衡器中,节点4在平衡器之外(但在集群中)
问题是在四个服务器(节点0-3)中查询真的很慢(15秒)而在另一个(节点4)中查询真的很快(0,002)
Afaik,解释计划应该是相同的,但我执行一个EXPLAIN
,结果是这样的:
节点0-3(慢)
+----+-------------+-------+------+-------------------------------------------------------------+--------------+---------+-------------------------------+---------+---------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+-------------------------------------------------------------+--------------+---------+-------------------------------+---------+---------------------------------------+ | 1 | SIMPLE | uca2 | ref | PRIMARY,user_call_id,user_call_id_2 | user_call_id | 4 | const | 1 | Using …
我注意到一些程序员使用COMMIT
其他使用conn.setAutoCommit(true);
来结束事务或回滚所以使用一个而不是另一个有什么好处?
主要区别在哪里?
conn.setAutoCommit(true);
Run Code Online (Sandbox Code Playgroud)
过度
statement.executeQuery(query);
statement.commit();
Run Code Online (Sandbox Code Playgroud) 我在项目的查询缓存上遇到了很多麻烦:我运行的是Percona的MySQL版本,在我的本地开发机器上和生产服务器上运行相同的版本.现在,启用查询缓存可以在我的本地计算机上获得出色的结果:几乎所有应该缓存的查询都是有效的.
现在,生产服务器上没有缓存完全相同的查询.一切都完全一样; mysql变量,数据库内容,代码库,登录用户,但是在生产过程中,只有少数查询被缓存,最重要的查询都被跳过.我无法弄清楚为什么:-)
因此,寻找解决方案,我正在使用以下查询,用于从主题表中选择最新的3个主题:(这是最"重"的查询,是我绝对想要缓存的那个!)
SELECT `topic`.* FROM `topics` AS `topic`
LEFT OUTER JOIN `topics` AS `topic_helper`
ON (`topic`.`id` = `topic_helper`.`id`
AND `topic_helper`.`created_on` < `topic`.`created_on`)
GROUP BY `topic`.`id` HAVING COUNT(*) < 3
ORDER BY `topic`.`created_on` DESC;
Run Code Online (Sandbox Code Playgroud)
所以,首先,SHOW VARIABLES LIKE '%query_cache%
给我相同的结果,无论是本地还是生产:
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 10485760 |
| query_cache_strip_comments | OFF |
| query_cache_type | ON |
| query_cache_wlock_invalidate …
Run Code Online (Sandbox Code Playgroud) 我很长一段时间以来一直是MySQL的用户.我想开始使用最流行的叉子之间的所有不同的变化.问题是我找不到它们之间的任何好的比较,我最终只会尝试所有这些.我关心的是生产,因为我不会在生产中试验所有这些叉子.
你有没有在生产中运行任何MySQL分支?
有什么好处?有什么缺点?
最近,我从标准MySQL迁移到了Percona
,并使用Percona向导生成my.cnf
.
但是,我可以看到,默认情况下,生成的设置供my.cnf
使用query_cache_type = 0
.(禁用查询缓存).
我在服务器上运行的唯一一件事是Wordpress博客.我的问题是:
表A具有表B(id)的外键约束(类型).但是,type不为null,id可以为空.
我正在尝试使用information_schema构建一个查询,该查询将查看外键约束并匹配列类型和可空列以查看它们是否同步,但是我遇到逻辑问题.
select kcu.table_name, kcu.column_name, c.column_type, c.is_nullable,kcu.referenced_table_name, kcu.referenced_column_name,c.column_type, c.is_nullable
from key_column_usage kcu
inner join columns c on c.table_schema=kcu.table_schema and c.column_name=kcu.column_name and c.table_name=kcu.table_name
where kcu.referenced_table_name='Table_B' and kcu.table_name='Table_A';
Run Code Online (Sandbox Code Playgroud)
我知道这种语法不正确 - 这就是我迄今为止所能完成的所有内容.我希望能够为数据库中的每个表执行此操作,并按table_name,然后是column_name对其进行排序.它可以排除column_type和is_nullable字段相同的列.