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 操作。
 一、 先使用mysqldump備份my_database 數據庫
#mysqldump -E -v -R -B my_database > my_database_bak.sql
二、 恢復到主機的服務器上
#mysql --comment my_database < my_database_bak.sql
三、從機數據部署問題,保證數據一致性使用 --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';

在從機配置主機連接:

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 、server_id  在主從上范圍1 to 2^32 − 1.  0為默認值,表示拒絕主(在從配置),或者拒絕從(在主配置) ,要求主從server_id 要唯一 
 
2、server_uuid 一般在data_dir/auto.cnf 目錄記錄,安裝mysql一般會存在
 
3、enforce-gtid-consistency GTID模式下,禁止不安全語句的執行,譬如create table .....select
 
4、auto_increment_increment 自增id的步長
 
5、auto_increment_offset 自增id的起始值  auto_increment_offset + N × auto_increment_increment
 
 
主從配置    從機上的參數參考:
 
1、--log-slave-updates 從機在本地記錄二進制日志,如果從機作為下一個從節點的主機時這個是必要的。
      並且本身也要配置二進制相關參數
 
2、log_slow_slave_statements  當慢查詢日志開啟,這個參數是記錄在slave上查詢時間超過query_long_time的語句
 
3、--master-info-file=file_name 用於從機記錄主機信息的文件
 
4、--master-retry-count=count 從機試圖連接到主機的次數 默認86400次
 
5、--max-relay-log-size=size  每個中繼日志的大小,如果非0,則按照配置大小來切換產生新的中繼日志文件,默認值是0,按照max_binlog_size的大小來控制中繼日志每個文件的大小
 
6、--read-only  (重要) 只允許具有super權限和復制賬號來更新從數據庫,其他賬戶均不允許更改。保證從機只讀
 
7、--relay-log=file_name 中繼日志的配置,默認數據路徑,可以指定路徑和名稱
 
8、--relay-log-index=file_name 中繼日志索引文件名稱
 
9、--relay-log-info-file=file_name 從機記錄有關中繼日志的信息的文件名稱。
 
10、--relay-log-purge={0|1}  一旦他們不再需要,禁用或啟用自動清除中繼日志
 
11、--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 同時啟用
 
12、--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).
 
13、--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不會更新從機
 
14、--replicate-ignore-db=db_name 理解同上,具體SBR看官方文檔。受USE DB影響較大
 
15、--replicate-ignore-table=db_name.tbl_name 
 
16、--replicate-do-table=db_name.tbl_name 
 
17、--replicate-rewrite-db=from_name->to_name 
 
18、--replicate-same-server-id 默認為0
 
19、--replicate-wild-do-table=db_name.tbl_name
 
20、 --replicate-wild-ignore-table=db_name.tbl_name
 
以下這些信息報告給主機,在主機上SHOW SLAVE HOSTS;可以查看
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
21、--report-host=host_name  把從機的主機名報告給主機,大體上是應該用主機名代替ip注冊主機
 
22、--report-password=password
 
23、--report-port=slave_port_num
 
24、--report-user=user_name
 
25、--show-slave-auth-info
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
26、--show-slave-auth-info
 
27、--slave-checkpoint-group=#
 
28、--slave-checkpoint-period=#
 
29、--slave-parallel-workers 多線程復制,在多庫情況下並發,單庫還是單線程
 
30、--slave-pending-jobs-size-max=#
 
31、--skip-slave-start 從機服務器重啟后slave 不會自動開始,要手動執行,防止出錯
 
32、--slave_compressed_protocol={0|1}  對於從機和主機協議壓縮,暫時用不到
 
33、--slave-load-tmpdir=file_name
 
34、slave-max-allowed-packet=bytes 
 
35、--slave-net-timeout=seconds 當從機超過這個時間沒有獲取到數據則認為已經斷開連接,並嘗試重新連接
 
36、slave-rows-search-algorithms=list
 
37、--slave-skip-errors=[err_code1,err_code2,...|all|ddl_exist_errors]  從機跳過指定類型的錯誤,一般不建議配置,如果沒問題,不配置就可以正常,如果有問題,那么就要知道排錯后手動跳過
 
38、--slave-sql-verify-checksum={0|1}  啟用后將會檢查校驗中繼日志,如果發生錯誤則終止從機服務,默認禁止。
 
39、--master-info-repository={FILE|TABLE} 此選項使服務器將其主信息日志寫入到文件或表中。文件的默認master.info名稱;你可以改變文件名使用--master-info-file選項。
 
 40 、--relay-log-info-repository={FILE|TABLE}  此選項會導致服務器將其中繼日志信息記錄到文件或表中。文件的默認relay-log.info名稱;你可以改變使用--relay-log-info-file 選項
 
大體上關於主從的參數就是上面這些,摘自官方文檔,有一些暫時用不到,沒有中文解釋。
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM