mysql复制参数讲解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql复制参数讲解相关的知识,希望对你有一定的参考价值。

mysql复制参数讲解

1、master上的参数

log-bin   #必须

server-id #1-pow(2,32)-1 #必须 (端口+ip)

server-uuid  #路径为$datadir/auto.cnf

log-bin-index #必须

binlog-format

binlog_cache_size

max_binlog_size

sync_binlog

expire_logs_days

log_bin_trust_function_creators


2、配置参数(IGNORE/DO规则的炕)

log-bin

binlog文件名前缀,可以全路径

log-bin=mybinlog

log-bin=/data/mysql/mysql3306/mybinlog

不可动态修改

server-id

唯一区别ID,同一个集群内不可重复

可动态修改从mysql5.6开始


log-bin-index

binlog索引文件前缀名,和log-bin一样,也可以全路径

不可动态修改

binlog-format

binlog日志格式:statement|row|mixed 三种

可动态修改

binlog_cache_size  建议1M到2M

binlog写入buffer

可动态修改参数

max_binlog_size 默认是1G 推荐128M 或256M

限制单个binlog大小

可动态修改

sync_binlog=n 

#交易系统为了安全 sync_binlog=1

多少个sql之后,调用fdatasync函数刷新binlog到disk

fsync()/fdatasync区别是什么?

fsync是完全伤心到磁盘,fdatasync只刷新数据,不刷新metadata

可动态修改


expire_logs_days=n  推荐保存7天

n天后自动删除binlog

可动态修改

log_bin_trust_function_creators=n  一般情况下为1就行

开启binlog时,是否允许创建存储过程

可动态修改

3、特殊说明:


log_warnings=n 最好为1

不然会在错误日志看到异常断开的连接(Aborted connection)

MySQL5.6.5 MySQL5.7.5以后 binlog v2格式 GTID binlog_checksum


迁移报错 5.6 -> 5.5  5.5 -> 5.6

binlog_checksum=none

log_bin_use_v1_row_events=on


binlog_row_image5.6.2后出现

默认为full


binlog_rows_query_log_events


binlog_gtid_recovery_simpliefied


Crash Recovery

基于MySQL5.6GTID的crash recovery 是有mysql-5.6.21支持到5.6.23稳定

传统复制里面也是可以支持的

[email protected] [test]>show global variables like "%repo%";

+---------------------------+-------+

| Variable_name             | Value |

+---------------------------+-------+

| master_info_repository    | FILE  |

| relay_log_info_repository | FILE  |


FILE------>table




友好的报错信息设置

binlog_error_action                     | ABORT_SERVER

binlogging_impossiable_mode----->binlog_error_action


[email protected] [test]>show global variables like "%binlog%";

+-----------------------------------------+----------------------+

| Variable_name                           | Value                |

+-----------------------------------------+----------------------+

| binlog_cache_size                       | 1048576              |

| binlog_checksum                         | CRC32                |

| binlog_direct_non_transactional_updates | OFF                  |

| binlog_error_action                     | ABORT_SERVER         |

| binlog_format                           | ROW                  |

| binlog_group_commit_sync_delay          | 0                    |

| binlog_group_commit_sync_no_delay_count | 0                    |

| binlog_gtid_simple_recovery             | ON                   |

| binlog_max_flush_queue_time             | 0                    |

| binlog_order_commits                    | ON                   |

| binlog_row_image                        | FULL                 |

| binlog_rows_query_log_events            | OFF                  |

| binlog_stmt_cache_size                  | 32768                |

| innodb_api_enable_binlog                | OFF                  |

| innodb_locks_unsafe_for_binlog          | OFF                  |

| log_statements_unsafe_for_binlog        | ON                   |

| max_binlog_cache_size                   | 1048576              |

| max_binlog_size                         | 268435456            |

| max_binlog_stmt_cache_size              | 18446744073709547520 |

| sync_binlog                             | 0                    |

+-----------------------------------------+----------------------+

20 rows in set (0.00 sec)


4、master其他参数

auto_increment_increment

auto_increment_offset

bin-do-db

bin-ignore-db

max_binlog_cache_size

binlog_stmt_cache_size

max_binlog_stmt_cache_size

biglog_direct_non_transactional_updates


5、具体配置参数的炕:

auto_increment_increment:每次自增的步长

auto_increment_offset:自增起始的偏移量  pxc


bin-do-db:记录db,其他db的binlog都不记录,存在风险  不建议设置

 配置案例:

 bin-do-db=mydb1

 bin-do-db=mydb2


bin-ignore-db

bin-ignore-db=test 表示test这个库的binlog记录都不被记录

建议:所有过滤规则不建议在主库中设置(bin-do-db、bin-ignore-db)


max_binlog_cache_size 默认就行


biglog_direct_non_transactional_updates默认不动


6、gtid相关参数

show global variables like "%gtid%";

Current database: test


+----------------------------------+------------------------------------------+

| Variable_name                    | Value                                    |

+----------------------------------+------------------------------------------+

| binlog_gtid_simple_recovery      | ON                                       |

| enforce_gtid_consistency         | ON                                       |

| gtid_executed                    | 6e5d664c-c7e5-11e6-88b1-000c296ae445:1-9 |

| gtid_executed_compression_period | 1000                                     |

| gtid_mode                        | ON                                       |

| gtid_owned                       |                                          |

| gtid_purged                      |                                          |

| session_track_gtids              | OFF                                      |

+----------------------------------+------------------------------------------+

如果开启了gtid(用于控制只有是事务安全的语句才能被记录到log中)

gtid_mode用于控制是否启用GTID

如果设置为on,则必须是log-bin ,log-salve-updates,enforce_gtid_consistency也要启用


gtid_purged: 用于指定那个事务从binlog忽略了。reset master 这个值会被清空。

gtid_executed: 执行到的GTID号及所有执行的gtid号。和(show master status,show slave status)输出值Executed Gtid set意思一样。

rest master : 这个值会被清空。


总结:主库开启最少参数

server-id

server-uuid

log-bin

gtid_mode

enforce_gtid_consistency

max_binlog_size

expire_logs_days

binlog-format


#############################################################################################################################################


7、slave上的参数

server-id

server-uuid

relay-log  #io thread读取过来存到本地文件

relay-log-index

read-only  #从库只读,但对super权限的用户不起作用   这个设置意义不大,一般不要设置。


8、具体配置参数的炕:

server-id:

relay-log:relaylog文件名前缀,可以是全路径,不可以动态更改

relay-log-index:relaylog 索引文件前缀名 和relay-log一样,可以全路径;不可以动态更改。

read-only:除非有super权限,否则无法修改数据,不过不影响自主创建临时表(temporary table ,analyze table,optimize table) 可以动态修改。



9、salve其他参数

log-slow-salve-statements

log_slave_updates  #建议这个参数无论如何都要设置。作用:主库更新,从库会记录日志。

max_relay_log_size

relay_log_info_file

relay_log_purge

relay_log_recovery

replicate-same-server-id #不建议使用

skip-slave-start=1  #不要自动同步   最好设置为1

slave_load_tmpdir

slave_transaction_retries #默认就行,重试

slave_parallel_workers #默认是关闭的



#例子

log_slave_updates  已经开启

[email protected] [wu]>show global variables like "%log%"

[email protected] [test]>show master status;

/usr/local/mysql/bin/mysqlbinlog -v--base64-output=decode-rows /data/mysql/mysql3306/logs/mysql-bin.000002 >1.log



relay_log_space_limit 默认没有设置的。有问题才设置


下面参数不建议设置:

show global variables like "%report%";

| report_host     |       |

| report_password |       |

| report_port     | 3306  |

| report_user



log-slow-slave-statements:slave复制产生的slow log 是否需要记录;建议打开。


max_relay_log_size 建议128M


master_info_repository relay_log_info_repository参数设置如下:

master-info-file/relay-log-info-file/relay-log-info

----->master_info_repository relay_log_info_repository

[email protected] [wu]>show global variables like "%info%";

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    17

Current database: wu


+--------------------------------+----------------+

| Variable_name                  | Value          |

+--------------------------------+----------------+

| master_info_repository         | FILE           |

| relay_log_info_file            | relay-log.info |

| relay_log_info_repository      | FILE           |

| session_track_transaction_info | OFF            |

| sync_master_info               | 10000          |

| sync_relay_log_info            | 10000          |

+--------------------------------+----------------+

6 rows in set (0.00 sec)


发展趋势 file将来被换成table


sync_master_info=n :一般情况下不要动   除非安全性要求非常高才设置。


relay_log_purge :relay应用完。是否需要自动马上删除


relay_log_recovery: salve崩溃或者正常启动时,未应用的relay log 会被删除,重新从master请求binlog,再次生成relay log


10、slave过滤参数

一般情况下,过滤规则在从库设置。不要在主库设置。

replicate-do-table

replicate-ignore-table

replicate-rewrite-db =db1->db2

replicate-wild-do-table

replicate-wild-ignore-table

replicate-do-db

replicate-ignore-db

slave_net_timeout

slave_skip_errors

sql_slave_skip_count

















本文出自 “梁小明的博客” 博客,请务必保留此出处http://7038006.blog.51cto.com/7028006/1893617

以上是关于mysql复制参数讲解的主要内容,如果未能解决你的问题,请参考以下文章

mysql半同步复制

MySQL主从复制原理深入讲解

MySQL:第一次看到有人把MYSQL主从复制讲解的这么清楚

MySQL主从复制实现数据库服务器双机热备详细讲解

Mysql主从原理和复制配置详细讲解

MySQL 主从复制 详细实例讲解 与 常见错误解决方法