my.cnf配置解析以及双主配置

#二进制日志
log-bin

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。

从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

show variables like 'sync_binlog';

set global sync_binlog=0;

sync_relay_log:这个参数和sync_binlog是一样的,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。

sync_relay_log_info:这个参数和sync_relay_log参数一样,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay-log.info里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入relay-log.info里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值

relay_log_recovery:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。

binlog_format=MIXED

① 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语句选择日志保存方式。

innodb_use_native_aio=1   异步I/O在一定程度上提高系统的并发能力,在Linux系统上,可以通过将MySQL的服务器此参数的值设定为ON设定InnoDB可以使用Linux的异步I/O子系统.
slave_parallel_workers=4
slave_parallel_type=LOGICAL_CLOCK

DATABASE: 基于库的并行复制 , 每个数据库对应一个复制线程(5.6版本就有了,然并卵);

LOGICAL_CLOCK: 基于组提交的并行复制方式,同一个数据库下可以有多个线程(对大多数数据库更实用)。

对于第二种类型,设置参数slave_parallel_workers>0并且global.slave_parallel_type=‘LOGICAL_CLOCK’,即可支持一个schema下,slave_parallel_workers中的worker线程并发执行relay log中主库提交的事务。

(2)从MySQL官方文件看,其并行复制的要实现的目标是支持表级的并行复制和行级的并行复制,行级的并行复制通过解析ROW格式的二进制日志的方式来完成。

(3)5.7版本基于组提交的并行复制核心思想是:一个组提交的事务都是可以并行回放的,因为这些事务都已进入到事务的prepare阶段,则说明事务之间没有任何冲突(否则就不可能提交)。




[client]
port= 3300
socket = /data/mysql/data/mysql.sock
default-character-set = utf8  
 
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
socket=/data/mysql/data/mysql.sock
user=root
port= 3306
server-id = 152
log-error = /data/mysql/logs/error.log
slow_query_log_file = /data/mysql/logs/slow.log
log-bin=/data/mysql/logs/mysql-bin
binlog-format=ROW
relay_log=/data/mysql/logs/mysql-relay-bin
auto-increment-offset=1
auto-increment-increment=2                                                        
gtid_mode = on
enforce_gtid_consistency = 1 
innodb_undo_tablespaces = 5
innodb_undo_log_truncate = 1 
innodb_max_undo_log_size = 1G
innodb_log_file_size = 2G
innodb_log_files_in_group = 10
binlog_cache_size = 64M
max_binlog_cache_size = 2G                                    
max_binlog_size = 1G                                          
expire-logs-days = 7
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 4
innodb_sort_buffer_size=128M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 12
innodb_read_io_threads = 6
innodb_thread_concurrency = 24
innodb_flush_log_at_trx_commit = 2
innodb_use_native_aio=1
slave_parallel_workers=4
slave_parallel_type=LOGICAL_CLOCK
max_connections = 3000
max_user_connections=2500
max_connect_errors = 100
event_scheduler=OFF
default-time-zone='+08:00'
log_timestamps=SYSTEM
skip_name_resolve = 1
thread_cache_size = 1000
log_queries_not_using_indexes = 0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
character-set-server = utf8
init_connect=SET NAMES utf8
lower_case_table_names = 1
explicit_defaults_for_timestamp=true
wait_timeout= 86400
interactive_timeout = 86400
log_bin_trust_function_creators=1
back_log = 50
table_open_cache = 2048
max_allowed_packet = 1024M
max_heap_table_size = 1024M
read_buffer_size = 16M
read_rnd_buffer_size = 16M
join_buffer_size = 8M
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = INNODB
innodb_file_per_table = 1
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
binlog_format=mixed
slow_query_log=1
long_query_time =2
read-only=0
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
log_slave_updates=1
slave_skip_errors = 1062,1050,1051,1146,1145,1061,1032,1304,1396,1537,1539
show_compatibility_56=on
innodb_autoinc_lock_mode = 2
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
innodb_log_buffer_size = 100M
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_print_all_deadlocks=1
innodb_flush_neighbors=1
innodb_doublewrite=0
innodb_old_blocks_pct=20
 
[mysqldump]
quick
max_allowed_packet = 1024M
 
[mysql]
no-auto-rehash
 
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
 
[mysqlhotcopy]
interactive-timeout
 
[mysqld_safe]
prompt = '(product)\u@\h [\d]> '
open-files-limit = 8192
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值