[client]
port = 3306
socket=/var/lib/mysql/mysql.sock
default-character-set = utf8mb4
[mysqld]
port = 3306
socket=/var/lib/mysql/mysql.sock
#basedir = /usr/local/mysql
datadir=/var/lib/mysql
pid-file=/var/run/mysqld/mysqld.pid
user = mysql
bind-address = 0.0.0.0
#每个server上不一致,见规划
#mha主从设置参数
server-id=1 #表示是本机的序号为1,一般来讲就是master的意思
log-bin=master-log
relay-log=relay-log
innodb_file_per_table = ON
skip_name_resolve = ON
# 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,
则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
#重要#绑定IP,增加远程访问IP地址或者禁掉可以让远程机登陆访问了
init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
explicit_defaults_for_timestamp = 1
lower_case_table_names=1
skip-name-resolve
#skip-networking
back_log = 600 #可以修改成600
max_connections = 1000
#这非常常见因为应用程序没有正确的关闭数据库连接,你需要比默认的151连接数更大的值。max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没有响应。在应用程序里使用连接池或者在MySQL里使用进程池有助于解决这一问题。
max_connect_errors = 600000
open_files_limit = 65535
#table-definition-cache = 1024
#table_open_cache = 2048
max_allowed_packet = 16M
max_heap_table_size = 32M
tmp_table_size = 32M
read_buffer_size = 16M
read_rnd_buffer_size = 32M
sort_buffer_size = 8M
join_buffer_size = 8M
# 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享
key_buffer_size = 8M
thread_cache_size = 512
query_cache_type = 0
query_cache_size = 0
#query_cache_limit = 2M
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 7
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
#log_error = /var/mysql/data/mysql-error.log
log-error=/var/log/mysqld.log
#重要
slow_query_log = 1
long_query_time = 1 修改成2
#慢查询时间 超过2秒则为慢查询
slow_query_log_file = /var/mysql/data/mysql-slow.log
performance_schema = 0
#lower_case_table_names = 1
skip-external-locking
default_storage_engine = InnoDB
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 128M
#这是redo日志的大小
一直到MySQL 5.5,redo日志的总尺寸被限定在4GB(默认可以有2个log文件)。这在MySQL 5.6里被提高。
一开始就把innodb_log_file_size设置成512M(这样有1GB的redo日志)会使你有充裕的写操作空间。如果你知道你的应用程序需要频繁的写入数据并且你使用的时MySQL 5.6,你可以一开始就把它这是成4G。
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 18G
#缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 16M
#重要# 接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。
# 例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。
# 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。
[myisamchk]
key_buffer_size = 8M 可以修改成64M
# 关键词缓冲的大小, 一般用来缓冲 MyISAM 表的索引块.
不要将其设置大于你可用内存的30%,
因为一部分内存同样被OS用来缓冲行数据
甚至在你并不使用 MyISAM 表的情况下, 你也需要仍旧设置起 8-64M 内存由于它同样会被内部临时磁盘表使用.
sort_buffer_size = 8M
read_buffer = 4M 修改成16M
# MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。
# 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能
write_buffer = 4M
1、方案1:MGC+lvs+keepalived
2、方案2:MGC+harpoxy+keepalived