MySQL主從複製技術(純乾貨)

1.複製配置
    主機必定要開啓二進制日誌(這裏建議配置RBR)
    每一個主機和每一個從機必定要配置一個位移的id,即server-id
    每一個從機配置必定要包含主機名稱,日誌名稱,和位置號,在5.5之後已經只容許使用session動態配置。
 
1.1 怎樣配置主從複製
       
        複製主機配置
        [mysqld]
        log-bin=mysql-bin
        server-id=1 範圍 1-2^32-1   若是設置成0 那麼拒絕全部從服務器鏈接
        innodb_flush_log_at_trx_commit=1
        sync_binlog=1
 
        複製從機配置
        [mysqld]
        server-id=2
 
1.2 在主機上建立複製帳戶
       mysql>CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
       mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
 
1.3已經存在數據時候搭建主從複製集羣,使用mysqldump 建立數據快照
      mysql>mysqldump --all-databases --master-data > dbdump.db
      單一數據庫
      mysql> mysqldump -B database_name --master-data > database_name.sql
     若是沒有master-data 那麼就要使用FLUSH TABLES WITH READ LOCK 鎖住全部表
 
1.4 5.5版本在從機上面配置主機要使用CHANGE MASTER TO 語句:
    mysql>CHANGE MASTER TO
            -> MASTER_HOST='master_host_name',
            -> MASTER_USER='replication_user_name',
            -> MASTER_PASSWORD='replication_password',
            -> MASTER_LOG_FILE='recorded_log_file_name',
            -> MASTER_LOG_POS=recorded_log_position;
 
註釋:如下爲複製指定數據庫選項
--replicate-do-db, --replicateignore-db, and --replicate-rewrite-db
 
 
1.5  GTID模式的研究與維護
 
同步過程當中修改停機維護行爲步驟,或者添加GTIDs 功能
step 1 mysql> SET @@global.read_only = ON; 確保已經徹底同步而後進行步驟2
step 2 shell mysqladmin --uusername -p shutdown 
step 3 (使用GTIDs)shell> mysqld_safe --gtid_mode=ON --log-bin --log-slave-updates --enforce-gtid-consistency &  後面的能夠在配置文件中配置
 
注入一個空事務
SET GTID_NEXT='aaa-bbb-ccc-ddd:N';
BEGIN;
COMMIT;
SET GTID_NEXT='AUTOMATIC';
 
一旦已經事務標識正常之後要在從機上面刷新並清理日誌 N 是當前正在使用的二進制文件
FLUSH LOGS;(刷新日誌會強制生成一個新的二進制文件,下面的N即是指這個文件)
PURGE BINARY LOGS TO 'master-bin.00000N';(注:清理的二進制文件並不包括當前N這個文件)
 
 
GTIDs的限制:(重點)
由於GTID複製是基於事務的,一些mysql自己特色在使用GTID時候可能不支持。
 
1.涉及到關於非事務存儲引擎的更新操做,由於混合使用可能致使同一個事物出現多個GTIDs值
 解決:也就只使用Innodb就能夠
 
2.CREATE TABLE ... SELECT 語句,這個語句在GTID模式下是被禁止使用的,由於這對於GTID是不安全的,當使用基於行的複製時,這個語句實際是是兩個事件,一個建立表的事件,一個是從原表插入行,其實是兩個事件,可是在從機會使用一個GTID 去接收,也就是隻接收了建立表的命令,而丟失了導入數據,所以這個語句是不被支持的
 
3.臨時表  CREATE TEMPORARY TABLE 和 DROP TEMPORARY TABLE 在事務內部不被支持,只能在事務外部而且autocommit=1 才能夠
 
若是開啓了--enforce-gtid-consistency 選項 那麼在GTID模式下任什麼時候候都不能夠
 
4.開啓--enforce-gtid-consistency 就能夠防止以上錯誤語句的執行,會以錯誤形式返回。
 
GTID 因爲臨時表的限制不可取。使用通常複製
 
 
Command-Line Format --read-only
Name read_only
Variable
Scope
Global
System Variable
Dynamic
Variable
Yes
Permitted Values Type boolean
Default false
Cause the slave to permit no updates except from slave threads or from users having the SUPER
privilege. On a slave server, this can be useful to ensure that the slave accepts updates only from its
master server and not from clients. This variable does not apply to TEMPORARY tables.
 
--read-only 建議用在從機配置上,非主機和不具備super權限的用戶沒法更新從機
 
1.6 檢查複製狀態
    SHOW SLAVE STATUS
 
 mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: master1
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 931
Relay_Log_File: slave1-relay-bin.000056
Relay_Log_Pos: 950
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes  # IO線程正常
Slave_SQL_Running: Yes  # SQL線程正常  知道原理就知道這兩個的做用了
Replicate_Do_DB:  
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 931
Relay_Log_Space: 1365
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0 # 這個不能用來做爲主從延遲的判斷標準,不許確的, 0 不徹底表明從機已經追上了主機,有多是網絡中斷,可是超時時間尚未到,從機沒有發現。                                         
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids: 0
 
1.7 暫停主從複製:STOP SLAVE; 
                             STOP SLAVE IO_THREAD;
                             STOP SLAVE SQL_THREAD;
                             START SLAVE; 
                             START SLAVE IO_THREAD;
                             START SLAVE SQL_THREAD;
 
做用: 單中止SQL線程這樣能夠方便的作備份,備份結束後能夠繼續開啓SQL線程,這樣從機也能夠很容易追上主機
若是主機有修改等動做,暫停IO線程,而後再CHAGNE MASTER TO 新的動做
 
1.8 複製有三個線程   主機有一個,從機有兩個,主機是Binlog dump thread 當從機鏈接到主機後用來給從機發送而二進制日誌,會鎖住每一個要讀的事件, 從機是Slave I/O thread 和 Slave SQL thread 前者當START SLAVE 開始後若是向主機索取那些有變更的行從二進制日誌,複製這些內容到本身的中繼日誌。 後者從IO線程寫入的中繼日誌讀取和執行每一個事件,目前截止5.6版本,執行對於單庫來講是單線程,對於多庫是多線程,也就是庫級併發。
 
1.9對於數據庫級別的複製,指定複製數據庫,和忽略數據庫自己只須要配置一個
--replicate-do-db, --replicate-ignore-db 這兩個選項則選擇順序爲 先過濾前者,若是前者知足配置則不會判斷後者,不然繼續判斷後者。
和這兩個參數是相似的 --binlog-dodb  --binlog-ignore-db ,區別在於主機和從機上面控制
表級別控制暫時忽略
 
2.0. 半同步複製:
 
mysql 複製默認是異步的,半同步複製簡單來講就是主機提交事務至少要肯定有一個從機所有接收完畢,不然將會等待,若是從機沒有反應,則直到超時。
 
若是超時那麼半同步複製將會自動轉換爲異步複製,當至少一個半同步從機追遇上後,主機將切換會半同步複製。
半同步複製至少要在主機和一臺從機開啓,不然將使用異步複製
 
• rpl_semi_sync_master_enabled
控制是否半同步複製開啓,默認是0 不開啓
• rpl_semi_sync_master_timeout
控制等待從機相應的超時切換異步複製的時間。默認是10000ms (10S)
• rpl_semi_sync_slave_enabled
從機控制是否開啓半同步複製
 
半同步複製監控的幾個狀態值
• Rpl_semi_sync_master_clients
半同步從機的數量
• Rpl_semi_sync_master_status
半同步在主機上運行,若是正常半同步複製爲1,若是插件沒有啓用,或者由於超時致使切換異步則爲0。
• Rpl_semi_sync_master_no_tx
從機認爲不成功的事務數量
• Rpl_semi_sync_master_yes_tx
從機認爲成功的事務數量
• Rpl_semi_sync_slave_status
是否半同步複製在從機上正常運行,1表示正常,0表示異常
 
 
半同步的安裝和配置:
 
要求mysql5.5 以上版本
have_dynamic_loading 系統參數爲YES
二進制分發版支持動態加載
半同步複製插件包含在二進制分發版中
 
找到插件
二進制分發版插件位置
 
./lib/plugin/semisync_slave.so
./lib/plugin/semisync_master.so
 
將主和從對應的插件放到相應的插件目錄
 
show global variables like 'plugin_dir' 能夠查看目錄位置
 
而後進入mysql,安裝插件
主機上面:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
從機上面:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
 
以下錯誤可能發生,須要安裝install libimf:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_master.so' (errno: 22 libimf.so: cannot open
shared object file: No such file or directory)
 
http://dev.mysql.com/downloads/os-linux.html. 參考安裝連接
 
使用SHOW PLUGINS 查看當前安裝的插件信息
 
開啓半同步的參數是動態的,既能夠在配置文件中配置也能夠動態開啓
以下
運行時,主機上面:
mysql> SET GLOBAL rpl_semi_sync_master_enabled = {0|1};
mysql> SET GLOBAL rpl_semi_sync_master_timeout = N;
從機上面:
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = {0|1};
配置文件中
主機:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 # 1 second
從機:
[mysqld]
rpl_semi_sync_slave_enabled=1
 
監控狀態要具體知道狀態值對應的意義
關鍵幾個以下:
mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
具體參考文檔參數內容
 
 
延遲複製:
CHANGE MASTER TO MASTER_DELAY = N; 單位S
具體參考官方文檔
 
複製已知存在的問題:
 
基於語句的複製  AUTO_INCREMENT, LAST_INSERT_ID(), 和 TIMESTAMP 在除了下面這些狀況下是正確的
1. mysql 5.6.10 之前的版本,自增列在同一個表必定匹配的是一樣的自增列。 即不能一個不是auto_increment 另外一個是auto_increment ,列的名稱同樣。
2.執行觸發器或者函數去更新一個auto_increment 列,複製會不正確。在mysql5.6中這樣的語句是不安全的
3.插入一個存在聯合主鍵,而且主鍵包含AUTO_INCREMENT列,可是它不是第一個列的表,基於語句的複製是不安全的(這個問題INNODB存儲引擎不受影響)
 
CREATE TABLE .... SELECT 語句對於沒有GTID的RBR格式是安全的,對於SBR 和MIX 有可能出問題的。
 
問題不少都是關於SBR和MIX的,可是基於RBR的複製基本上不會出現這裏沒有記錄的問題
 
 
複製的過濾規則:
主機會把全部的記錄二進制語句發送給從機,由從機判斷篩選和過濾。
 
 實施步驟:
 
兩臺主機安裝mysql (略)
 
注: 主從配置基於主機和從機 內存爲4G的配置
 
主機配置/etc/my.cnf (master)
[mysqld]
################## base ##################
basedir = /usr/local/mysql
datadir = /mysql/data
port = 3306
server_id = 239
socket = /var/lib/mysql/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER
user = mysql
##########################################
 
################# general ################
bulk_insert_buffer_size = 16M
character_set_server = utf8
event_scheduler = 1
explicit_defaults_for_timestamp = 1
join_buffer_size = 16M
interactive_timeout = 1800
lock_wait_timeout = 60
max_allowed_packet = 64M
max_connections = 256
max_heap_table_size = 64M
skip_name_resolve = 1
sort_buffer_size = 16M
table_open_cache = 3000
tmp_table_size = 32M
transaction-isolation = READ-COMMITTED
wait_timeout = 1800
symbolic-links = 0
##########################################
 
################# myisam #################
key_buffer_size = 16M
myisam_sort_buffer_size = 32M
##########################################
 
################# innodb #################
innodb_buffer_pool_size = 2G
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_checksum_algorithm = crc32
innodb_checksums = 1
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 30
innodb_log_buffer_size = 32M
innodb_log_file_size = 256M
innodb_sort_buffer_size = 32M
##########################################
 
################### log ##################
log_bin = /mysql/log/mysql_master.bin
binlog_format = ROW
expire_logs_days = 10
log_bin_trust_function_creators = 1
log-error = /mysql/log/mysql_master-err.log
slow_query_log = 1
long_query_time = 3
slow_query_log_file = /mysql/log/mysql_master-slow.log
sync_binlog = 1
##########################################
從機配置/etc/my.cnf (slave)
[mysqld]
################## base ##################
basedir = /usr/local/mysql
datadir = /mysql/data
port = 3306
server_id = 1
socket = /var/lib/mysql/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER
user = mysql
##########################################
 
################# general ################
bulk_insert_buffer_size = 16M
character_set_server = utf8
event_scheduler = 1
explicit_defaults_for_timestamp = 1
join_buffer_size = 16M
interactive_timeout = 1800
lock_wait_timeout = 60
max_allowed_packet = 64M
max_connections = 256
max_heap_table_size = 64M
skip_name_resolve = 1
sort_buffer_size = 16M
table_open_cache = 3000
tmp_table_size = 32M
transaction-isolation = READ-COMMITTED
wait_timeout = 1800
symbolic-links = 0
##########################################
 
################# myisam #################
key_buffer_size = 16M
myisam_sort_buffer_size = 32M
##########################################
 
################# innodb #################
innodb_buffer_pool_size = 2G
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_checksum_algorithm = crc32
innodb_checksums = 1
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 30
innodb_log_buffer_size = 32M
innodb_log_file_size = 256M
innodb_sort_buffer_size = 32M
##########################################
 
################### log ##################
log_bin = /mysql/log/mysql_slave.bin
binlog_format = ROW
expire_logs_days = 10
log_bin_trust_function_creators = 1
log-error = /mysql/log/mysql_slave-err.log
slow_query_log = 1
long_query_time = 3
slow_query_log_file = /mysql/log/mysql_slave-slow.log
##########################################
 
##########SLAVE###########################
replicate-do-db=my_database #只複製的數據庫
log-slave-updates=ON  #本地也寫二進制日誌
relay_log_recovery = 1 #崩潰後放棄已經複製的中繼日誌,從主機從新獲取,防止損壞的中繼日誌被執行
read-only = 1 #除了從主機複製的更新和具備super權限用戶的更新外其餘用戶不能修改數據
skip_slave_start = 1 #從機崩潰或者重啓後複製不自動重啓
#slave-skip-errors=all
master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_purge = 1
relay_log = /mysql/log/mysql_slave_relay.log
#sync_binlog = 1
##########################################
2.01  同步一臺數據庫my_database 操做。
 1、 先使用mysqldump備份my_database 數據庫
#mysqldump -E -v -R -B my_database > my_database_bak.sql
2、 恢復到主機的服務器上
#mysql --comment my_database < my_database_bak.sql
3、從機數據部署問題,保證數據一致性使用 --single-transaction 
#mysqldump --single-transaction --master-data=2  -E -v -R -B my_database > my_database_bak.sql
注:由於my_database裏面使用的都是innodb存儲引擎,因此使用--single-transaction  和 master-data。
master-data 和 --lock-table 是衝突的,由於它會自動打開 --lock-all-tables ,若是加上--single-transaction
那麼就能保證鎖很短的時間,並保證數據一致性。對於--master-data 默認值爲1 表示恢復備份會影響二進制的位置
若是等於,那麼在備份文件頭change master to master_log = '' , master_position='';語句會以註釋的形式存在。
以下:
--
-- Position to start replication or point-in-time recovery from
--
 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql_master.000003', MASTER_LOG_POS=33879657;
 
--
-- Current Database: `my_database`
--
 
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_database` /*!40100 DEFAULT CHARACTER SET utf8 */;
 
USE `my_database`;
以此位置配置從機
首先恢復備份到從機服務器,而後先在主機建立複製帳號:
#mysql>  grant replication slave on *.* to username@'IP' identified by 'password';

在從機配置主機鏈接:html

CHANGE MASTER TO MASTER_HOST='主機IP',MASTER_USER='username',MASTER_PASSWORD='password' MASTER_LOG_FILE='mysql_master.000003', MASTER_LOG_POS=33879657;
START SLAVE;
 
這樣從機就會開始追趕被主機落下的部分。簡單雙機主從搭建完畢
 
可能出現的問題:
IO 顯示 CONNECTING 
檢查防火牆端口,嘗試使用客戶端鏈接驗證鏈接性
 
可能的故障問題維護:
在複製期間從機發生錯誤
 
若是主機和從機同時發生一樣的錯誤,那麼錯誤會被記錄,而且從機繼續正常執行。
若是主機和從機發生不一樣的錯誤,那麼須要使用SHOW SLAVE STATUS 肯定錯誤緣由,
根據錯誤緣由能夠選擇--slave-skip-errors 等方式解決錯誤
 
若是一條語句在主機執行而沒有在從機執行致使從機停機,查看錯誤,若是能夠經過跳過錯誤的方式解決則使用下面語句:
mysql> STOP SLAVE;
mysql> SET GLOBAL sql_slave_skip_counter = N;
mysql> START SLAVE;
 
注:這個語句是指從機跳過N個事件,通常爲1,指跳過致使從機複製失敗的事件,使用這個語句必定要從機中止,不然會報錯。
使用這個語句,要理解二進制日誌其實是以一個組序列做爲事件組,每一個事件組由一個時間序列組成,
對於事務表,每一個組至關於一個事務,對於非事務表,每一個事件組至關於一個sql語句
全部使用這個語句跳過的單位其實是事件組。必定會跳過一個完整的事件,而不可能出現跳過一半。
 
 
綜合手冊來看,解決主從複製錯誤有兩種方式:
1、從新搭建從節點
2、跳過當前錯誤
若是一切配置沒有問題那麼按常理來講是不該該出現錯誤的,若是出現錯誤,那麼很大多是可跳過的,這個要根據實際錯誤內容判斷。
 
 
主從配置    主機上的參數參考:
1 、server_id  在主從上範圍1 to 2^32 − 1.  0爲默認值,表示拒絕主(在從配置),或者拒絕從(在主配置) ,要求主從server_id 要惟一 
 
二、server_uuid 通常在data_dir/auto.cnf 目錄記錄,安裝mysql通常會存在
 
三、enforce-gtid-consistency GTID模式下,禁止不安全語句的執行,譬如create table .....select
 
四、auto_increment_increment 自增id的步長
 
五、auto_increment_offset 自增id的起始值  auto_increment_offset + N × auto_increment_increment
 
 
主從配置    從機上的參數參考:
 
一、--log-slave-updates 從機在本地記錄二進制日誌,若是從機做爲下一個從節點的主機時這個是必要的。
      而且自己也要配置二進制相關參數
 
二、log_slow_slave_statements  當慢查詢日誌開啓,這個參數是記錄在slave上查詢時間超過query_long_time的語句
 
三、--master-info-file=file_name 用於從機記錄主機信息的文件
 
四、--master-retry-count=count 從機試圖鏈接到主機的次數 默認86400次
 
五、--max-relay-log-size=size  每一箇中繼日誌的大小,若是非0,則按照配置大小來切換產生新的中繼日誌文件,默認值是0,按照max_binlog_size的大小來控制中繼日誌每一個文件的大小
 
六、--read-only  (重要) 只容許具備super權限和複製帳號來更新從數據庫,其餘帳戶均不容許更改。保證從機只讀
 
七、--relay-log=file_name 中繼日誌的配置,默認數據路徑,能夠指定路徑和名稱
 
八、--relay-log-index=file_name 中繼日誌索引文件名稱
 
九、--relay-log-info-file=file_name 從機記錄有關中繼日誌的信息的文件名稱。
 
十、--relay-log-purge={0|1}  一旦他們再也不須要,禁用或啓用自動清除中繼日誌
 
十一、--relay-log-recovery={0|1}跟隨服務器啓動當即啓用自動中繼日誌恢復。恢復過程將建立一個新的中繼日誌文件、初始化SQL線程位置在新的中繼日誌,並初始化I/O線程到SQL線程位置。從主而後繼續的中繼日誌的閱讀。這應該是在複製從機的崩潰後使用,以確保沒有可能損壞的繼電器日誌被處理。默認值爲0(禁用)。
 
此選項應該啓用(設置爲1),--relay-log-inforepository必須設置TABLE,並必須啓用relay-log-recovery。啓用relay-log-recovery選項時而不啓用--relay-log-purge,存在從不被清除的文件讀取中繼日誌,致使數據的不一致性,所以是不安全。因此 應該  --relay-log-recovery=1,  --relay-log-inforepository = TABLE ,--relay-log-purge =1 同時啓用
 
十二、--relay-log-space-limit=size   此選項將限制在從機全部中繼日誌的總大小的上限。默認0 表示「沒有限制」,從機的磁盤大小有限時候比較有用。當達到極限時,I/O線程中止讀取二進制日誌事件從主服務器,直到SQL線程已經遇上並刪除一些不用的中繼日誌。注意,這個限制不是絕對的:在有些狀況下,SQL線程須要更多的事件才能夠刪除中繼日誌。在這種狀況下,I/O線程超過限制直到它SQL線程執行後容許刪除一些中繼日誌,由於不這樣作會致使死鎖。你不該該設置--relay-log-space-limit 小於--max-relay-log-size的兩倍大小。(或者 --max-binlog-size 若是--max-relaylog-size 是 0).
 
1三、--replicate-do-db=db_name
重點:這個和二進制格式息息相關,這裏只討論RBR
在RBR 模式下只須要知道在replicate-do-db=db1的狀況下 對db1有影響的都會被更新到從機,不管use db切換到什麼數據庫
譬如 use db2; update db1.table set id = N where name = N; RBR會更新從機,SBR不會更新從機
 
1四、--replicate-ignore-db=db_name 理解同上,具體SBR看官方文檔。受USE DB影響較大
 
1五、--replicate-ignore-table=db_name.tbl_name 
 
1六、--replicate-do-table=db_name.tbl_name 
 
1七、--replicate-rewrite-db=from_name->to_name 
 
1八、--replicate-same-server-id 默認爲0
 
1九、--replicate-wild-do-table=db_name.tbl_name
 
20、 --replicate-wild-ignore-table=db_name.tbl_name
 
如下這些信息報告給主機,在主機上SHOW SLAVE HOSTS;能夠查看
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2一、--report-host=host_name  把從機的主機名報告給主機,大致上是應該用主機名代替ip註冊主機
 
2二、--report-password=password
 
2三、--report-port=slave_port_num
 
2四、--report-user=user_name
 
2五、--show-slave-auth-info
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
2六、--show-slave-auth-info
 
2七、--slave-checkpoint-group=#
 
2八、--slave-checkpoint-period=#
 
2九、--slave-parallel-workers 多線程複製,在多庫狀況下併發,單庫仍是單線程
 
30、--slave-pending-jobs-size-max=#
 
3一、--skip-slave-start 從機服務器重啓後slave 不會自動開始,要手動執行,防止出錯
 
3二、--slave_compressed_protocol={0|1}  對於從機和主機協議壓縮,暫時用不到
 
3三、--slave-load-tmpdir=file_name
 
3四、slave-max-allowed-packet=bytes 
 
3五、--slave-net-timeout=seconds 當從機超過這個時間沒有獲取到數據則認爲已經斷開鏈接,並嘗試從新鏈接
 
3六、slave-rows-search-algorithms=list
 
3七、--slave-skip-errors=[err_code1,err_code2,...|all|ddl_exist_errors]  從機跳過指定類型的錯誤,通常不建議配置,若是沒問題,不配置就能夠正常,若是有問題,那麼就要知道排錯後手動跳過
 
3八、--slave-sql-verify-checksum={0|1}  啓用後將會檢查校驗中繼日誌,若是發生錯誤則終止從機服務,默認禁止。
 
3九、--master-info-repository={FILE|TABLE} 此選項使服務器將其主信息日誌寫入到文件或表中。文件的默認master.info名稱;你能夠改變文件名使用--master-info-file選項。
 
 40 、--relay-log-info-repository={FILE|TABLE}  此選項會致使服務器將其中繼日誌信息記錄到文件或表中。文件的默認relay-log.info名稱;你能夠改變使用--relay-log-info-file 選項
 
大致上關於主從的參數就是上面這些,摘自官方文檔,有一些暫時用不到,沒有中文解釋。
 
【轉發自http://www.cnblogs.com/jiangwenju/p/6098974.html】
相關文章
相關標籤/搜索