此配置是我在使用过程中总结出比较实用的配置参数,基于GTID的主从复制场景中使用:
[mysqld]
port=23306 --mysql进程端口
read-only=0 --关闭只读模式
gtid_mode=on --开启GTID,全局事务ID模式
enforce_gtid_consistency=on --强制GTID一致性,配合gtid_mode,必选
auto-increment-offset=1 --自增长起始值,主从复制场景中,主从的起始值需要不同
auto-increment-increment=2 --自增长步进值,主从复制场景中,步进值需要一致,保证主从中自增长主键不冲突
log-slave-updates=1 --作为从库使用时,开启log-slave-updates配置,能使从库的sql线程读取主库的bin-log时,不会将这些同步数据写入从库的bin-log中
relay_log_info_repository = TABLE --relay.info的存储形式,此处使用table,将relay.info中的信息记录在table中相对安全,可以避免relay.info更新不及时,SLAVE 重启后导致的主从复制出错
master_info_repository = TABLE --作用同relay_log_info_repository
relay_log_recovery = on --开启relay_log恢复功能,当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。
basedir = /var/mysql/mysql --base目录
datadir = /var/mysql/mysql/data --数据目录
innodb_data_home_dir = /var/mysql/mysql/data --innodb引擎的共享表空间数据文件根目录
innodb_log_group_home_dir = /var/mysql/mysql/data --在事务被提交并写入到表空间磁盘文件上之前,事务数据存储在InnoDB的redo日志文件里。这些日志位于innodb_log_group_home_dir变量定义的目录中,通常我们把这个目录设置与innodb_data_home_dir变量相同。为了获得最佳性能,建议分离innodb_data_home_dir和innodb_log_group_home_dir到单独的物理存储阵列上,这样可以保证IO资源不起冲突,利于服务器处理大量高并发连接。
innodb_buffer_pool_size=4096M --该变量将数据存导入到内存中,可以减少大量的IO资源消耗。当事务提交时,保存脏数据,后续在刷新到磁盘。当我们调整innodb_buffer_pool_size大小时,innodb_log_buffer_size和innodb_log_file_size也应该做出相应的调整。
socket=/var/lib/mysql/mysql.sock --socket文件目录
character-set-server=utf8 --服务器编码集
collation-server = utf8_unicode_ci --编码
local_infile=0 --禁用所有LOAD DATA LOCAL
bind-address=0.0.0.0 --bind ip
init-connect='SET NAMES utf8' --连接初始化后动态执行语句
max_connections = 10000 --最大连接数
log-bin = /var/mysql/backup/mysql-bin --bin-log日志目录
binlog_format = row --bin-log格式,包括STATEMENT,ROW,MIXED
server-id=1 --server-id,必须是数字类型,主从需要不一致
slave-skip-errors=all --忽略错误,并不能跳过所有DDL所引起的主从错误,使用格式:--slave-skip-errors=[err_code1,err_code2,...|all|ddl_exist_errors]
max_allowed_packet=32M --一次会话最大包限制
interactive_timeout=120 --针对交互式连接,通过mysql客户端连接数据库是交互式连接
wait_timeout=120 --针对非交互式连接,通过jdbc连接数据库是非交互式连接
skip-name-resolve=1 --跳过域名解析
[mysqld_safe]
log-error=/var/hms/installer/mysql/mysqld.log
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8