sweli 发表于 2018-10-5 07:31:36

Mysql之my.cnf配置详解

  #客户端设置,即客户端默认的连接参数
  
  #默认连接端口                
  port = 3306
  #用于本地连接的socket套接字
  socket = /data/mysqldata/3306/mysql.sock
  #编码
  default-character-set = utf8mb4
  #服务端基本设置
  
  #MySQL监听端口
  port = 3307
  #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
  socket = /data/mysqldata/3307/mysql.sock
  #pid文件所在目录
  pid-file = /data/mysqldata/3307/mysql.pid
  #使用该目录作为根目录(安装目录)
  basedir = /usr/local/mysql-5.7.11
  #数据文件存放的目录
  datadir = /data/mysqldata/3307/data
  #MySQL存放临时文件的目录
  tmpdir = /data/mysqldata/3307/tmp
  #服务端默认编码(数据库级别)
  character_set_server = utf8mb4
  #服务端默认的比对规则,排序规则
  collation_server = utf8mb4_bin
  #MySQL启动用户
  user = mysql
  #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>
  #privilege in addition to the CREATE ROUTINE or>  log_bin_trust_function_creators = 1
  #性能优化的引擎,默认关闭
  performance_schema = 0
  #secure_auth 为了防止低版本的MySQL客户端(  #在复制方面的改进就是引进了新的复制技术:基于行的复制。简言之,这种新技术就是关注表中发生变化的记录,而非以前的照抄 binlog 模式。
  #从 MySQL 5.1.12 开始,可以用以下三种模式来实现:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。MBR 模式中,SBR 模式是默认的。
  binlog_format = ROW
  # 为每个session 最大可分配的内存,在事务过程中用来存储二进制日志的缓存。
  #max_binlog_cache_size = 102400
  #开启二进制日志功能,binlog数据位置
  log-bin = /data/mysqldata/3307/binlog/mysql-bin
  log-bin-index = /data/mysqldata/3307/binlog/mysql-bin.index
  #relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,
  #然后SQL线程会读取relay-log日志的内容并应用到从服务器
  #binlog传到备机被写道relaylog里,备机的slave sql线程从relaylog里读取然后应用到本地。
  relay-log = /data/mysqldata/3307/relay/mysql-relay-bin
  relay-log-index = /data/mysqldata/3307/relay/mysql-relay-bin.index
  #服务端ID,用来高可用时做区分
  server_id = 100
  #log_slave_updates是将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中。
  log_slave_updates = 1          
  #二进制日志自动删除的天数。默认值为0,表示“没有自动删除”。启动时和二进制日志循环时可能删除。
  expire-logs-days = 15          
  #如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。
  max_binlog_size = 512M          
  #replicate-wild-ignore-table参数能同步所有跨数据库的更新,比如replicate-do-db或者replicate-ignore-db不会同步类似
  replicate-wild-ignore-table = mysql.%  
  #设定需要复制的Table
  #replicate-wild-do-table = db_name.%
  #复制时跳过一些错误;不要胡乱使用这些跳过错误的参数,除非你非常确定你在做什么。当你使用这些参数时候,MYSQL会忽略那些错误,
  #这样会导致你的主从服务器数据不一致。
  #slave-skip-errors = 1062,1053,1146
  #这两个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
  auto_increment_offset = 1
  auto_increment_increment = 2        
  #将中继日志的信息写入表:mysql.slave_realy_log_info
  relay_log_info_repository = TABLE     
  #将master的连接信息写入表:mysql.salve_master_info
  master_info_repository = TABLE      
  #中继日志自我修复;当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,
  #并且重新从master上获取日志,这样就保证了relay-log的完整性
  relay_log_recovery = on          
  # *** innodb setting ***
  #InnoDB 用来高速缓冲数据和索引内存缓冲大小。 更大的设置可以使访问数据时减少磁盘 I/O。
  innodb_buffer_pool_size = 4G
  #单独指定数据文件的路径与大小
  innodb_data_file_path = ibdata1:1G:autoextend
  #每次commit 日志缓存中的数据刷到磁盘中。通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力。
  #如果你愿意减弱这个安全,或你运行的是比较小的事务处理,可以将它设置为 0 ,以减少写日志文件的磁盘 I/O。这个选项默认设置为 0。
  innodb_flush_log_at_trx_commit = 0
  #sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
  #sync_binlog = 1000
  #对于多核的CPU机器,可以修改innodb_read_io_threads和innodb_write_io_threads来增加IO线程,来充分利用多核的性能
  innodb_read_io_threads = 8  
  innodb_write_io_threads = 8        
  #Innodb Plugin引擎开始引入多种格式的行存储机制,目前支持:Antelope、Barracuda两种。其中Barracuda兼容Antelope格式。
  innodb_file_format = Barracuda
  #限制Innodb能打开的表的数量
  innodb_open_files = 65536
  #开始碎片回收线程。这个应该能让碎片回收得更及时而且不影响其他线程的操作
  innodb_purge_threads = 1 
  #分布式事务
  innodb_support_xa = FALSE 
  #InnoDB 将日志写入日志磁盘文件前的缓冲大小。理想值为 1M 至 8M。大的日志缓冲允许事务运行时不需要将日志保存入磁盘而只到事务被提交(commit)。 
  #因此,如果有大的事务处理,设置大的日志缓冲可以减少磁盘I/O。     
  innodb_log_buffer_size = 256M
  #日志组中的每个日志文件的大小(单位 MB)。如果 n 是日志组中日志文件的数目,那么理想的数值为 1M 至下面设置的缓冲池(buffer pool)大小的 1/n。较大的值,
  #可以减少刷新缓冲池的次数,从而减少磁盘 I/O。但是大的日志文件意味着在崩溃时需要更长的时间来恢复数据。
  innodb_log_file_size = 1G
  #指定有三个日志组
  innodb_log_files_in_group = 3
  #在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)
  #innodb_lock_wait_timeout = 120
  #innodb_max_dirty_pages_pct作用:控制Innodb的脏页在缓冲中在那个百分比之下,值在范围1-100,默认为90.这个参数的另一个用处:
  #当Innodb的内存分配过大,致使swap占用严重时,可以适当的减小调整这个值,使达到swap空间释放出来。建义:这个值最大在90%,最小在15%。
  #太大,缓存中每次更新需要致换数据页太多,太小,放的数据页太小,更新操作太慢。
  innodb_max_dirty_pages_pct = 75     
  #innodb_buffer_pool_size 一致 可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
  innodb_buffer_pool_instances = 4    
  #这个参数据控制Innodb checkpoint时的IO能力
  innodb_io_capacity = 500        
  #作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
  #分配原则:只有使用不使用。但DB还需要有一个公共的表空间。
  innodb_file_per_table = 1
  #当更新/插入的非聚集索引的数据所对应的页不在内存中时(对非聚集索引的更新操作通常会带来随机IO),会将其放到一个insert buffer中,
  #当随后页面被读到内存中时,会将这些变化的记录merge到页中。当服务器比较空闲时,后台线程也会做merge操作
  innodb_change_buffering = inserts    
  #该值影响每秒刷新脏页的操作,开启此配置后,刷新脏页会通过判断产生重做日志的速度来判断最合适的刷新脏页的数量;
  innodb_adaptive_flushing = 1      
  #数据库事务隔离级别 ,读取提交内容
  transaction-isolation = READ-COMMITTED  
  #innodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式
  #InnoDB使用O_DIRECT模式打开数据文件,用fsync()函数去更新日志和数据文件。
  innodb_flush_method = O_DIRECT      
  #默认设置值为1.设置为0:表示Innodb使用自带的内存分配程序;设置为1:表示InnoDB使用操作系统的内存分配程序。
  #innodb_use_sys_malloc = 1        
  
  #它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中
  quick                 
  #限制server接受的数据包大小;指代mysql服务器端和客户端在一次传送数据包的过程当中数据包的大小
  max_allowed_packet = 512M             
  #TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行
  net_buffer_length = 16384             
  
  #auto-rehash是自动补全的意思
  auto-rehash              
  #isamchk数据检测恢复工具
                   
  key_buffer = 256M
  sort_buffer_size = 256M
  read_buffer = 2M
  write_buffer = 2M
  #使用myisamchk实用程序来获得有关你的数据库桌表的信息、检查和修复他们或优化他们
  
  key_buffer = 256M
  sort_buffer_size = 256M
  read_buffer = 2M
  write_buffer = 2M
  
  #mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能用于备份MyISAM存储引擎和运行在数据库目录所在的机器上.
  interactive-timeout
  #与mysqldump备份不同,mysqldump属于逻辑备份,备份时是执行的sql语句.使用mysqlhotcopy命令前需要要安装相应的软件依赖包.

页: [1]
查看完整版本: Mysql之my.cnf配置详解