mysql5.6的主從至關的不錯,增長了很多參數,提高了主從同步的安全和效率,如下是mysql5.6主從參數詳解。mysql
######################################### server_id = 2 #binlog log-bin = /data1/mysql/binlog/binlog binlog_format = ROW binlog-row-p_w_picpath = 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 = 1sql
默認狀況下,並非每次寫入時都將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的侷限性: (鑑於這些侷限性,慎用)ide
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-p_w_picpath=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引擎,防止表損壞後自行修復。