mysql数据库(二)参数说明
来源:互联网 发布:东方网络联系电话 编辑:程序博客网 时间:2024/06/04 23:32
配置文件详解: http://www.jb51.net/article/48082.htm
http://blog.itpub.net/12679300/viewspace-1261661/
Mysql 的参数类型:分为动态(dynamic)和静态参数(static);
动态参数意味着可以再mysql实例运行中进行更改;
静态参数说明在整个实例声明周期内都不得进行更改,就好像是只读的。
在动态参数中,有些参数修改可以是基于回话的也可以是基于整个实例的生命周期。
提供两种修改参数的方法,一种是在配置文件中修改,所有的参数都保存在/etc/my.cnf文件中,所以直接修改该参数文件便可修改相应的系统参数。
弊端:修改该参数需要重启后才能生效,当系统上线后一般都不能随便重启,所以该方法很少用;
方法二。如果是动态参数的话,可以直接通过语句修改,例如:
SET sort_buffer_size=10000; /修改SESSION参数
有3种方式来调用mysqldump:
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] ---database DB1 [DB2 DB3...]
shell> mysqldump [options] --all--database 如果没有指定任何表或使用了---database或--all--database选项,则转储整个数据库。
--all--database,-A
转储所有数据库中的所有表。与使用---database选项相同,在命令行中命名所有数据库。
--default-character-set=charset
使用charsetas默认字符集。如果没有指定,mysqldump使用utf8。
--delete-master-logs
在主复制服务器上,完成转储操作后删除二进制日志。该选项自动启用--master-data。
--flush-logs,-F
开始转储前刷新MySQL服务器日志文件。该选项要求RELOAD权限。请注意如果结合--all--database(或-A)选项使用该选项, 根据每个转储的数据库刷新日志。例外情况是当使用--lock-all-tables或--master-data的时候:在这种情况下,日志只刷新一次,在所有 表被锁定后刷新。如果你想要同时转储和刷新日志,应使用--flush-logs连同--lock-all-tables或--master-data。
--force,-f
在表转储过程中,即使出现SQL错误也继续。
--master-data[=value]
该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。如果该选项值等于1,位置和文件名被写入 CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。如果选项值等于 2,CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。
--master-data选项启用--lock-all-tables,除非还指定--single-transaction(在这种情况下,只 在刚开始转储时短时间获得全局读锁定。又见--single-transaction。在任何一种情况下,日志相关动作发生在转储时。该选项自动关闭 --lock-tables。
--password[=password],-p[password]
连接服务器时使用的密码。如果你使用短选项形式(-p),不能在选项和密码之间有一个空格。如果在命令行中,忽略了--password或-p选项后面的 密码值,将提示你输入一个。
--single-transaction
该选项从服务器转储数据之前发出一个BEGIN SQL语句。它只适用于事务表,例如InnoDB和BDB,因为然后它将在发出BEGIN而没有阻塞任何应用程序时转储一致的数据库状态。
当使用该选项时,应记住只有InnoDB表能以一致的状态被转储。例如,使用该选项时任何转储的MyISAM或HEAP表仍然可以更改状态。
--single-transaction选项和--lock-tables选项是互斥的,因为LOCK TABLES会使任何挂起的事务隐含提交。
shell> mysqldump --all-databases --master-data=2 >all_databases.sql 或 shell> mysqldump --all-databases--flush-logs --master-data=2 > all_databases.sql 如果表保存在InnoDB存储引擎中,同时使用--master-data和--single-transaction提供了一个很方便的方式来进行适合 点对点恢复的联机备份。
mysqldump -t 数据库名 -uroot -p > xxx.sql 导出数据不导出结构
mysqldump -d 数据库名 -u root -p > xxx.sql 导出结构不导出数据
导出特定表的结构
mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql
MySQL里的wait_timeout
如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800。
wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可 能会遭遇到“MySQL has gone away”之类的问题,
mysql> set global wait_timeout=10;
mysql> show global variables like 'wait_timeout';
+----------------------------+-------+
|Variable_name | Value |
+----------------------------+-------+
|wait_timeout | 10 |
+----------------------------+-------+
这里一个容易把人搞蒙的地方是如果查询时使用的是show variables的话,会发现设置好像并没有生效,这是因为单纯使用show variables的话就等同于使用的是show sessionvariables,查询的是会话变量,只有使用show global variables,查询的才是全局变量。
原因分析:
(1)大量数据访问情况下,mysql connection连接有可能失效
(2)长时间不妨问,connection会失效
关于MySQL的wait_timeout连接超时问题报错解决方案
Mysql服务器默认的“wait_timeout”是8小时【也就是默认的值默认是28800秒】,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。 wait timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天
所以即使你MySQL通过my.ini 在
# The TCP/IP Port the MySQL Server will listen on port=3306下面添加
# this is myown dinifition for mysql connection timeout wait_timeout=31536000
interactive_timeout=31536000
无论超过最大限度多大的数值,只能被MySQL解析为2147483,2147483天后你的程序该出什么错还是什么错,避免不了
- mysql数据库(二)参数说明
- Oracle9i初始化参数中文说明(二)
- 说明指针作为函数参数(二)
- solver.prototxt参数说明(二)
- MySQL数据库(二)
- MySQL参数说明
- MySQL参数说明
- MySQL参数说明
- MYSQL参数 DELAY_KEY_WRITE说明
- MYSQL JDBC参数说明
- mysql 数据库连接参数说明
- mysql参数说明
- MySQL数据库性能优化-硬件和参数配置提升I/O(二)
- [数据库] Mysql配置文件说明
- MYSQL数据库安装说明
- MySQL 数据库安装说明
- MySQL数据库设计规范说明
- MySQL数据库设计规范说明
- 过滤数组中的空数组array_filter()
- 利用InputFilter限制输入的类型以及字数
- spring整合hibernate中的动态代理问题
- 去掉重复数组的方法
- iOS Block与self的那点事
- mysql数据库(二)参数说明
- 链表基础题大全(一)
- 运算符重载
- java中集合之间的运算优雅方式
- Unable to load native-hadoop library for your platform
- MongoDB初探系列之三:MongoDB用户权限操作
- 紫书章七例题 1——UVA 725 Division
- mybatis foreach方法遍历对象
- IntelliJ使用指南—— 导入Eclipse的Web项目