[mysqld]
#Mysql服务的唯一编号,每个mysql服务Id需唯一
server-id=1
#MySQL安装根目录
basedir=/usr/local/mysql/
#MySQL数据文件所在位置
datadir=/usr/local/mysql/data
#用于本地连接的socket套接字,mysqld守护进程生成了这个文件
socket=/tmp/mysql.sock
#客户端设置,即客户端默认的连接参数
user=mysql
symbolic-links=0
#默认连接端口,默认是3306,可更改
port=3306
#拼接字符串长度
group_concat_max_len=102400
#允许最大连接数
max_connections=500
#数据库默认字符集
character-set-server=utf8
#默认存储引擎INNODB
default-storage-engine=INNODB
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=16M
#关闭ONLY_FULL_GROUP_BY SQL模式,默认为启用
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#事件调度器,可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等)
event_scheduler=ON
#允许mysql以txt或csv文件导入导出数据
secure_file_priv=""
#主从复制
#STATEMENT模式(SBR):每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
#ROW模式(RBR):不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
#MIXED模式(MBR):以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
binlog_format=row
#1.从库只开启log-bin功能,不添加log-slave-updates参数,从库从主库复制的数据不会写入log-bin日志文件里。2.直接向从库写入数据时,是会写入log-bin日志的。3.开启log-slave-updates参数后,从库从主库复制的数据会写入log-bin日志文件里。这也是该参数的功能。
log-slave-updates=1
#开启GTID,显式开启事务并回滚事务
gtid_mode=on
#MySQL官方解释说当启用enforce_gtid_consistency功能的时候,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporary table语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行
enforce_gtid_consistency=on
#该参数能够让数据库实例在启动的时候禁止建立主从关系,即禁止开启mysql的io线程和sql线程,用于搭建从库的时候需要,防止数据库启动的时候会自动开启了这两个线程,进而导致破坏了从库
skip_slave_start=1
#超过15天的二进制日志会被自动删除
expire_logs_days=15
#初次使用数据库不需要注释
skip-grant-tables
[mysqld_safe]
#数据库错误日志文件
log-error=/usr/local/mysql/log/log_error.log
[client]
port=3306