ERROR 1010 (HY000): Error dropping database (can't rmdir './******', errno: 39)

2018-3-11 孤独求学人 Mysql

今天操作数据库出现以下错误提示:

ERROR 1010 (HY000): Error dropping database (can't rmdir './******', errno: 39)

字面意思是说删除数据失败,不能删除目录./******

数据库版本信息:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.2    |
+-----------+
1 row in set (0.00 sec)

mysql> use 数据库名;
Database changed
mysql> show tables;
Empty set (0.00 sec)
发现数据库中已经没有表了,这个时候为什么drop database不成功呢?奇怪了......
通过以下命令查看数据库文件所在目录:
mysql> select @@datadir;
+--------------+

阅读全文>>

标签: mysql drop version

评论(0) 浏览(9358)

MyISAM几个容易忽视的配置选项

2017-7-19 孤独求学人 Mysql

MyISAM在读操作占主导的情况下是很高效的。可一旦出现大量的读写并发,同InnoDB相比,MyISAM的效率就会直线下降,而且,MyISAM和InnoDB的数据存储方式也有显著不同:通常,在MyISAM里,新数据会被附加到数据文件的结尾,可如果时常做一些 UPDATE,DELETE操作之后,数据文件就不再是连续的,形象一点来说,就是数据文件里出现了很多洞洞,此时再插入新数据时,按缺省设置会先看这些洞洞的大小是否可以容纳下新数据,如果可以,则直接把新数据保存到洞洞里,反之,则把新数据保存到数据文件的结尾。之所以这样做是为了减少数据文件的大小,降低文件碎片的产生。但InnoDB里则不是这样,在InnoDB里,由于主键是cluster的,所以,数据文件始终是按照主键排序的,如果使用自增ID做主键,则新数据始终是位于数据文件的结尾。
了解了这些基础知识,下面说说MyISAM几个容易忽视的配置选项:
concurrent_insert:
通常来说,在MyISAM里读写操作是串行的,但当对同一个表进行查询和插入操作时,为了降低锁竞争的频率,根据concurrent_insert的设置,MyISAM是可以并行处理查询和插入的:

阅读全文>>

标签: linux mysql

评论(0) 浏览(9458)

MySQL大表优化方案

2016-8-3 孤独求学人 架构

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:

单表优化

除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:

字段

  • 尽量使用TINYINTSMALLINTMEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED

  • VARCHAR的长度只分配真正需要的空间

  • 使用枚举或整数代替字符串类型

  • 尽量使用TIMESTAMP而非DATETIME

  • 单表不要有太多字段,建议在20以内

  • 避免使用NULL字段,很难查询优化且占用额外索引空间

  • 用整型来存IP

索引

  • 索引并不是越多越好,要根据查询有针对性的创建,考虑在WHEREORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描

阅读全文>>

标签: mysql

评论(0) 浏览(1126)

ERROR 1286 (42000): Unknown table engine 'InnoDB'

2016-6-14 孤独求学人 Mysql


今天在操作数据的的时候,突然提示以下错误:
ERROR 1286 (42000): Unknown table engine 'InnoDB'
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.1.57    |
+-----------+
1 row in set (0.01 sec)
mysql> show engines;
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                   | Transactions | XA   | Savepoints |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
| CSV        | YES     | CSV storage engine                                        | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                     | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance    | NO           | NO   | NO         |
+------------+---------+-----------------------------------------------------------+--------------+------+------------+
4 rows in set (0.00 sec) mysql> show variables like 'have_innodb%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_innodb | NO | +---------------+-------+ 1 row in set (0.00 sec) 至此发现数据库不支持INNOD引擎!!! mysql> show variables like '%dir%';

阅读全文>>

标签: mysql show enginx InnoDB

评论(0) 浏览(6652)

mysql 备份指定前缀的数据库信息

2016-3-16 孤独求学人 Mysql

mysql_dump.py 备份指定前缀的数据库信息,备份的文件支持gzip压缩!生成的文件名字指定了的DB名称加上导出数据的时间!

(1)运行脚本效果如下:
  请输入连接数据库的账号:root
  请输入连接数据库的密码:
  请输入连接数据库的地址(默认:127.0.0.1):127.0.0.1
  请输入导出数据库的前缀:test
  请输入连接数据库的端口号(默认:3306):3306
  请输入备份数据库的路径(默认:/home/,记得添加最后的斜线):/home/dbback/
  备份【test】数据成功!!
  备份【test001】数据成功!!
  备份【test02】数据成功!!
  备份【test07】数据成功!!

阅读全文>>

标签: linux mysql mysqldump

评论(0) 浏览(9733)

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL

2015-10-27 孤独求学人 Mysql

今天使用Mysql中,通过create function创建function 的时候出现以下报错,特总结如下:
        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)
中文的大概意思是:
        此function函数在其声明中没有任何确定,NO SQL或READS SQL DATA,并且启用了二进制日志记录(您可能希望使用较不安全的log_bin_trust_ function_creators变量

阅读全文>>

标签: mysql function create

评论(0) 浏览(3408)

mysql 忘记的数据库密码

2014-8-6 孤独求学人 Mysql

mysql 忘记的数据库密码

mysql -uroot -p

Enter password:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

root 密码可以丢失或者忘记了。
解决思路:目前是进入不了数据库的情况,所以我们要考虑是不是可以跳过权限。因为在数据库中,MySQL 数据库中 user 表记录着我们用户的信息。
解决方法:启动 MySQL 数据库的过程中,可以这样执行:
/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf  –skip-grant-tables &
这样启动,就可以不用输入密码,直接进入 MySQL 数据库了。然后在修改你自己想要改的 root 密码即可。
update mysql.user set password=password(‘04d20fb9c38c9′) where user=’root’

标签: linux mysql

评论(0) 浏览(6159)

MySQL性能测试工具--mysqlslap使用详解

2014-7-26 孤独求学人 Mysql

MySQL性能测试工具mysqlslap使用详解
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。

常用的选项
--concurrency    并发数量,多个可以用逗号隔开
--engines       要测试的引擎,可以有多个,用分隔符隔开,如--engines=myisam,innodb
--iterations      要运行这些测试多少次
--auto-generate-sql        用系统自己生成的SQL脚本来测试
--auto-generate-sql-load-type    要测试的是读还是写还是两者混合的(read,write,update,mixed)
--number-of-queries           总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算
--debug-info               额外输出CPU以及内存的相关信息
--number-int-cols             创建测试表的int型字段数量
--number-char-cols             创建测试表的chat型字段数量

阅读全文>>

标签: linux mysql mysqlslap

评论(0) 浏览(6218)

mysql 为用户添加资源限制

2014-3-22 孤独求学人 Mysql

在使用MySQL中Grant新增用户的时候,为用户添加资源限制

在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。可用的资源限制如下:

阅读全文>>

标签: grant mysql show

评论(0) 浏览(2478)

mysql 批量删除指定前缀的表

2014-3-10 孤独求学人 Mysql

mysql批量删除指定前缀的表,巧妙的使用mysql中提供的concat函数;CONCAT()函数用于将多个字符串连接成一个字符串,通过使用这个函数巧妙的查询mysqlinformation_schema数据库中tables表拼接成drop语句,然后执行:

Select CONCAT( 'drop table ', table_name, ';' )  FROM information_schema.tables Where table_name LIKE 'a_%';

阅读全文>>

标签: mysql drop

评论(0) 浏览(2106)

Powered by emlog 豫ICP备15004178号-1