mysqlerror2003
- 格式:doc
- 大小:73.00 KB
- 文档页数:2
Mysql连接数太多ERROR1040(HY000):Toomanyconnections数据库连接报错:ERROR 1040 (HY000): Too many connections1、查看连接数/usr/local/mysql/bin/mysqladmin -h host -u root -p123456 status这条命令返回MYSQL当前状态的⼏个值Uptime: 18869 Threads: 1 Questions: 1 Slow queries: 0 Opens: 33 Flush tables: 1 c: 0 Queries per second avg: 0.000Uptime:是mysql正常运⾏的时间。
Threads:指开启的会话数吧。
Questions:服务器启动以来客户的问题(查询)数⽬(应该是只要跟mysql作交互:不管你查询表,还是查询服务器状态都问记⼀次)。
Slow queries:按字⾯意思是慢查询的意思,不知道musql认为多久才⾜够算为长查询,这个先放着。
Opens:服务器已经打开的数据库表的数量Flush tables: 服务器已经执⾏的flush ...、refresh和reload命令的数量。
open tables:通过命令是⽤的数据库的表的数量,以服务器启动开始。
Queries per second avg:select语句平均查询时间?2、更改配置⽂件的连接数配置⽂件⼀般存在位置:/etc/f修改项:[mysqld]下增加max_connections(最⼤连接数)和wait_timeout(连接等待时间)[mysqld]max_connections=5000wait_timeout=53、停⽌和启动服务停⽌mysql服务:/usr/local/mysql/bin/mysqladmin shutdown -uroot-p123456启动mysql服务:/usr/local/bin/mysqld_safe --defaults-file=/etc/f--user=root说明:--defaults-file为指定的配置⽂件--user为登录mysql的⽤户名4、重启成功后,登录mysql去kill连接数进⼊命令⾏:./mysql -uroot -p123456查看连接信息:mysql> show processlist;Host列为所以连接过来的信息,Id为对应的标识,可以kill掉mysql> kill 1;。
mysql+mycat搭建稳定⾼可⽤集群,负载均衡,主备复制,读写分离数据库性能优化普遍采⽤集群⽅式,oracle集群软硬件投⼊昂贵,今天花了⼀天时间搭建基于mysql的集群环境。
主要思路简单说,实现mysql主备复制-->利⽤mycat实现负载均衡。
⽐较了常⽤的读写分离⽅式,推荐mycat,社区活跃,性能稳定。
测试环境MYSQL版本:Server version: 5.5.53,到官⽹可以下载WINDWOS安装包。
注意:确保mysql版本为5.5以后,以前版本主备同步配置⽅式不同。
linux实现思路类似,修改f即可。
A主mysql。
192.168.110.1:3306, ⽤户root,密码root。
操作系统:win7 x64,内存:4g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binB备mysql。
192.168.110.2:3306, ⽤户root,密码root。
操作系统:win2003 x64,内存:1g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binA主、B备的mysql中创建sync_test数据库实现mysql主备复制主要思路:A主mysql开启⽇志,B备mysql读取操作⽇志,同步执⾏。
⼀般为主备同步,主主同步不推荐使⽤。
配置A主mysql1)修改my.ini。
需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log⽬录,以及mysql-bin.log⽂件。
[mysqld]server-id=1 #主机标⽰,整数port=3306log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此⽂件可写read-only=0 #主机,读写都可以binlog-do-db=sync_test #需要备份数据库,多个写多⾏binlog-ignore-db=mysql #不需要备份的数据库,多个写多⾏2)允许MYSQL远程访问#登录mysql console进⼊%home%/bin,执⾏mysql -uroot -proot#授权。
MYSQL之表分区----按⽇期分区MYSQL之表分区----按⽇期分区于 2015-07-16 14:23:38 发布40948收藏 16错误的按⽇期分区例⼦最直观的⽅法,就是直接⽤年⽉⽇这种⽇期格式来进⾏常规的分区:PLAIN TEXTCODE:1.mysql> create table rms (d date)2.-> partition by range (d)3.-> (partition p0 values less than ('1995-01-01'),4.-> partition p1 VALUES LESS THAN ('2010-01-01'));上⾯的例⼦中,就是直接⽤"Y-m-d"的格式来对⼀个table进⾏分区,可惜想当然往往不能奏效,会得到⼀个错误信息: ERROR 1064 (42000): VALUES value must be of same type as partition function near '),partition p1 VALUES LESS THAN ('2010-01-01'))' at line 3上述分区⽅式没有成功,⽽且明显的不经济,⽼练的DBA会⽤整型数值来进⾏分区:PLAIN TEXTCODE:1.mysql> CREATE TABLE part_date12.-> ( c1 int default NULL,3.-> c2 varchar(30) default NULL,4.-> c3 date default NULL) engine=myisam5.-> partition by range (cast(date_format(c3,'%Y%m%d') as signed))6.-> (PARTITION p0 VALUES LESS THAN (19950101),7.-> PARTITION p1 VALUES LESS THAN (19960101) ,8.-> PARTITION p2 VALUES LESS THAN (19970101) ,9.-> PARTITION p3 VALUES LESS THAN (19980101) ,10.-> PARTITION p4 VALUES LESS THAN (19990101) ,11.-> PARTITION p5 VALUES LESS THAN (20000101) ,12.-> PARTITION p6 VALUES LESS THAN (20010101) ,13.-> PARTITION p7 VALUES LESS THAN (20020101) ,14.-> PARTITION p8 VALUES LESS THAN (20030101) ,15.-> PARTITION p9 VALUES LESS THAN (20040101) ,16.-> PARTITION p10 VALUES LESS THAN (20100101),-> PARTITION p11 VALUES LESS THAN MAXVALUE );Query OK, 0 rows affected (0.01 sec)搞定?接着往下分析PLAIN TEXTCODE:1.mysql> explain partitions2.-> select count(*) from part_date1 where3.-> c3> '1995-01-01' and c3 <'1995-12-31'\G4.*************************** 1. row ***************************5.id: 16.select_type: SIMPLE7.table: part_date18.partitions: p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p119.type: ALL10.possible_keys: NULL11.key: NULL12.key_len: NULL13.ref: NULL14.rows: 810000015.Extra: Using where16.1 row in set (0.00 sec)万恶的mysql居然对上⾯的sql使⽤全表扫描,⽽不是按照我们的⽇期分区分块查询。
mysql报错ThisfunctionhasnoneofDETERMINISTIC解决⽅案本⽂章向朋友们介绍开启bin-log⽇志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法,创建存储过程时出错信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)原因:这是我们开启了bin-log, 我们就必须指定我们的函数是否是1 DETERMINISTIC 不确定的2 NO SQL 没有SQl语句,当然也不会修改数据3 READS SQL DATA 只是读取数据,当然也不会修改数据4 MODIFIES SQL DATA 要修改数据5 CONTAINS SQL 包含了SQL语句其中在function⾥⾯,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被⽀持。
如果我们开启了 bin-log, 我们就必须为我们的function指定⼀个参数。
解决⽅法:SQL codemysql> show variables like 'log_bin_trust_function_creators';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin_trust_function_creators | OFF |+---------------------------------+-------+mysql> set global log_bin_trust_function_creators=1;mysql> show variables like 'log_bin_trust_function_creators';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin_trust_function_creators | ON |这样添加了参数以后,如果mysqld重启,那个参数⼜会消失,因此记得在f配置⽂件中添加:log_bin_trust_function_creators=1感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
mysql链接错误:LostconnectiontoMySQLserveratreadin。
在远程连接mysql的时候,连接不上,出现如下报错:Lost connection to MySQL server at 'reading authorization packet', system error: 0原因分析:mysql开启了DNS的反向解析功能,这样mysql对连接的客户端会进⾏DNS主机名查找。
mysql处理客户端解析过程:1)当mysql的client连过来的时候,服务器会主动去查client的域名。
2)⾸先查找 /etc/hosts ⽂件,搜索域名和IP的对应关系。
3)如果hosts⽂件没有,则查找DNS设置,进⾏DNS反向解析,直到timeout连接失败。
mysql的DNS反向解析:1)mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配er⾥的权限记录(某些是⽤hostname定义的)。
2)如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。
解决⽅案:1)把client的ip写在mysql服务器的/etc/hosts⽂件⾥,随便给个名字做主机映射即可。
2)在f配置⽂件中的[mysqld]区域添加skip-name-resolve,即跳过mysql连接的DNS反向解析功能,这样能很好地提⾼mysql性能。
在这种情况下,就只能使⽤MySQL授权表中的IP来连接mysql服务了。
对于第⼀种⽅法显然⽐较笨,也不实⽤!强烈推荐第⼆种⽅法,添加skip-name-resolve选项可以禁⽤dns解析,这样的话,就不能在mysql 的授权表中使⽤主机名了,只能使⽤IP。
--------------------------------------------------------------------------------------------------------------另外:如果在f⽂件中配置了bind-address地址绑定的地址(说明别的机器远程只能通过这个绑定的本机地址来连接mysql),可以将其注释掉。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系MySQL使用数据库出现如下异常,用的是dbcp连接池,,跪求!!!严重:Servlet.service()forservlet[springDispatcherServlet]incontextwithpath[/springmybatis]t hrewexception[Requestprocessingfailed;nestedexceptionisorg.mybatis.spring.MyBatisSyst emException:nestedexceptionisorg.apache.ibatis.exceptions.PersistenceException:###Errorqueryingdatabase.Cause:org.springframework.jdbc.CannotGetJdbcConnectionEx ception:CouldnotgetJDBCConnection;nestedexceptionisjava.sql.SQLException:Cannotcre atePoolableConnectionFactory(Accessdeniedforuser’root’@’localhost’(usingpassword:YE S)) ###Theerrormayexistinfile[D:\Tomcat\webapps\springmybatis\WEB-INF\classes\com\hellojava\springmybatis\entity\UserMapper.xml]###Theerrormayinvolvecom.hellojava.springmybatis.dao.IUserDao.loadbyId###Theerroroccurredwhileexecutingaquery###Cause:org.springframework.jdbc.CannotGetJdbcConnectionException:CouldnotgetJD BCConnection;nestedexceptionisjava.sql.SQLException:CannotcreatePoolableConnection Factory(Accessdeniedforuser’root’@’localhost’(usingpassword:YES))]withrootcause java.sql.SQLException:Accessdeniedforuser’root’@’localhost’(usingpassword:YES) atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:911)atcom.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3953)atcom.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1276)atcom.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)。
MySQL5.6数据导⼊MySQL5.7报错:ERROR1031(HY000)⼀、故障现象今天将⼀个在MySQL5.7上的数据导⼊到MySQL5.6⾥⾯去,默认存储引擎都是InnoDB,导⼊报错如下:[root@oratest52 data]# mysql -uroot -p123456 < /data/127.sqlERROR 1031 (HY000) at line 598885: Table storage engine for 't_config_dbconnects' doesn't have this option报错提⽰598885⾏有问题,t_config_dbconnects表的存储引擎不⽀持这个选项。
由于备份⽂件较⼤(50G),不可能⽤vi打开去看,⽤sed⽂件查看该表的建表sql如下:[root@oratest52 data]# sed -n '598870,598899p' 127.sql---- Current Database: `db_config`--CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db_config` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `db_config`;---- Table structure for table `t_config_dbconnects`--DROP TABLE IF EXISTS `t_config_dbconnects`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `t_config_dbconnects` (`ID` smallint(6) unsigned NOT NULL AUTO_INCREMENT,`NAME` char(50) DEFAULT NULL,`HOST` char(50) NOT NULL DEFAULT '',`PORT` char(10) NOT NULL DEFAULT '',`USER` char(50) NOT NULL DEFAULT '',`PASSWORD` char(50) NOT NULL DEFAULT '',`CHARSET` char(30) DEFAULT NULL,`DBNAME` char(50) NOT NULL DEFAULT '',`ABOUT` char(200) DEFAULT NULL,`POSTTIME` datetime DEFAULT NULL,`LASTUSER` char(50) DEFAULT NULL,PRIMARY KEY (`ID`),UNIQUE KEY `IDX_NAME` (`NAME`)) ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;可以看到最后⼀⾏中有ROW_FORMAT=FIXED⼆、初步分析发现报错的表的ROW_FORMAT格式是FIXED,并不是我们熟悉的Dynamic。
Mysql基于binlog⽅式进⾏数据同步常见问题解决⽅案汇总Mysql基于binlog⽅式进⾏数据同步常见问题解决⽅案汇总0、前置信息0.1、集群信息服务器连接信息:192.168.91.131(master)192.168.91.132(slave1)192.168.91.133(slave2)使⽤ssh⽅式访问服务器:ssh root@192.168.91.*输⼊对应密码访问0.2、从库数据导⼊在192.168.91.131命令⾏窗⼝下直接执⾏数据库表数据导⼊:mysqldump --default-character-set=utf8mb4 --host=192.168.91.131 -uroot -p123456 --opt --set-gtid-purged=OFF 从库需要导⼊的表名 | mysql --host=从库IP地址 --port=3306 -uroot -p123456 --default-character-set=utf8mb4 -C 从库需要导⼊的表名说明:使⽤此⽅式进⾏数据导⼊时,保证⽬标数据库中数据库表与源数据库中数据表⼀致,同时,⽬标数据库中数据表保证为空表0.3 、从库设置同步过滤规则---- 从库设置同步过滤规则(在f中设置,对应k8s在配置字典中配置) ----replicate_wild_do_table =要同步的数据库名.%replicate_wild_ignore_table =要忽略的数据库名.%1、数据同步(binlog⽅式)主、从库使⽤binlog⽅式同步数据,操作步骤:1.1、主库执⾏命令mysql> show master status;获取主库的binlog⽂件和当前位置,即查询结果的 File、Position 字段,例如:File字段值为 binlog.XXXXXXXX,Position 字段值为 YYYYYYYY1.2、从库执⾏命令mysql> show slave status;mysql> stop slave;mysql> reset slave;mysql> CHANGE MASTER TO MASTER_HOST = '192.168.91.131', MASTER_USER = 'repl',MASTER_PASSWORD = '123456', MASTER_PORT = 3306, MASTER_LOG_FILE='binlog.XXXXXXXX',MASTER_LOG_POS=YYYYYYYY;mysql> start slave;mysql> show slave status;2、常见问题汇总及解决2.1、主、从库数据表字符集不⼀致2.1.1、报错信息Last_SQL_Errno: 1677Last_SQL_Error: Column1of table'XXX' cannot be converted from type 'varchar(150(bytes))'to type 'varchar(110(bytes))'2.1.2、解决⽅案1> 主、从库查看数据表的字符集信息mysql> show create table 表名;2> 从库执⾏如下命令mysql> stop slave;mysql>alter table table_name convert to character set主库数据表字符集;mysql> start slave;mysql> show slave status;2.2、主库删除从库不存在数据2.2.1、报错信息Last_Errno: 1032Last_SQL_Error: Could not execute Delete_rows event on table XXX; Can't find record in 'XXX',Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;2.2.2、解决⽅案1> 在从库执⾏如下命令:mysql> show slave status;找到Exec_Master_Log_Pos的值,例如:XXXX;Last_Error信息中的end_log_pos的值,例如:YYYYYY2> 在主库使⽤⾃带的mysqlbinlog查看删除信息:cd /usr/binmysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS --start-position=XXXX --stop-position=YYYYYY /var/lib/mysql/binlog.000001说明:主库mysqlbinlog所在⽂件夹位置,可以使⽤如下命令查找:3> 找到删除语句之后,在从库插⼊删除数据,例如:insert into test values(1, 'jack');4> 在从库执⾏如下命令mysql> start slave;mysql> show slave status;插⼊数据时,如果遇到索引冲突的问题,可参考如下操作:mysql插⼊数据时,出现Duplicate entry 'XXX'for key'XXX'的问题:可以使⽤replace into,replace into是insert into的增强版:(1) 如果插⼊的数据不重复,执⾏的是insert into操作,影响1条记录(2) 如果插⼊的数据重复,执⾏的是update操作,影响2条记录:先删除旧的数据,再插⼊新的数据。
mysql导⼊csv的4种报错的解决⽅法以此悼念我今天踩过的4个坑……坑⼀:local的错报错:ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides修正:去掉localmysql> load data infile ……坑⼆:csv地址错报错:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 修正:csv放进正确的地址先查出安全⽂件的地址:mysql> load data infile ……再把要导⼊的csv⽂件放进该⽂件夹:mysql>load data infile 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/user_info_utf.csv' ……注意:\ 必须改为 /坑三:⽂件格式错报错:ERROR 1366 (HY000): Incorrect integer value: ‘\FEFF1' for column ‘userId' at row 1修正:修改⽂件格式先⽤excel打开,另存为,保存类型-utf8,⼯具-web选项-编码utf8,替换原来⽂件:再⽤“记事本”打开,另存为,保存类型-所有⽂件,编码-utf8,替换原来⽂件:坑四:空值的错报错:ERROR 1292 (22007): Incorrect date value: ‘' for column ‘birth' at row 18修正:修改sql_mode:mysql> set @@sql_mode=ANSI;备注说明:ANSI模式:宽松模式,更改语法和⾏为,使其更符合标准SQL。
线上MYSQL同步报错故障处理⽅法总结(必看篇)前⾔在发⽣故障切换后,经常遇到的问题就是同步报错,数据库很⼩的时候,dump完再导⼊很简单就处理好了,但线上的数据库都150G-200G,如果⽤单纯的这种⽅法,成本太⾼,故经过⼀段时间的摸索,总结了⼏种处理⽅法。
⽣产环境架构图⽬前现⽹的架构,保存着两份数据,通过异步复制做的⾼可⽤集群,两台机器提供对外服务。
在发⽣故障时,切换到slave 上,并将其变成master,坏掉的机器反向同步新的master,在处理故障时,遇到最多的就是主从报错。
下⾯是我收录下来的报错信息。
常见错误最常见的3种情况这3种情况是在HA切换时,由于是异步复制,且sync_binlog=0,会造成⼀⼩部分binlog没接收完导致同步报错。
第⼀种:在master上删除⼀条记录,⽽slave上找不到。
Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1;Can't find record in 't1',Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;the event's master log mysql-bin.000006, end_log_pos 254第⼆种:主键重复。
在slave已经有该记录,⼜在master上插⼊了同⼀条记录。
Last_SQL_Error: Could not execute Write_rows event on table hcy.t1;Duplicate entry '2' for key 'PRIMARY',Error_code: 1062;handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000006, end_log_pos 924第三种:在master上更新⼀条记录,⽽slave上找不到,丢失了数据。
Sybase数据库修复及"sa"用户口令的恢复SYBASE数据库管理系统中数据库损坏后,重新建立数据库的时间比较长,这将给应用(特别是对时间要求特别严格的应用,如金融、证券等)造成很大的损失。
而如果在应用中遗忘超级用户sa口令,更会给系统管理带来极大的不便,甚至很多操作都无法进行。
本文介绍一种简便的修复SYBASE数据库及恢复sa口令的方法。
以下假定server能正常启动,server名为SYBASE,数据库名为demodb。
一、修复SYBASE数据库分为两种情况:1.数据库所用的设备正常,而库demodb的状态为suspect。
(1)以sa注册isql -u sa -P1>(2)修改server属性,置系统表为允许修改该状态。
1>sp_configure "allow updates",12>go3>recofigure with override4>go(3)修改数据库的状态,置数据库状态为server启动时不检测。
1>update master.sysdatabases set status = -327682>where name = "demodb"3>go(4)重启server。
(5)修改数据库的状态,置数据库状态为正常。
1>update master.sysdatabases set status = 02>where name ="demodb"3>go(6)修改server属性,置系统表为不允许修改状态。
1>sp_configure "allowupdates",02>go3>reconfigure with override4>go(7)再次重启server。
至此,如果数据库能够正常,则恢复完毕。
MySQL连接异常Communicationslinkfailure 最近遇到⼀个诡异的问题。
本⼈要参与⼀个项⽬⼆次开发中,把这个SpringBoot项⽬挡下来之后,启动成功,到现在都是正常的,当访问主页时报错了,错误如下:2021-05-1409:44:40.144 INFO 24164 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2021-05-1409:44:42.983 ERROR 24164 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.municationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.13.jar:8.0.13]at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.13.jar:8.0.13] 错误根本描述就是通信异常,数据库连接池创建失败。
MySQL读取Binlog⽇志常见的3种错误1. mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4'当我们在f中添加default-character-set=utf8mb4选项,那么在mysqlbinlog查看binlog时就会报错。
解决⽅案:.mysqlbinlog 后⾯添加 --no-defaults 选项例如:mysql bin可执⾏⽂件所在路径/bin/mysqlbinlog --no-defaults binlog所在⽬录/mysql_bin.0000052.ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.在进⾏mysqldump导出数据,进⾏数据库迁移。
⽽在迁⼊时,报了上⾯的错误。
查询原因是:当前GTID_EXECUTED参数已经有值,⽽从源数据库中倒出来的dump⽂件中包含了SET @@GLOBAL.GTID_PURGED的操作解决⽅法:⽅法⼀:reset mater这个操作可以将当前库的GTID_EXECUTED值置空⽅法⼆:--set-gtid-purged=off在dump导出时,添加--set-gtid-purged=off参数,避免将gtid信息导出mysqldump --set-gtid-purged=off -d dbtest > dbtest.sql3.ERROR 1782 (HY000) at line 23: @@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON.当我们在使⽤ mysqlbinlog ⼯具进⾏指定--stop-position 、--start-position 进⾏恢复(部分恢复)时报的错。
mysqlcouldnotberesolved:Nameorservicenotknown 问题: mysql DNS反解:skip-name-resolve错误⽇志有类似警告:1.120119 16:26:04 [Warning] IP address '192.168.1.10' could not be resolved: Name or service not known2.120119 16:26:04 [Warning] IP address '192.168.1.14' could not be resolved: Name or service not known3.120119 16:26:04 [Warning] IP address '192.168.1.17' could not be resolved: Name or service not known通过show processlist发现⼤量类似如下的连接:1.|592|unauthenticated user|192.168.1.10:35320|NULL|Connect| |login|NULL|2.|593|unauthenticated user|192.168.1.14:35321|NULL|Connect| |login|NULL|3.|594|unauthenticated user|192.168.1.17:35322|NULL|Connect| |login|NULL|skip-name-resolve 参数的作⽤:不再进⾏反解析(ip不反解成域名),这样可以加快数据库的反应时间。
修改配置⽂件添加并需要重启:复制代码代码如下:[mysqld]skip-name-resolve其实就是在[mysqld]下⾯⼀⾏加⼊skip-name-resolve重启mysql服务就可以了。
远程连接MySQL数据库报错:isnotallowedtoconnecttothisMYS。
1. 改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。
这个时候只要在localhost的那台电脑,登⼊后,更改 "mysql" 数据库⾥的 "user"表⾥的 "host" 项,从"localhost"改称"%"mysql -u root -pmysql>use mysql;mysql>update user set host ='%'where user='root';mysql>select host, user from user; 注:个⼈觉得不太适⽤!【错误内容】:SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0【错产⽣经过】:链接MySQL时出现.【解决办法】:打开my.ini,找到[mysqld]项,在其后加⼊⼀句:skip-name-resolve,保存,重启mysql服务即可~以上就是解决MySQL Error (2013): Lost connection to MySQL server at waiting for initial communication packet的全⽂介绍,希望对您学习和使⽤数据库有所帮助.2. 授权法。
1)例如,你想myuser使⽤mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON*.*TO'myuser'@'%' IDENTIFIED BY'mypassword'WITH GRANT OPTION;FLUSH PRIVILEGES; 2)如果你想允许⽤户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使⽤mypassword作为密码GRANT ALL PRIVILEGES ON*.*TO'myuser'@'192.168.1.3' IDENTIFIED BY'mypassword'WITH GRANT OPTION;FLUSH PRIVILEGES; 3)如果你想允许⽤户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使⽤mypassword作为密码GRANT ALL PRIVILEGES ON dk.*TO'myuser'@'192.168.1.3' IDENTIFIED BY'mypassword'WITH GRANT OPTION;FLUSH PRIVILEGES; 我⽤的第⽅法1),最后执⾏⼀个语句 mysql>FLUSH RIVILEGES 使修改⽣效.就可以了 另外⼀种⽅法,不过我没有亲⾃试过的,在上找的,可以看⼀下. 在安装mysql的机器上运⾏:1、d:/mysql/bin/>mysql -h localhost -u root //这样应该可以进⼊MySQL服务器2、mysql>GRANT ALL PRIVILEGES ON*.*TO'root'@'%'WITH GRANT OPTION//赋予任何主机访问数据的权限3、mysql>FLUSH PRIVILEGES//修改⽣效4、mysql>EXIT//退出MySQL服务器 这样就可以在其它任何的主机上以root⾝份登录啦!。
MySQLserverhasgoneaway问题的解决⽅法mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了。
造成这样的原因⼀般是sql操作的时间过长,或者是传送的数据太⼤(例如使⽤insert ... values的语句过长,这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插⼊)。
产⽣这个问题的原因有很多,总结下⽹上的分析:原因⼀. MySQL 服务宕了判断是否属于这个原因的⽅法很简单,进⼊mysql控制台,查看mysql的运⾏时长mysql> show global status like 'uptime';+---------------+---------+| Variable_name | Value |+---------------+---------+| Uptime | 3414707 |+---------------+---------+1 row in set或者查看MySQL的报错⽇志,看看有没有重启的信息如果uptime数值很⼤,表明mysql服务运⾏了很久了。
说明最近服务没有重启过。
如果⽇志没有相关信息,也表名mysql服务最近没有重启过,可以继续检查下⾯⼏项内容。
原因⼆. mysql连接超时即某个mysql长连接很久没有新的请求发起,达到了server端的timeout,被server强⾏关闭。
此后再通过这个connection发起查询的时候,就会报错server has gone away(⼤部分PHP脚本就是属于此类)mysql> show global variables like '%timeout';+----------------------------+----------+| Variable_name | Value |+----------------------------+----------+| connect_timeout | 10 || delayed_insert_timeout | 300 || innodb_lock_wait_timeout | 50 || innodb_rollback_on_timeout | OFF || interactive_timeout | 28800 || lock_wait_timeout | 31536000 || net_read_timeout | 30 || net_write_timeout | 60 || slave_net_timeout | 3600 || wait_timeout | 28800 |+----------------------------+----------+10 rows in setwait_timeout 是28800秒,即mysql链接在⽆操作28800秒后被⾃动关闭原因三. mysql请求链接进程被主动kill这种情况和原因⼆相似,只是⼀个是⼈为⼀个是MYSQL⾃⼰的动作mysql> show global status like 'com_kill';+---------------+-------+| Variable_name | Value |+---------------+-------+| Com_kill | 21 |+---------------+-------+1 row in set原因四. Your SQL statement was too large.当查询的结果集超过 max_allowed_packet 也会出现这样的报错。
Loki查询语⾔LogQL使⽤前⾯我们在学习到使⽤ Loki 的 Ruler 进⾏报警的时候,使⽤了⼀种查询语⾔来定义报警规则,这个就是受 PromQL 的启发,Loki ⾃⼰推出的查询语⾔,称为LogQL,它就像⼀个分布式的 grep,可以聚合查看⽇志。
和的查询功能:查询返回⽇志⾏内容通过过滤规则在⽇志流中计算相关的度量指标1⽇志查询⼀个基本的⽇志查询由两部分组成。
log stream selector(⽇志流选择器)log pipeline(⽇志管道)log stream selector由于 Loki 的设计,所有 LogQL 查询必须包含⼀个⽇志流选择器。
⽇志流选择器决定了有多少⽇志流(⽇志内容的唯⼀来源,如⽂件)将被搜索到,⼀个更细粒度的⽇志流选择器将搜索到流的数量减少到⼀个可管理的数量。
所以传递给⽇志流选择器的标签将影响查询执⾏的性能。
⽽⽇志流选择器后⾯的⽇志管道是可选的,⽇志管道是⼀组阶段表达式,它们被串联在⼀起应⽤于所过滤的⽇志流,每个表达式都可以过滤、解析和改变⽇志⾏内容以及各⾃的标签。
下⾯的例⼦显⽰了⼀个完整的⽇志查询的操作:{container="query-frontend",namespace="loki-dev"} |= "metrics.go" | logfmt | duration > 10s and throughput_mb < 500该查询语句由以下⼏个部分组成:⼀个⽇志流选择器{container="query-frontend",namespace="loki-dev"},⽤于过滤loki-dev命名空间下⾯的query-frontend容器的⽇志然后后⾯跟着⼀个⽇志管道|= "metrics.go" | logfmt | duration > 10s and throughput_mb < 500,这管道表⽰将筛选出包含metrics.go这个词的⽇志,然后解析每⼀⾏⽇志提取更多的表达并进⾏过滤为了避免转义特⾊字符,你可以在引⽤字符串的时候使⽤单引号,⽽不是双引号,⽐如 `\w+1` 与 "\w+" 是相同的。
安装ipv6后再安装mysql配置时提示:error nr.2003 can't connect to mysql server on 'localhost'(10061)
说来惭愧啊,其实前段时间遇到过此问题,可是后来稀里糊涂的就解决了,详情可以找找我前面发表过的文章.这不这次就又遇到了,
error nr.2003
can't connect to mysql server on 'localhost'(10061)
还是解决不了,学习这事会就是会,不会就是不会啊............感触颇深.
苍天不负有心人啊,最后还是让我找到了解决方法.
首现ping localhost 出现了下面的截图,有没有感到奇怪呢?为什么出现的地址不是
127.0.0.1
前端时间研究利用IPv6登个国外网站什么的,就给自己电脑安装了ipv6(我的电脑是xp),唉你猜对了,问题就出在这ipv6上.
关闭它!
用下面附录的方法可以关闭ipv6(win7)
也可以用修改HOST文件的方式使localhost与127.0.0.1等同,如下:
从 WinVista 和 Win7 的 hosts 文件里可以看出,localhost 并没有直接被解析为 127.0.0.1 ,而是 DNS 将根据当前连接的协议来自动选择将其解析为 v4 地址还是 v6 地址:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
而在此我们为了解决 localhost 的连接问题,可以给 host 加上这么一条,以告诉系统强制使用IPv4 连接。
直接在 hosts 文件的末尾加上
127.0.0.1 localhost
这一条语句(需要修改文件权限)。
再次 Ping 一下 localhost:
正在 Ping WinSeven-PC [127.0.0.1] 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
127.0.0.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失)
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0 ms,平均 = 0ms
再ping下试试,那熟悉的界面又回来了.
这时继续安装配置则没有问题!
ps:
Win7下禁用或关闭IPv6
禁用或关闭IPv6原因有很多,比如
∙不打算使用此IPv6的功能
∙禁用IPv6的此功能可以节约系统的CPU和内存资源
∙更好的网络性能
方法也有很多,比如修改注册表等…
这里只说简单容易操作的方法,首先图形界面中,取消选择IPv6相关项目,/view/ecfdb4260722192e4536f6e9.html。