mysql双主生产环境优化配置

服务器资源

8核心CPU 10G内存

mysql01优化后的配置

cat > /etc/my.cnf <<EOF
[mysqld]
skip-name-resolve
datadir=/disk/mysql_data/
socket=/var/lib/mysql/mysql.sock
character_set_server=utf8
collation-server=utf8_general_ci
#事务语句刷磁盘配置
innodb_flush_log_at_trx_commit = 2

log-bin=mysql-bin
binlog_format=mixed
server-id=1
sync_binlog=10
##打开Mysql中继日志
relay_log = mysql-relay-bin
##使得更新的数据写进二进制日志中
log_slave_updates =1
##表示自增长ID的数量,即步进
auto_increment_increment=2
##自增长ID起始位置
auto_increment_offset=1
#主从同步日志binlog保存天数
expire_logs_days = 3
#当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。
relay_log_recovery = 1

#开启作业
event_scheduler=ON
#event_scheduler = 1
#指定数据库最大连接数
max_connections=1000

slow_query_log=on
slow_query_log_file=/disk/mysql_data/slow_query_log.log
long_query_time=5

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

net_buffer_length=256k
max_allowed_packet=100M
thread_stack = 256K
table_cache = 128K
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
read_buffer_size = 4M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
join_buffer_size = 8M
#myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
tmp_table_size = 256M
max_connect_errors = 10000000
#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
#wait_timeout = 30
#该参数取值为服务器逻辑CPU数量*2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4*2=8
thread_concurrency = 16
#skip-networking
#物理内存越大,设置就越大.默认为2402,调到512-1024最佳
table_cache=1024
#默认为2M
innodb_additional_mem_pool_size=4M
#设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1
#innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
#默认为64K
read_buffer_size=4M
#默认为256K
read_rnd_buffer_size=16M
#默认为256K
sort_buffer_size=32M
#默认为60
thread_cache_size=120
query_cache_size=32M
#这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了。
innodb_buffer_pool_size=5120M
#innodb_additional_pool_size – 这个选项对性能影响并不太多,至少在有差不多足够内存可分配的操作系统上是这样。不过如果你仍然想设置为 20MB(或者更大),因此就需要看一下Innodb其他需要分配的内存有多少。
#在高写入负载尤其是大数据集的情况下很重要。这个值越大则性能相对越高,但是要注意到可能会增加恢复时间。我经常设置为64-512MB,跟据服务器大小而异。
#innodb_log_buffer_size 默 认的设置在中等强度写入负载以及较短事务的情况下,服务器性能还可 以。如果存在更新操作峰值或者负载较大,就应该考虑加大它的值了。如果它的值设置太高了,可能会浪费内存 — 它每秒都会刷新一次,因此无需设置超过1秒所需的内存空间。通常 8-16MB 就足够了。
innodb_log_file_size=512M 

#innodb刷新的方式,影响innodb读取数据的方式O_DIRECT 为Linux的最好选择
innodb_flush_method = O_DIRECT
##控制innodb如何使用表空间,为1表示为每个表建立单独的表空间,为0表示使用系统表空间,强烈建议设置为1
##innodb_file_per_table = 1 
#local-infile=1

[mysql]
local-infile=1
prompt = MySQL-01 [(\u)]>

[client]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

EOF

mysql02优化后的配置

cat > /etc/my.cnf <<EOF
[mysqld]
#忽略主从复制遇到的错误,1539为mysql01上有事务,mysql02上没有导致,1205为执行事务导致的lock
slave-skip-errors=1539,1205
skip-name-resolve
datadir=/disk/mysql_data/
#datadir=/opt/
socket=/var/lib/mysql/mysql.sock
character_set_server=utf8
collation-server=utf8_general_ci
#事务语句刷磁盘配置
innodb_flush_log_at_trx_commit = 2

log-bin=mysql-bin
binlog_format=mixed
server-id=2
sync_binlog=10
##打开Mysql中继日志
relay_log = mysql-relay-bin
###使得更新的数据写进二进制日志中
log_slave_updates =1
###表示自增长ID的数量,即步进
auto_increment_increment=2
###自增长ID起始位置
auto_increment_offset=2
#主从同步日志binlog保存天数
expire_logs_days = 3
#当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。 
relay_log_recovery = 1

#开启作业
event_scheduler=ON
##event_scheduler = 1

#指定数据库最大连接数
max_connections=1000

slow_query_log=on
slow_query_log_file=/disk/mysql_data/slow_query_log.log
long_query_time=5

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
net_buffer_length=256k
max_allowed_packet=100M
thread_stack = 256K
table_cache = 128K
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
read_buffer_size = 4M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
join_buffer_size = 8M
#myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
tmp_table_size = 256M
max_connect_errors = 10000000
#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
#wait_timeout = 10
#该参数取值为服务器逻辑CPU数量*2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4*2=8
thread_concurrency = 16
#skip-networking
#物理内存越大,设置就越大.默认为2402,调到512-1024最佳
table_cache=1024
#默认为2M
innodb_additional_mem_pool_size=4M
#设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1
#innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
#默认为64K
read_buffer_size=4M
#默认为256K
read_rnd_buffer_size=16M
#默认为256K
sort_buffer_size=32M
#默认为60
thread_cache_size=120
query_cache_size=32M
#这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的
#可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了。
innodb_buffer_pool_size=5120M

#innodb_additional_pool_size – 这个选项对性能影响并不太多,至少在有差不多足够内存可分配的操作系统上是这样。不过如果你仍然想设置为 20MB(或者更大),因此就需要看一下Innodb其他需要分配的内存有多少。
#在高写入负载尤其是大数据集的情况下很重要。这个值越大则性能相对越高,但是要注意到可能会增加恢复时间。我经常设置为64-512MB,跟据服务器大小而异。
# innodb_log_buffer_size 默 认的设置在中等强度写入负载以及较短事务的情况下,服务器性能还可 以。如果存在更新操作峰值或者负载较大,就应该考虑加大它的值了。如果它的值设置太高了,可能会浪费内存 — 它每秒都会刷新一次,因此无需设置超过1秒所需的内存空间。通常 8-16MB 就足够了。
innodb_log_file_size=512M 

#innodb刷新的方式,影响innodb读取数据的方式O_DIRECT 为Linux的最好选择
innodb_flush_method = O_DIRECT
#控制innodb如何使用表空间,为1表示为每个表建立单独的表空间,为0表示使用系统表空间,强烈建议设置为1
#innodb_file_per_table = 1 
#local-infile=1

[mysql]
local-infile=1
prompt = MySQL-02 [(\u)]>

[client]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

EOF
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值