天天看點

mysql5.6主從參數詳解

   mysql5.6的主從相當的不錯,增加了不少參數,提升了主從同步的安全和效率,以下是mysql5.6主從參數詳解。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<code>#########################################</code>

<code>server_id = 2</code>

<code>#binlog</code>

<code>log-bin = /data1/mysql/binlog/binlog</code>

<code>binlog_format = ROW</code>

<code>binlog-row-image = minimal</code>

<code>#gtid_mode = </code><code>ON</code>

<code>#enforce-gtid-consistency = </code><code>true</code>

<code>binlog_cache_size = 4M</code>

<code>max_binlog_size = 1G</code>

<code>max_binlog_cache_size = 2G</code>

<code>sync_binlog = 1</code>

<code>slave-skip-errors = 1062</code>

<code>expire_logs_days = 3</code>

<code>slave_parallel_workers = 4</code>

<code>#relay log</code>

<code>relay-log = /data1/mysql/relaylog/relaylog</code>

<code>max_relay_log_size = 1G</code>

<code>relay_log_purge = 1</code>

<code>relay_log_recovery = 1</code>

<code>binlog_checksum = CRC32</code>

<code>slave_allow_batching = 1</code>

<code>master_verify_checksum = 1</code>

<code>slave_sql_verify_checksum = 1</code>

<code>binlog_rows_query_log_events = 1</code>

<code>master_info_repository = </code><code>TABLE</code>

<code>relay_log_info_repository = </code><code>TABLE</code>

<code>log_slave_updates</code>

sync_binlog = 1

預設情況下,并不是每次寫入時都将binlog與硬碟同步。是以如果作業系統或機器(不僅僅是MySQL伺服器)崩潰,有可能binlog中最後的語句丢 失了。要想防止這種情況,你可以使用sync_binlog全局變量(1是最安全的值,但也是最慢的),使binlog在每N次binlog寫入後與硬碟 同步。即使sync_binlog設定為1,出現崩潰時,也有可能表内容和binlog内容之間存在不一緻性。如果使用InnoDB表,MySQL伺服器 處理COMMIT語句,它将整個事務寫入binlog并将事務送出到InnoDB中。如果在兩次操作之間出現崩潰,重新開機時,事務被InnoDB復原,但仍 然存在binlog中。可以用--innodb-safe-binlog選項來增加InnoDB表内容和binlog之間的一緻性。(注釋:在MySQL 5.1中不需要--innodb-safe-binlog;由于引入了XA事務支援,該選項廢棄了),該選項可以提供更大程度的安全,使每個事務的 binlog(sync_binlog =1)和(預設情況為真)InnoDB日志與硬碟同步,該選項的效果是崩潰後重新開機時,在滾回事務後,MySQL伺服器從binlog剪切復原的 InnoDB事務。這樣可以確定binlog回報InnoDB表的确切資料等,并使從伺服器保持與主伺服器保持同步(不接收 復原的語句)。

server_id = 2之前的寫法是:server-id = 2

gtid_mode = ON

enforce-gtid-consistency = true

這兩個參數是啟用mysql5.6中的UUID同步模式,兩個參數必須一起打開,否則報錯,slave在做同步複制時,無須找到binlog日志和POS點,直接change master to master_auto_position=1即可,自動找點同步。

GTID的局限性: (鑒于這些局限性,慎用)

1.GTID同步複制是基于事務。是以Myisam表不支援,這可能導緻多個GTID配置設定給同一個事務。

2.CREATE TABLE ... SELECT語句不支援。因為該語句會被拆分成create table 和insert兩個事務,并且這個兩個事務被配置設定了同一個GTID,這會導緻insert被備庫忽略掉。

3.不支援CREATE TEMPORARY TABLE、DROP TEMPORARY TABLE 臨時表操作。

啟用之後進行同步語句:

CHANGE MASTER TO MASTER_HOST='60.2.212.190', MASTER_PORT=3306, MASTER_USER='repl',MASTER_PASSWORD='H7RYbCkGHmm_P1XO', master_auto_position=1;

不啟動的話同步語句和之前一樣:

change master to

master_host='192.168.100.190',

master_user='repl',

master_password='123456',

master_port=3306,

master_log_file='binlog.000001',

master_log_pos=1287;

start slave;

在5.6的版本中,啟動主從為:start slave,而之前用slave start也可以。

binlog-row-image=minimal,這個選項允許應用程式隻能對行的鏡像資料進行複制,而不在關心行是否已經進行了DML操作。這提高了主從機器的複制吞吐量,減少了二進制日志所占用的磁盤空間、網絡資源和記憶體占用。

slave_parallel_workers = 4 預設是0,不開啟,最大并發數為1024個線程。主從複制啟用4個sql線程,提高從伺服器吞吐量,減少延遲,使用并發的 SQL 線程對不同資料庫并行應用事件,如果隻同步一個庫的,指定為0,否則會阻塞。

binlog_checksum = CRC32

slave_allow_batching = 1

master_verify_checksum = 1

slave_sql_verify_checksum = 1

binlog_rows_query_log_events = 1

這四個參數是啟用binlog/relaylog的校驗,防止日志出錯

relay_log_purge = 1

relay_log_recovery = 1

這兩個是啟用relaylog的自動修複功能,避免由于網絡之類的外因造成日志損壞,主從停止。

master_info_repository = TABLE

relay_log_info_repository = TABLE

這兩個參數會将master.info和relay.info儲存在表中,預設是Myisam引擎,官方建議用

alter table  slave_master_info engine=innodb;

alter table  slave_relay_log_info engine=innodb;

alter table  slave_worker_info engine=innodb;

改為Innodb引擎,防止表損壞後自行修複。

本文轉自 lover00751CTO部落格,原文連結:http://blog.51cto.com/wangwei007/1205298,如需轉載請自行聯系原作者