MySQL配置文件(my.cnf)路径查看及相关配置

MySQL配置文件(my.cnf)路径查看及相关配置,第1张

查找my.cnf文件路径; 从上可以看出, 服务器首先会读取/etc/my.cnf文件,如果发现该文件不存在,再依次尝试从后面的几个路径进行读取。 参数详解:[client] #客户端设置,即客户端默认的连接参数 port = 3307 #默认连接端口 socket = /data/mysqldata/3307/mysql.sock #用于本地连接的socket套接字 default-character-set = utf8mb4 #编码 [mysqld] #服务端基本设置 port = 3307 MySQL监听端口 socket = /data/mysqldata/3307/mysql.sock #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件 pid-file = /data/mysqldata/3307/mysql.pid#pid文件所在目录 basedir = /usr/local/mysql-5.7.11#使用该目录作为根目录(安装目录) datadir = /data/mysqldata/3307/data #数据文件存放的目录 tmpdir = /data/mysqldata/3307/tmp #MySQL存放临时文件的目录 character_set_server = utf8mb4 #服务端默认编码(数据库级别) collation_server = utf8mb4_bin #服务端默认的比对规则,排序规则 user = mysql #MySQL启动用户 log_bin_trust_function_creators = 1 #This variable applies when binary logging is enabled. It controls whether stored function creators can be trusted not to create stored functions that will cause #unsafe events to be written to the binary log. If set to 0 (the default), users are not permitted to create or alter stored functions unless they have the SUPER #privilege in addition to the CREATE ROUTINE or ALTER ROUTINE privilege. 开启了binlog后,必须设置这个值为1.主要是考虑binlog安全 performance_schema = 0 #性能优化的引擎,默认关闭 secure_auth = 1 #secure_auth 为了防止低版本的MySQL客户端(

一、mysql_install_db说明

当MySQL的系统库(mysql系统库)发生故障或需要新加一个mysql实例时,需要初始化mysql数据库。

需要使用的命令:/usr/local/mysql/bin/mysql_install_db

#/usr/local/mysql/bin/mysql_install_db --help 可以查看帮助信息如下

Usage: /usr/local/mysql/bin/mysql_install_db [OPTIONS]

--basedir=path The path to the MySQL installation directory.

--cross-bootstrapFor internal use. Used when building the MySQL system

tables on a different host than the target.

--datadir=path The path to the MySQL data directory.

--force Causes mysql_install_db to run even if DNS does not

work. In that case, grant table entries that normally

use hostnames will use IP addresses.

--ldata=path The path to the MySQL data directory.

--rpmFor internal use. This option is used by RPM files

during the MySQL installation process.

--skip-name-resolve Use IP addresses rather than hostnames when creating

grant table entries. This option can be useful if

your DNS does not work.

--srcdir=pathFor internal use. The directory under which

mysql_install_db looks for support files such as the

error message file and the file for popoulating the

help tables.

--user=user_name The login username to use for running mysqld. Files

and directories created by mysqld will be owned by this

user. You must be root to use this option. By default

mysqld runs using your current login name and files and

directories that it creates will be owned by you.

All other options are passed to the mysqld program

除了支持以上的参数,还支持mysqld的参数。

二、举例:

本文以新加一个mysql实例为例。例如服务器上已经安装了3306端口的mysql服务,需要再启一个3308端口的mysql服务。

假设mysql安装在/usr/local/mysql路径下,找一个磁盘空间剩余比较大的盘,如/data1,把3308端口的mysql的数据保存在/data1下

#mkdir /data1/mysql_3308

#mkdir /data1/mysql_3308/data

#chown -R mysql:mysql /data1/mysql_3308

复制一个mysql配置文件my.cnf到/data1/mysql_3308目录下

#vi /data1/mysql_3308/my.cnf

修改配置文件,将端口和相关目录的都改为新的设置,如下:

[client]

character-set-server = utf8

port= 3308

socket = /tmp/mysql_3308.sock

[mysqld]

user= mysql

port= 3308

socket = /tmp/mysql_3308.sock

basedir = /usr/local/mysql

datadir = /data1/mysql_3308/data

log-error = /data1/mysql_3308/mysql_error.log

pid-file = /data1/mysql_3308/mysql.pid

......其他略

确保配置文件无误。

运行下面命令进行数据库的初始化:

#/usr/local/mysql/bin/mysql_install_db --defaults-file=/data1/mysql_3308/my.cnf --datadir=/data1/mysql_3308/data

完成后新的3308数据库就初始化好了,如果有报错,则按照报错的提示查看报错日志,一般情况下都是my.cnf配置文件的问题,修正后即可。

三、启动新mysql

启动3308端口的mysql服务

#/usr/local/mysql/bin/mysqld_safe --defaults-file=/data1/mysql_3309/my.cnf &

检查是否启动

#ps aux|grep mysql

如果有3308字样说明已经启动成功

可将启动命令加入/etc/rc.local随服务器启动

新加的mysql没有设置root密码,可以通过下面命令设置root密码:

#/usr/local/mysql/bin/mysqladmin -S /tmp/mysql_3308.sock -u root password 'new-password'

一般分为windows和linux

windows通常放在安装目录下的 \MySQL\MySQL Server 5.0\my.ini

Linux 默认是放在  /etc/my.cnf

以下是my.cnf配置文件参数解释:

[client]  

port = 3309 

socket = /home/mysql/mysql/tmp/mysql.sock  

[mysqld]  

!include /home/mysql/mysql/etc/mysqld.cnf #包含的配置文件 ,把用户名,密码文件单独存放  

port = 3309 

socket = /home/mysql/mysql/tmp/mysql.sock  

pid-file = /longxibendi/mysql/mysql/var/mysql.pid  

basedir = /home/mysql/mysql/  

datadir = /longxibendi/mysql/mysql/var/  

# tmp dir settings  

tmpdir = /home/mysql/mysql/tmp/  

slave-load-tmpdir = /home/mysql/mysql/tmp/  

#当slave 执行 load data infile 时用  

#language = /home/mysql/mysql/share/mysql/english/  

character-sets-dir = /home/mysql/mysql/share/mysql/charsets/  

# skip options  

skip-name-resolve #grant 时,必须使用ip不能使用主机名  

skip-symbolic-links #不能使用连接文件  

skip-external-locking #不使用系统锁定,要使用myisamchk,必须关闭服务器  

skip-slave-start #启动mysql,不启动复制  

#sysdate-is-now  

# res settings  

back_log = 50 #接受队列,对于没建立tcp连接的请求队列放入缓存中,队列大小为back_log,受限制与OS参数  

max_connections = 1000 #最大并发连接数 ,增大该值需要相应增加允许打开的文件描述符数  

max_connect_errors = 10000 #如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞,直到管理员执行flush hosts  命令;防止黑客  

#open_files_limit = 10240 

connect-timeout = 10 #连接超时之前的最大秒数,在Linux平台上,该超时也用作等待服务器首次回应的时间  

wait-timeout = 28800 #等待关闭连接的时间  

interactive-timeout = 28800 #关闭连接之前,允许interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话wait_timeout变量被设为会话interactive_timeout变量的值。  

slave-net-timeout = 600 #从服务器也能够处理网络连接中断。但是,只有从服务器超过slave_net_timeout秒没有从主服务器收到数据才通知网络中断  

net_read_timeout = 30 #从服务器读取信息的超时  

net_write_timeout = 60 #从服务器写入信息的超时  

net_retry_count = 10 #如果某个通信端口的读 *** 作中断了,在放弃前重试多次  

net_buffer_length = 16384 #包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节  

max_allowed_packet = 64M #  

#table_cache = 512 #所有线程打开的表的数目。增大该值可以增加mysqld需要的文件描述符的数量  

thread_stack = 192K #每个线程的堆栈大小  

thread_cache_size = 20 #线程缓存  

thread_concurrency = 8 #同时运行的线程的数据 此处最好为CPU个数两倍。本机配置为CPU的个数  

# qcache settings  

query_cache_size = 256M #查询缓存大小  

query_cache_limit = 2M #不缓存查询大于该值的结果  

query_cache_min_res_unit = 2K #查询缓存分配的最小块大小  

# default settings  

# time zone  

default-time-zone = system #服务器时区  

character-set-server = utf8 #server级别字符集  

default-storage-engine = InnoDB #默认存储  

# tmp & heap  

tmp_table_size = 512M #临时表大小,如果超过该值,则结果放到磁盘中  

max_heap_table_size = 512M #该变量设置MEMORY (HEAP)表可以增长到的最大空间大小  

log-bin = mysql-bin #这些路径相对于datadir  

log-bin-index = mysql-bin.index  

relayrelay-log = relay-log  

relayrelay_log_index = relay-log.index  

# warning & error log  

log-warnings = 1 

log-error = /home/mysql/mysql/log/mysql.err  

log_output = FILE #参数log_output指定了慢查询输出的格式,默认为FILE,你可以将它设为TABLE,然后就可以查询mysql架构下的slow_log表了  

# slow query log  

slow_query_log = 1 

long-query-time = 1 #慢查询时间 超过1秒则为慢查询  

slow_query_log_file = /home/mysql/mysql/log/slow.log  

#log-queries-not-using-indexes  

#log-slow-slave-statements  

general_log = 1 

general_log_file = /home/mysql/mysql/log/mysql.log  

max_binlog_size = 1G 

max_relay_log_size = 1G 

# if use auto-ex, set to 0  

relay-log-purge = 1 #当不用中继日志时,删除他们。这个 *** 作有SQL线程完成  

# max binlog keeps days  

expire_logs_days = 30 #超过30天的binlog删除  

binlog_cache_size = 1M #session级别  

# replication  

replicate-wild-ignore-table = mysql.% #复制时忽略数据库及表  

replicate-wild-ignore-table = test.% #复制时忽略数据库及表  

# slave_skip_errors=all 

key_buffer_size = 256M #myisam索引buffer,只有key没有data  

sort_buffer_size = 2M #排序buffer大小;线程级别  

read_buffer_size = 2M #以全表扫描(Sequential Scan)方式扫描数据的buffer大小 ;线程级别  

join_buffer_size = 8M # join buffer 大小线程级别  

read_rnd_buffer_size = 8M #MyISAM以索引扫描(Random Scan)方式扫描数据的buffer大小 ;线程级别  

bulk_insert_buffer_size = 64M #MyISAM 用在块插入优化中的树缓冲区的大小。注释:这是一个per thread的限制  

myisam_sort_buffer_size = 64M #MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区  

myisam_max_sort_file_size = 10G #MyISAM 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出.重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE过程中)时,允许MySQL使用的临时文件的最大空间大小。如果文件的大小超过该值,则使用键值缓存创建索引,要慢得多。该值的单位为字节  

myisam_repair_threads = 1 #如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)  

myisam_recover = 64K#允许的GROUP_CONCAT()函数结果的最大长度  

transaction_isolation = REPEATABLE-READ  

innodb_file_per_table  

#innodb_status_file = 1 

#innodb_open_files = 2048 

innodb_additional_mem_pool_size = 100M #帧缓存的控制对象需要从此处申请缓存,所以该值与innodb_buffer_pool对应  

innodb_buffer_pool_size = 2G #包括数据页、索引页、插入缓存、锁信息、自适应哈希所以、数据字典信息  

innodb_data_home_dir = /longxibendi/mysql/mysql/var/  

#innodb_data_file_path = ibdata1:1G:autoextend  

innodb_data_file_path = ibdata1:500Mibdata2:2210M:autoextend #表空间  

innodb_file_io_threads = 4 #io线程数  

innodb_thread_concurrency = 16 #InnoDB试着在InnoDB内保持 *** 作系统线程的数量少于或等于这个参数给出的限制  

innodb_flush_log_at_trx_commit = 1 #每次commit 日志缓存中的数据刷到磁盘中  

innodb_log_buffer_size = 8M #事物日志缓存  

innodb_log_file_size = 500M #事物日志大小  

#innodb_log_file_size =100M 

innodb_log_files_in_group = 2 #两组事物日志  

innodb_log_group_home_dir = /longxibendi/mysql/mysql/var/#日志组  

innodb_max_dirty_pages_pct = 90 #innodb主线程刷新缓存池中的数据,使脏数据比例小于90%  

innodb_lock_wait_timeout = 50 #InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的 锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒  

#innodb_flush_method = O_DSYNC 

[mysqldump]  

quick  

max_allowed_packet = 64M 

[mysql]  

disable-auto-rehash #允许通过TAB键提示  

default-character-set = utf8 

connect-timeout = 3


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5918527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存