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
|
######################################### server_id = 2 #binlog log-bin = /data1/mysql/binlog/binlog binlog_format = ROW binlog-row-image = minimal #gtid_mode = ON
#enforce-gtid-consistency = true
binlog_cache_size = 4M max_binlog_size = 1G max_binlog_cache_size = 2G sync_binlog = 1 slave-skip-errors = 1062 expire_logs_days = 3 slave_parallel_workers = 4 #relay log relay-log = /data1/mysql/relaylog/relaylog max_relay_log_size = 1G relay_log_purge = 1 relay_log_recovery = 1 binlog_checksum = CRC32 slave_allow_batching = 1 master_verify_checksum = 1 slave_sql_verify_checksum = 1 binlog_rows_query_log_events = 1 master_info_repository = TABLE
relay_log_info_repository = TABLE
log_slave_updates ######################################### |
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,如需轉載請自行聯絡原作者
相關文章
- Redis 主從配置和引數詳解Redis
- Mysql5.6主從複製MySql
- CentOS中MySQL5.6 資料庫主從(Master/Slave)同步安裝與配置詳解CentOSMySql資料庫AST
- ajax 引數詳解
- DockerFile引數詳解Docker
- dd引數詳解
- Mysqldump引數詳解MySql
- vmstat 引數詳解
- OGG引數詳解
- tar命令引數詳解
- 函式引數詳解函式
- Oracle UNDO引數詳解Oracle
- jqGrid引數詳解
- $.ajax()方法引數詳解
- DataGuard引數配置詳解
- redis info引數詳解Redis
- ES常用引數詳解
- struts配置引數詳解
- 【轉】Cmd引數詳解
- flash wmode引數詳解
- GCC引數詳解(轉)GC
- fstab引數詳解(轉)
- lsblk命令引數詳解
- Dockerfile - 引數與詳解Docker
- Mysql5.6主從複製-基於binlogMySql
- Centos7 下配置mysql5.6主從複製例項(一主兩從)CentOSMySql
- 詳解Redis主從及哨兵模式Redis模式
- MySQL 主從架構配置詳解MySql架構
- variables_order引數詳解
- oracle rac 核心引數詳解Oracle
- Flink Checkpoint 引數詳解
- find 命令的引數詳解
- Mysql配置引數詳解(一)MySql
- Prometheus hashmod 配置引數詳解Prometheus
- SQL*Plus Set引數詳解SQL
- ntpq –p 各引數詳解
- oracle RMAN引數配置詳解Oracle
- TAR命令引數詳解(轉)