mysql问题汇总

1、Slave_SQL_Running:No

原因:

1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

解决办法一:

mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

解决办法二:

首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值

进入master

mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 |              |                  | 
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

然后到slave服务器上执行手动同步:

mysql> change master to 
> master_host=‘master_ip‘,
> master_user=‘user‘, 
> master_password=‘pwd‘, 
> master_port=3306, 
> master_log_file=localhost-bin.000094‘, 
> master_log_pos=33622483 ;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
........
            Master_Log_File: localhost-bin.000094
        Read_Master_Log_Pos: 33768775
             Relay_Log_File: localhost-relay-bin.000537
              Relay_Log_Pos: 1094034
      Relay_Master_Log_File: localhost-bin.000094
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:

手动同步需要停止master的写操作!

2、Slave failed to initialize relay log info structure from the repository

在my.cnf配置文件中添加如下项:

relay_log = /opt/mysql/logs/mysql-relay-bin

重启mysql实例使其生效。

3、ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

解决办法:

1.进入MySQL数据库默认的数据库存储目录:

/usr/local/mysql/var

这个目录根据实际情况而定,使用不同的安装方式,或是编译指定目录不同,这个目录也不一定相同,但只要找到数据库的存储目录就好。

2.删除以下两个文件:

master.info

relay-log.info

3.登陆数据库后,执行:

start slave;

返回如下信息:

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql>

这样就说明问题已经解决了。

4、Starting MySQL..The server quit without updating PID file

解决办法:

1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限 
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  然后重新启动mysqld! 
2.可能进程里已经存在mysql进程 
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld! 
3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。 
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。
4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。 
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data 
5.skip-federated字段问题 
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。 
6.错误日志目录不存在 
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限 
7.selinux惹的祸,如果是centos系统,默认会开启selinux 
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。 
但是没有解决,最后直接给/usr/local/mysql/data 目录 chmod 777 -R  /usr/local/myql/data 问题解决 应该是 权限问题,不能生成localhost.localdomain.pid 文件 
8.修改了机器名,报了个 Starting MySQL..The server quit without updating PID file (/opt/mysql/data/xxx.pid). 
xxx为新的机器名。 
进入mysql/data目录发现.pid 文件发现本地的是 localhost.pid 于是重命名为xxx.pid 启动就ok了

5、配置文件

mysql配置文件为my.cnf,它所在位置根据安装时设定的。
当mysqld服务启动的时候,默认会按一定的顺序读取配置文件的。
1
2
3
[[email protected] ~]# /opt/mysql/libexec/mysqld --verbose --help
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /opt/mysql/etc/my.cnf ~/.my.cnf
可以发现,系统默认是按/etc/my.cnf-----/etc/mysql/my.cnf----/usr/local/mysql/my.cnf的顺序读取配置文件的,当有多个配置文件时,mysql会以读取到的最后一个配置文件中的参数为准。
常用的配置参数有:
1
port = 3306
mysqld服务运行时的端口号,默认为3306
1
socket = /tmp/mysql.sock
socket文件是linux/unix系统特有的,用户在该环境下的客户端连接可以不通过tcp/ip网络,而直接使用socket文件连接
1
back_log = 300
该值为设定档mysql暂时停止响应新的请求前,短时间内有多少个请求可以存在堆栈内,如果系统在短时间内有很多的连接,应该增大该值,该值最好设置小于512的整数
1
skip-networking
不在tcp/ip端口上进行监听,所有的连接都是通过本地的socket文件连接,这样可以提高安全性,确定是不能通过网络连接数据库。
1
skip-locking
避免mysql的外部锁定,增强稳定性
1
skip-name-resolve
避免mysql对外部的连接进行DNS解析,若使用此设置,那么远程主机连接时只能使用ip,而不能使用域名
1
max_connections = 3000
指定mysql服务所允许的最大连接进程数,
1
max_connect_errors = 1000
每个主机连接允许异常中断的次数,当超过该次数mysql服务器将禁止该主机的连接请求,直到mysql服务重启,或者flushhosts命令清空host的相关信息
1
table_cache = 614k
表的高速缓冲区的大小,当mysql访问一个表时,如果mysql表缓冲区还有空间,那么这个表就会被打开通放入高速缓冲区,好处是可以更快速的访问表中的内容。
如果open_tables和opened_tables的值接近该值,那么久该增加该值的大小
1
max_allowed_packet = 4M
设定在网络传输中一次可以传输消息的最大值,系统默认为1M,最大可以是1G
1
sort_buffer_size = 16M
排序缓冲区用来处理类似orderby以及groupby队列所引起的排序,系统默认大小为2M,该参数对应分配内存是每个连接独占的,若有100个连接,实际分配的排序缓冲区大小为6*100;推荐设置为6M-8M
1
join_buffer_size 8M
联合查询操作所使用的缓冲区大小。
1
thread_cache_size = 64
设置threadcache池中可以缓存连接线程的最大数量,默认为0,该值表示可以重新利用保存在缓存中线程的数量,当断开连接时若缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,若果缓存中是空的或者是新的请求,那么线程将被重新创建。设置规律为:1G内存设置为8,2G内存设置为16,4G以上设置为64
1
query_cache_size = 64M
指定mysql查询缓冲区的大小,用来缓冲select的结果,并在下一次同样查询的时候不再执行查询而直接返回结果,根据Qcache_lowmem_prunes的大小,来查看当前的负载是否足够高
1
query_cache_limit = 4M
只有小于该值的结果才被缓冲,放置一个极大的结果将其他所有的查询结果都覆盖
1
tmp_table_size 256M
内存临时表的大小,如果超过该值,会将临时表写入磁盘
1
default_storage_engine = MYISAM
创建表时默认使用的存储引擎
1
log-bin=mysql-bin
打开二进制日志功能
1
key_buffer_size = 384M
指定索引缓冲区的大小,内存为4G时刻设置为256M或384M
1
read_buffer_size = 8M
用来做MYISAM表全表扫描的缓冲大小
。。。。。。。。。
常用配置实例
[client]
default-character-set = utf8
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /opt/mysql
datadir = /opt/mysql/var
log-error = /opt/mysql/var/mysql-error.log
pid-file = /opt/mysql/var/mysql.pid
log_slave_updates = 1
log-bin = /opt/mysql/var/mysql-bin
binlog_format = mixed
binlog_cache_size = 4M
max_binlog_cache_size = 8M
max_binlog_size = 1G
expire_logs_days = 90
key_buffer_size = 384M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
join_buffer_size = 2M
thread_cache_size = 8
query_cache_size = 32M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
thread_concurrency = 32
table_cache = 614
table_open_cache = 512
open_files_limit = 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 16M
default-storage-engine = MYISAM
thread_stack = 192k
transaction_isolation = READ-COMMITTED
tmp_table_size = 256M
max_heap_table_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
long_query_time = 2
slow_query_log
slow_query_log_file = /opt/mysql/var/slow.log
skip-name-resolve
skip-locking
skip-networking
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 512M
innodb_data_file_path = ibdata1:256M:autoextend
innodb_file_io_threads = 4
innodb_thread_aoncurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
[mysqldump]
quick
max_allow_packet = 64M
[mysql]
no-auto-rehash
safr-updates
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
[mysqldump]
quick
max_allow_packet = 64M
[mysql]
no-auto-rehash
safe-updates
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

时间: 2024-10-12 04:43:01

mysql问题汇总的相关文章

CentOS安装MySQL问题汇总

遇到的错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) denied for user 'root'@'localhost' (using password: NO) 描述:刚安装完MySQL,第一次登陆. [[email protected] ~]$ mysql -u root -p Enter password: #我记得root初始是没密码的,这句直接回车 ERROR

MySQL工具汇总

本文汇总了和MySQL运维开发相关的所有工具,并会持续更新 1. 工具套件集 percona-toolkit: http://www.percona.com/software/percona-toolkit oak-toolkit: http://code.openark.org/forge/openark-kit ps-helper(performance schema 工具函数集):https://github.com/MarkLeith/dbahelper 2. MySQL 实时状态分析

MySQL复习汇总

以下引自燕十八老师的复习秘籍. 顺附燕十八老师的个人博客:伟大的农场主,兼职PHP讲师. mysql复习 一:复习前的准备 1:确认你已安装wamp 2:确认你已安装ecshop,并且ecshop的数据库名为shop 二 基础知识: 1.数据库的连接 mysql -u -p -h -u 用户名 -p 密码 -h host主机 2:库级知识 2.1 显示数据库: show databases; 2.2 选择数据库: use dbname; 2.3 创建数据库: create database db

MySQL函数汇总

前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时查看. 数学函数 (1)ABS(x) 返回x的绝对值 (2)PI() 返回圆周率π,默认显示6位小数 (3)SQRT(x) 返回非负数的x的二次方根 (4)MOD(x,y) 返回x被y除后的余数 (5)CEIL(x).CEILING(x) 返回不小于x的最小整数 (6)FLOOR(x) 返回不大于x

MySQL1:MySQL函数汇总

前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时查看. 数学函数 (1)ABS(x) 返回x的绝对值 (2)PI() 返回圆周率π,默认显示6位小数 (3)SQRT(x) 返回非负数的x的二次方根 (4)MOD(x,y) 返回x被y除后的余数 (5)CEIL(x).CEILING(x) 返回不小于x的最小整数 (6)FLOOR(x) 返回不大于x

【转】mysql基础汇总

mysql基础知识语法汇总整理(二)  原文:https://www.cnblogs.com/cxx8181602/p/9525950.html 连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -h 127.0.0.1 -P 3306 -u root -p **** /*退出mysql*/ exit;   数据库操作 #数据库操作 /*关键字:create 创建数据库(增)*/ create database 数据库名 [

快速回顾MySQL:汇总和分组

10.3 汇总数据 我们经常需要汇总数据而不用把它们实际检索处出来,为此MySQL提供了专门的函数.使用这些函数,MySQL查询可用于检索数据,以便分析和报表的生成.这种类型的检索例子有以下几种: 确定表中的行数(或者满足某个条件或包含某个特定值的行数). 获得表中行组的和. 找出表列(或所有行或某些特定的行)的最大值.最小值和平均值. 上述的例子都需要对表中数据(而不是实际数据本身)汇总.因此,返回实际表数据是对时间和处理资源的一种浪费(更不用说带宽了). MySQL提供了5个聚集函数. 聚集

mysql 错误汇总

mysql更改表字符集和排序方式的时候出现如下错误. (HY000): Error on rename of .... (errno: 150). 因为表中的外键或主键的问题. 需要修改FOREIGN_KEY_CHECKS=0的值为0.然后再更改该表的字符集和排序方式,然后再把该变量值改回为1.即可. 使用如下的命令更改即可. "use confluence;SET FOREIGN_KEY_CHECKS=0; alter table $i convert to character set utf

mysql主从复制汇总

binlog日志 二进制日志格式 基于语句 statement 基于行 rows 混合方式 mixed 二进制日志事件 基于位置postion基于时间datetime-timestamp 复制过程有一个很重要的限制--复制在slave上是串行化的也就是说master上的并行更新操作不能在slave上并行操作.所以slave上数据一般要慢于master上数据.即master与slave之间的数据在一定时间内会不同步. 同步.异步.半同步复制 同步 同步复制可以定义为数据在同一时刻被提交到一台或多台

Oracle与MySql知识汇总

sqlplus 连接数据库的方式 1> cmd 中输入:sqlplus 用户名/密码@数据库实例 如:sqlplus system/[email protected], sqlplus sys/admin as sysdba 2> 打开sqlplus 直接输入用户名和密码 3> 使用命令:connect sys/admin as sysdba, connect system/lxr316 4> 超级管理员登录:sys as sysdba 断开数据库:disconn(ect); My