Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2764712
  • 博文数量: 587
  • 博客积分: 6356
  • 博客等级: 准将
  • 技术积分: 6410
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-23 10:54
个人简介

器量大者,福泽必厚

文章分类

全部博文(587)

文章存档

2019年(3)

2018年(1)

2017年(29)

2016年(39)

2015年(66)

2014年(117)

2013年(136)

2012年(58)

2011年(34)

2010年(50)

2009年(38)

2008年(16)

分类: LINUX

2013-07-28 10:27:05

一:
出现这个问题,可能是mysql.sock不存在,或者找不到,或者文件损害需要重新建立连接
1.查看mysql.sock地址是否是正确地址
我通过vim /etc/my.cnf,修改了[mysqld]选项下面的socket的值
socket=/usr/local/mysql/var/mysql.sock   # 看看是否是mysql.sock的准确地址
或可以通过find / -name mysql.sock来查看mysql.sock文件的位置!
2 为/tmp/mysql.sock 建立连接
ln -s /usr/local/mysql/varmysql.sock /tmp/mysql.sock
3.怎样保护“/tmp/mysql.sock   ”不被删除
如果你有这个问题,事实上任何人可以删除MySQL通讯套接字“/tmp/mysql.sock”,在Unix的大多数版本上,你能通过为其设置sticky(t)位来保护你的“/tmp”文件系统。作为root登录并且做下列事情:
shell>   chmod   +t   /tmp
这将保护你的“/tmp”文件系统使得文件仅能由他们的所有者或超级用户(root)删除。
你能执行ls   -ld   /tmp检查sticky位是否被设置,如果最后一位许可位是t,该位被设置了

二:mysql out of memory 
现象:mysql运行一段时间后,对外提供服务不正常! 准备先关闭mysql ,然后再重启mysql服务
mysqladmin关闭mysqld服务时有如附件的提示:
解决方法:添加物理内存或修改my.cnf配置文件!

三:修改某个db的默认编码格式和显示db支持的编码格式
见附件:
4:朋友电话告知帮忙处理一个web连接不上db的问题!
查看web程序的lib目录下有mysql驱动jar包,版本也匹配!查看mysql服务是否正常?正常,查看防火墙上是否开放了3306端口? 开放了!但用户用一个最简单test.jsp(仅仅是测试数据库连接的最简单程序) ,但一直提示数据库连接失败,很是奇怪,原来是/etc/my.cnf中添加了--skip-network的缘故!注释掉该行就可以了!
5: [ERROR] /usr/local/mysql/bin/mysqld: Sort aborted: Server shutdown in progress

There are two main reasons for this error message to show:

 

1) The MySQL query you are trying to execute takes too long and the MySQL server times out.

The solution for this issue is to optimize your database for the queries which fail.

 

2) You have a crashed table in your database.

The solution in this case is to  and  your database.

 

If a particular table crashes often and repairing/optimizing it does not help,  this most probably means that the table's structure is not working properly with our MySQL server setup. In such cases the easiest way to fix a crashed MyISAM table for good is to change its database engine from MyISAM to InnoDB


6:mysqldump中--default-character-set参数理解:

7:太多的sleep进程
mysql -uroot -p***后登陆数据库,show proceelist;发现有太多的sleep进程,见附件!

原因:my.cnf中的wait_timeout和interactive_timeout 设置的太大!
my.cnf中的相关设置如下:

wait_timeout            = 64800

interactive_timeout     = 64800

将其修改为:

wait_timeout            = 100

interactive_timeout     = 100
问题即可正常!
8:有一段时间测试两个数据库间同步,#我们的环境比较特殊不适合用mysql master/slave,有几天测试使用rsync同步数据库下的表,发现使用rsync同步后,表经常损坏!
首先要修复表,修复的方法:
mysqlcheck  -uroot –p***  --repair --extended  mydb
9:有时候为了确保数据一致性,需要刷新mysql 缓存
方法见附件:

10:有时候也可以优化数据库:
mysqlcheck -u root -p**** --auto-repair --optimize --all-databases ##自动修复优化所有数据库
11:修改使得root远程登陆
:默认情况下,不允许root远程登陆,进行下面修改后就可以使得root远程登陆



12: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

解决方法:

该错误表示 getcwd 命令无法定位到当前工作目录。一般来说是因为你 cd 到了某个目录之后 rm 了这个目录,这时去执行某些 service 脚本的时候就会报 getcwd 错误。只需要 cd 到任何一个实际存在的目录下在执行命令即可。

13:配置master/slave时遇到两个问题

13.1:

在slave上执行show master status;居然有显示,

原因:我在slave上也开启了log-bin文件!

解决方法:将该行注释掉,然后show master status就不会有结果显示了!

13.2:在配置master/slave时,

使用了grant all on test.* to ‘slaveuser’@’%’ identified by ‘slaveuser’;  ##应该使用grant all on *.* to ‘slaveuser’@’%’ identified by ‘slaveuser’; 当然all的权限太大了,可以适当的调小!
13.3:
slave-skip-errors=all


开始没有加上这个,由于master和slave上数据不一致,一条语句运行不正常就会导致master/slave 不工作,我当时的建议是在slave和master上将相关数据,然后在mster上插入,数据即可同步(但我们的环境不需要这么精细,允许有点差距!)
解决方法:在slave机器的配置文件中加入,slave-skip-errors=all 忽略这个错误


导致了就算slaveuser的密码正确也会提示密码错误!

14:为了安装mysql5.5.X 编译cmake,结果出错,见附件

15:mysql下添加一个用户,对几个数据库都有读和写权限,见附件!

16:max_allowed_packet设置问题,,但mead非要调大概值,为了不影响mysql服务的运行

于是:

set global max_allowed_packet=1024*1024*2048  ##这个表示2G的大小

但系统不允许设置为2G的大小,最大的max_allowed_packet值为1G,

mysql>show VARIABLES like '%max_allowed_packet%';
摘录一段解释如下:

17:alter table person engine=innodb;做存储引擎转换时会造成锁表,从而影响业务,对于alter table 时会生成一个中间的文件,等转换完成了中间文件自动消


18:要注意wait_timeout设置一定要大,否则容易造成flush tables with read lock;锁不住表,打开一个终端,运行flush tables with read lock; 特别注意该终端一定不能执行exit,否则就会自动解锁
19:telnet测试mysql 3306端口的连通情况

开始怀疑防火墙有问题,再次查看,防火墙是正常的(实在不行就关闭了iptables,然后测试看看返回啥结果),其实这个返回结果是正常的!可以创建一个测试用户(利用grant),利用mysql client端登录!
20:
slave机器上的表被锁定,造成show slave status \G 查看时Exec_Master_Log_Pos: ***位置一直没有变化,将相关session kill 掉即可!


锁表造成机器的负载高:锁表时和解除锁时的机器负载对比,见下图


21:show processlist时发现有大量的query end 状态的进程,见附件!

解决方法:
修改innodb_flush_log_at_trx_commit 为0 即可,这样带来了数据的不安全性!

22:赋予一个mysql 用户执行存储过程的权限,见附件

23:将表的记录写入到一个文件里面:


出错原因:目录的权限不够,放到/tmp目录下就可以了!


24:repair表的时候会生成一个中间文件,见附件!

而且repair过程中会导致表被锁住!
25:日志文件中提示,见附件

同事把read_buffer_size和read_rnd_buffer_size调成20G,日志文件里面提示见附件:显然调整的过大了,将值调适当即可!

26:删除一个mysql用户

27:data目录下有#sql-**-**.ibd文件
同事在执行alter table tablename engine='innodb' 不小心中断了,在data目录下有类似于附件中的文件,我将这个文件移到另外一个目录下了,然后重启mysql结果有附件中的报错

解决方法:将该db通过mysqldump导出成sql文件,然后重新导入即可
28:修改表名

29:设置autocommit为0,在my.cnf的[mysqld]中加入
autocommit = 0   即可
30:mysql权限不正确,造成mysql.sock文件不能生成,从而有如下报错

31:内存太少的缘故,具体原因不详,其实我机器有32G内存,作为一个专用到db,我分配innodb_buffer_size为26G,但不知道为什么free -m 查看的时候,现在使用的内存很少,仅仅2G左右,当时就在mysql错误日志里有如下的报错:同时我在执行一个select * from bigtable的操作,很长时间没有出来结果,提示mysql server has gone

后来导入了一个大的sql, free -m查看时发现used项对应的已经变的很大:

  1. [root@db3 var]# free -m
  2.      total used free shared buffers cached
  3. Mem: 32044 31422 621 0 157 2042
  4. -/+ buffers/cache: 29222 2821
  5. Swap: 16087 151 15936

32:
《VM.SWAPPINESS=0在最新内核中可能会OOM,MYSQL被意外KILL》请使用RHEL/CentOS 6.4及更新版本内核的MySQL同志们注意,vm.swappiness = 0的默认行为修改了,如果继续设置vm.swappiness = 0,有可能导致系统内存溢出,从而导致MySQL被意外kill掉。

33: Sort aborted: Query execution was interrupted
原因##摘之percona pdf

34:




阅读(2096) | 评论(0) | 转发(0) |
0

上一篇:rsync和scp限制速度

下一篇:mysql同步数据库

给主人留下些什么吧!~~