#my.cnf
[client]
port = 3306
#套接字文件位置
socket = /tmp/mysql3306.sock
[mysql]
#prompt="\u@\h [\d]>"
#prompt="\u@\h :\d\r:\m:\s>"
#pager="less -i -n -S"
#tee=/opt/mysql/query.log
no-auto-rehash
[mysqld]
#misc
#skip-grant-tables 用于跳过密码校验
skip-grant-tables
##################### sql_mode #####################
#strict_trans_tables 数据插入事务表严格模式,如果一个值不能插入,则中断当前操作
#no_zero_in_date 严格模式下不允许日期和月份设置为零
#no_zero_date 设置后数据库不允许插入零日期,插入零日期会返回错误信息而非警告信息
#error_for_division_by_zero 遇到除零错误,返回错误信息而非警告信息
#no_auto_create_user 禁止grant创建密码为空的用户
#no_engine_substitution 需要的存储引擎被禁用或者未编译,抛出错误
##################### sql_mode #####################
sql_mode='strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution'
#mysql模式设置 sql_mode='error_for_division_by_zero,no_auto_create_user,no_engine_substitution'
#执行账户名
user = mysql
#mysql安装的绝对路径
basedir = /usr/local/mysql
#mysql数据存放的绝对路径
datadir = /data/mysql/mysql_3306/data
#服务端端口
port = 3306
#服务端套接字文件位置
socket = /tmp/mysql3306.sock
#关闭mysql的定时器
event_scheduler = 0
#限制导入导出文件目录
secure-file-priv=""
#禁止域名解析,这样mysql就不会对链接到mysql服务的主机进行dns反向解析
skip-name-resolve
#设置临时文件目录
tmpdir = /data/mysql/mysql_3306/tmp
#每个闲置链接等待的秒数
interactive_timeout = 300
wait_timeout = 300
#character set 字符集设置
character-set-server = utf8
#mysql进程最大文件打开数
open_files_limit = 65535
#最大连接数
max_connections = 2000
#一定时间内错误次数上限
max_connect_errors = 100000
#允许最大包传输大小
max_allowed_packet = 1M
#设置表名不区分大小写
lower_case_table_names = 1
#慢查询日志输出格式
log-output=file
#慢查询开启
slow_query_log = on
#慢查询时间设置设置查询时间大于1秒的查询为慢查询
long_query_time = 1
#慢查询日志存放位置
slow_query_log_file = /data/mysql/mysql_3306/data/slow.log
#错误日志文件位置
log-error = /data/mysql/mysql_3306/data/error.log
#标志日志信息记录等级
log_warnings = 2
#pid文件
pid-file = mysql.pid
#记录那些慢的optimize table,analyze table和alter table语句
#log-slow-admin-statements = 1
#如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。
#log-queries-not-using-indexes = 1
#记录由Slave所产生的慢查询
log-slow-slave-statements = 1
##################### binlog #####################
#binlog用于保存数据库操作,方便回滚以及复制
#mysql复制形式主要为三种方式,基于SQL的复制 (SBR)、基于行的复制(RBR)、混合模式复制(MIXED)
#binlog的格式对应也有三种 STATEMENT、ROW、MIXED
##################### binlog #####################
#binlog_format = STATEMENT
binlog_format = row
#本机mysql服务序列号,唯一属性
server-id = 3306102
#打开二进制日志功能.在复制(replication)配置中,作为 MASTER 主服务器必须打开此项。如果需要从最后的备份中做基于时间点的恢复,也同样需要二进制日志。路径相对于 datadir
log-bin = /data/mysql/mysql_3306/logs/mysql-bin
#在一个事务中 binlog 为了记录 SQL 状态所持有的 cache 大小,如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.所有从事务来的状态都将被缓冲在 binlog 缓冲中然后在提交后一次性写入到 binlog 中,如果事务比此值大, 会使用磁盘上的临时文件来替代.此缓冲在每个连接的事务第一次更新状态时被创建.session 级别
binlog_cache_size = 4M
#如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。如果你正使用大的事务,二进制日志还会超过max_binlog_size
max_binlog_size = 256M
#binlog 缓冲区最大 cache 大小
max_binlog_cache_size = 1G
#设置二进制同步到磁盘的频率(刷新二进制到磁盘) 0表示不刷新到磁盘,n表示每当进行了n次事务提交之后,mysql将进行一次fsync之类的磁盘同步进行强制刷新
sync_binlog = 0
#sync_binlog = 1
#binlog保存天数
expire_logs_days = 10
#procedure
#允许建函数,存储过程
log_bin_trust_function_creators=1
#全局事务标识,为每个事务分发一个全局唯一标识
gtid-mode = on
#启用该功能后,只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行
enforce-gtid-consistency = 1
#值可以设置为 file/table 该参数决定slave记录master状态的文件形式,file会创建master.info,table会在table中创建slave_master_info表来记录
master-info-repository=table
#主节点的binlog会写到slave节点的relay log中,slave节点从该节点读取日志信息然后应用于本地节点
relay-log-info-repository=table
#半同步参数
#rpl_semi_sync_master_enabled = 1
#rpl_semi_sync_master_timeout = 1000 # 1 second
#rpl_semi_sync_slave_enabled = 1
#防止slave复制进程跟随mysql启动而启动
skip_slave_start = 1
#relaylog的最大值
max_relay_log_size = 128M
#启动时默认执行flush logs会启动新的relay_log删除旧的的relay_log文件
relay_log_purge = 1
#当从库意外宕机后,自动将删除未应用的日志,重新创建新的realay log日志进行同步
relay_log_recovery = 1
#开启从库的relay日志,日志名为relay-bin
relay-log=relay-bin
#记录relay log的位置和名称,记录一共存在多少个relay log
relay-log-index=relay-bin.index
#从库执行relay log中的操作,并且把记录的操作写入binlog,这样该从库作为主库的时候可以从binlog转到从库
log_slave_updates
#从库复制的时候自动跳过的错误号
#slave-skip-errors=1032,1053,1062
#跳过登录权限校验
#skip-grant-tables
#buffers & cache
#指定表高速缓存大小,缓存表文件描述符。 一般4G内存建议2048,如果设置的太小,会频繁打开表,设置的过大会导致超过linux的文件描述符上限无法接入新连接,或者占用了大量文件没有释放
table_open_cache = 2048
#MySQL当前打开的表数目
#Open_tables
#MySQL启动后打开过的表数目
#Opened_tables
#定义内存中可以打开的表数目
table_definition_cache = 2048
#内存临时表相关参数,用户可以创建的内存表的大小
max_heap_table_size = 96M
#内存临时表的最大值,超过极限值后会写入硬盘
tmp_table_size = 96M
#超过2kb后会使用mmap进行内存分配,导致效率会有所下降
sort_buffer_size = 128K
#join内联 缓存的表大小
join_buffer_size = 128K
#处理线程缓存数,而不是每次处理完就销毁
thread_cache_size = 200
#查询结果的最小内存空间大小,值为0时表示关闭
query_cache_size = 0
#查询缓存功能的状态,0时表示关闭
query_cache_type = 0
#查询结果可以使用的缓存区大小,这条查询的结果过大时不会进行缓存
query_cache_limit = 256K
#缓存查询结果的最小缓存区大小
query_cache_min_res_unit = 512
#线程的堆栈大小
thread_stack = 192K
#MyISAM引擎使用key缓存大小,使用innodb存储引擎此参数无作用
#指定索引缓冲区的大小
key_buffer_size = 8M
#读入缓冲区的大小
read_buffer_size = 2M
#随机读缓冲区大小
read_rnd_buffer_size = 16M
#批量插入的缓存区
bulk_insert_buffer_size = 32M
#myisam
#MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区
myisam_sort_buffer_size = 128M
#如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出
myisam_max_sort_file_size = 10G
#如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)
myisam_repair_threads = 1
#innodb
#这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.
#在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
#不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
#注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,
#所以不要设置的太高.
innodb_buffer_pool_size = 4G
#将innodb_buffer_pool_size划分为多个实例,提高并发能力
innodb_buffer_pool_instances = 1
innodb_data_file_path = ibdata1:100M:autoextend
#刷新log到磁盘中,宕机的时候可能会导致这个时间间隔中的操作丢失 取值 0/1/2,表示三种刷新模式
#innodb_flush_log_at_trx_commit = 1 # master slave 1
innodb_flush_log_at_trx_commit = 2
#事务日志的缓冲区大小
innodb_log_buffer_size = 8M
#事务日志的文件大小
innodb_log_file_size = 100M
#日志文件数目
innodb_log_files_in_group = 3
#控制buffer pool中脏页的百分比,当脏页数目超过该数目时会刷新脏页。(脏页表示内存中的数据和磁盘数据内容不一致)
innodb_max_dirty_pages_pct = 50
#开启独立表空间
innodb_file_per_table = 1
#事务超时失败时,回滚模式的设置,如果开启,失败时会导致引擎中止并回滚整个事务,如果关闭,默认只回滚事务超时的最后一条语句。 on/off
innodb_rollback_on_timeout = off
#启用后可以在交互式客户端输出引擎状态的完整信息
innodb_status_file = 1
#频繁的写操作时进行调整,取决于磁盘的IO吞吐量
innodb_io_capacity = 2000
#设置隔离级别参数
transaction_isolation = READ-COMMITTED
#设置 innodb数据文件及redo log的打开、刷写模式
innodb_flush_method = O_DIRECT #绕过os cache,提高性能
Q.E.D.