mysql的主從複製及實現過程
mysql的主從複製
為什麼需要用到mysql的主從複製功能?
一般在實際生產中,僅僅有一臺資料庫伺服器作為獨立的資料庫是很少見的,因為一旦這臺獨立的伺服器掛掉,那麼前端的程式或使用者將無法訪問後端的資料了,這樣會造成服務中斷的。對於有些企業來說,保證服務的連續性是非常重要的,因此在這種情況下需要保證資料庫伺服器的高可用性。
有時某個資料庫伺服器臺過於繁忙的話,我們需要減輕伺服器的負載,那麼我們可以將這個伺服器上的寫請求和讀請求分開,分別由不同的伺服器來完成,這樣豈不是更好。對於一個數據庫伺服器而言,保證資料的安全性是至關重要的,因此我們需要定期的對資料庫上的資料做備份。
如果使用熱備方式的話,操作起來可能不太容易,使用冷備的話又不能保證其正常服務。如果能有一臺資料庫伺服器上面也存有相同的資料,但是我們卻可以手動將資料庫上的服務停止掉,然後在將該資料庫上面的資料備份起來。等等這些功能,我們都可以利用mysql的主從複製功能來完成。
mysql的主從複製原理
在mysql主從複製架構中,有一臺伺服器作為MASTER伺服器,該伺服器負責所有的讀請求和寫請求。另外一臺或多臺作為slave伺服器。當master上的某個應用程式發起寫請求時,該請求會被核心響應並在核心中執行,然後在將其資料寫入到磁碟中去。並且將此次的操作以事件的形式記錄到二進位制檔案中去。
此時master上的Binlog dump thread等待slave上的I/O thread連線請求。一旦slave I/O thread連線上了master的Binlog dump thread,則Binlog dump thread會將本地二進位制檔案中更新的事件複製給slave。
當slave上的I/O thread接受從master複製過來的二進位制檔案中的事件時,會將其事件寫入到slave上的中繼日誌檔案中。然後slave會呼叫本地的SQL thread重新應用(或回放)中繼日誌中的事件,然後在將其資料寫入到slave上的磁碟中。這就是mysql的主從複製功能。
由於slave上更新的資料不能複製給master,因此,對於slave而言,不能執行寫操作。切記切記!!!
mysql的主從複製原理如下圖所示:
複製執行緒
Binlog dump thread:接受slave I/O thread的連線請求,並將master上的二進位制檔案中更新的事件複製給slave I/O thread。Binlog dump thread位於master上。
slave I/O thread:接受Binlog dump thread複製過來的時間,並將其寫入到slave上的中繼日誌檔案中。slave I/O thread位於slave上。
slave SQL thread:讀取中繼日誌檔案中的事件重新應用(或回放),並將其資料寫入到磁碟中去。
mysql的主從複製具有如下功能:
1、實現mysql資料庫的高可用性
2、可以輔助實現資料備份
3、可以異地容災
4、實現伺服器分攤負載,即通過mysql的讀寫分離來實現分攤負載。
mysql的主從複製需要注意的事項:
一個master可以用於多個slave,而一個slave只能屬於某一個master
在主從架構中,如果只有一個slave,那麼在slave上重新回放中繼日誌檔案中的事件會引起資料庫的改變,因此,這個過程也會以事件的形式寫入到二進位制日誌檔案中去。由於二進位制日誌是用來做及時點還原的,且master儲存著一份完整的資料,因此在slave上不需要開啟二進位制日誌功能,但是master上必須要開啟。
如果有多個slave的情況下,在這多個slave中,有一個slave即當做master的slave又可以當做其他slave的master,那麼此時這個slave上必須開啟二進位制日誌功能。即此時這個slave即充當slave又充當master。
mysql複製過程中資料是以明文的方式進行傳輸的,不過可以將其配置為基於ssl來傳輸。
mysql的三種複製模式
mysql的非同步模複製式
這是mysql的預設複製模式。非同步複製模式就是當master上的寫操作完成後,即資料已寫入到磁碟上,事件也入到到二進位制日誌檔案中去了。master上的dump thread將其更新的二進位制日誌中的事件複製給slave I/O thread並被其接受時,則認為複製成功。這種複製模式並不能保證複製過去的事件一定能寫入到slave上的中繼日誌中,因此,可能會導致slave上的資料丟失。導致slave和master上的資料不一致。
而且一般說來,資料的讀寫操作都是由master先完成的,然後在將其更新的事件複製給slave,因此,資料的同步並不是同時進行的,一般slave寫入資料到磁碟都會比master要慢一些,這取決於網路頻寬、伺服器負載等因素。不過非同步複製模式的好處就是可以提升master的效能。
mysql的半同步複製模式
在mysql5.5之後的版本中,引入半同步的概念。不過要想讓mysql5.5支援半同步,必須要安裝由google提供的一個開源補丁才行。
mysql的半同步複製模式就是當master上的寫操作完成後,master上的dump thread會將其更新的二進位制日誌中的事件複製給slave,並且這些事件至少能夠在一個slave上正常寫入到中繼日誌中,且中繼日誌中的事件經過回放將其資料寫入到磁碟中。則認為複製操作成功。即至少有一個slave完成寫操作就表示所有的複製操作成功了。
在這個過程中,如果沒有一個slave能夠將其複製過來的事件寫入到中繼日誌中,則master會一直等待,當這個等待超時時長(timeout,預設為10s)過後,則半同步複製模式轉變成非同步複製模式。
mysql的同步複製模式
mysql的InnoDB和MyISAM引擎預設不支援這種複製模式。所謂同步複製模式即master和slave上的寫操作都完成後 ,則表示複製成功。
mysql的複製過濾
有時候我們不想接受從其他伺服器複製過來的所有資料,只是想選擇性的接受我們自己想要的資料,則就可以使用mysql的複製過濾功能。mysql的複製過濾既可以在master上使用,又可以在slave上使用,但是如果在master上配置複製過濾功能會導致其二進位制日誌的完整性,不利用資料及時點恢復。因此,我們一般不再master上配置複製過濾功能,一般配置在slave上。
mysql的主從複製實驗過程
實驗前提:
這裡我使用的linux系統為RHEL 5.8 64bit
本次實驗共2臺主機,其ip地址分別為:
master.xsl.com 192.168.108.202
slave.xsl.com 192.168.108.150
主從複製
這裡使用的是預設的複製模式,即非同步複製模式
一、master上的配置
1、安裝mysql
這裡我使用的mysql-5.5.28,關於mysql的安裝方式將不再這裡介紹了。
2、修改mysql的配置檔案,並新增如下資訊:
#vim /etc/my.cnf
如下資訊全部新增到[mysqld]這個容器中
datadir=/mydata/data #指定mysql的儲存目錄
log-bin=master-bin #指定master上二進位制日誌檔案
log-bin-index=master-bin.index 指定二進位制日誌的索引檔案
server-id = 1 指定master的id號,這個id號一定要是唯一的。server-id的有效取值為[1-2^32-1]
innodb_file_per_table = 1 如果mysql的工作引擎是innodb的話,那麼就指定配一個表使用一個表空間
3、啟動mysqld服務
#service mysqld start
4、修改環境變數
如果在第一步中已經修改了環境變數,那麼這一步就不需要操作了。如果還沒有修改,那麼想修改環境變數可以這麼做。
編輯/etc/profile.d/mysql.sh,並新增如下內容:
#vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
執行如下命令,可以讓記憶體重讀環境變數
#. /etc.profile.d/mysql.sh
5、建立具有複製許可權的使用者
#mysql -uroot -p
mysql> grant replication slave on *.* to 'repluser'@'192.168.108.%' identified by 'repluser';
讓記憶體重讀授權表
mysql> flush privileges;
6、檢視授權資訊
mysql> show grants for 'repluser'@'192.168.108.%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]% |
+---------------------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.108.%' IDENTIFIED BY PASSWORD '*89A63F9688240669B54B5C2649EEFB795850597E' |
+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
二、slave上的配置
1、安裝mysql,這裡安裝的也是mysql-5.5.28,安裝過程和上面一樣。
2、修改mysql的配置檔案,並新增如下資訊:
#vim /etc/my.cnf
如下資訊全部新增到[mysqld]這個容器中
datadir=/mydata/data
relay-log=relay-log 指定中繼日誌檔案
relay-log-index=relay-log.index 指定中繼日誌索引檔案
server-id=11 記住server-id一定要是唯一的.server-id的有效取值為[1-2^32-1]
innodb_file_per_table = 1 如果工作引擎是innodb的話,建議開啟一個表使用一個表空間功能
read_only = on 由於slave上不能進行寫操作,因此,需要設定為只讀操作。不過這個選項,對於具有super許可權的使用者無效。
sync_log = 1 為了保證事務的安全性及二進位制日誌的完整性,還需要設定每一次寫操作都同步二進位制日誌一次。
3、啟動mysqld服務
#service mysqld start
4、修改環境變數
如果在第一步中已經修改了環境變數,那麼這一步就不需要操作了。如果還沒有修改,那麼想修改環境變數可以這麼做。
編輯/etc/profile.d/mysql.sh,並新增如下內容:
#vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
5、連鍥master伺服器
在連線master伺服器之前,我們還需要檢視一下master正在使用的二進位制日誌檔案是哪一個,以及二進位制日誌檔案中事件的相對位置。這樣我們只需要複製這個二進位制日誌檔案中這個position以後的事件即可。
檢視master正在使用的二進位制日誌檔案以及事件所處的相對位置,可以在master上使用如下命令完成。
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 344 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
檢視完成之後,我們在連線master伺服器
#mysql -uroot -p
mysql> change master to master_host='192.168.108.202',master_port=3306,master_log_file='master-bin.000001',master_log_pos=344,master_user='repuser',master_password='repuser';
這裡的master_log_file就是用來指定我們要複製master上的哪個二進位制日誌檔案中的事件,msater_log_pos用來指定複製二進位制日誌檔案這個相對位置以後的事件。
master_user就是在master上建立的具有複製許可權的使用者,master_password就是這個使用者的密碼
6、啟動slave上的I/O執行緒和SQL 執行緒
mysql> start slave ;
使用這個命令會將slave I/O執行緒和slave SQL執行緒同時開啟。如果想手動的開啟某個執行緒可以使用如下命令來完成:
mysql> start slave IO_Thread ; 啟動I/O執行緒
mysql> start slave SQL_Thread ; 啟動SQL執行緒
7、檢視slave上的I/O執行緒和SQL執行緒是否啟用,以及slave上的其他相關資訊
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.108.202
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 344
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 254
Relay_Master_Log_File: master-bin.000001
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: 344
Relay_Log_Space: 404
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
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR:
No query specified
三、測試,在master上新增資料,觀看資料是否會複製到slave上。
在master上建立一個數據庫testrepl
mysql> create database testrepl;
檢視master上所有庫;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| testrepl |
+--------------------+
5 rows in set (0.00 sec)
master上已經建立了testrepl庫
看看,在master上剛剛建立的testrepl庫是否會複製到slave上去。
在slave上使用如下命令檢視slave上的所有庫:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| testrepl |
+--------------------+
5 rows in set (0.00 sec)
看看,果然master上的testrepl這個庫複製過來了,說明mysql的主從複製功能已經實現了。
說明:在slave上的資料目錄下即/mydata/data/下,有2個檔案master.info和relay-log.info 。這兩個檔案都是文字檔案,其中master.info保留的是連線到master主機上的一些資訊,因此,當mysql開啟自啟動或重啟時會自動連線到master上去。一般建議mysql自啟動時不要自動連線到master上。而relay-log.info保留的是當前使用的中繼日誌檔案和master上正在使用的二進位制日誌檔案以及這些檔案中事件的相對位置。
如果不要讓slave開機就直接連上master,可以將這兩個檔案放置在其他目錄下;或者在配置檔案中新增skip-slave-start=on等引數都可以來實現。
配置半同步模式的主從複製(這裡使用的複製模式為半同步複製模式)
如果在主從複製中要想使用半同步複製模式,還需要如下步驟:
mysql的半同步複製模式是在mysql-5.5以後才有的,不過要想使用半同步複製模式,還要安裝由google提供的一些開源外掛,這些外掛位於安裝目錄下的/lib/plugin/下,在我的系統上則是位於/usr/local/mysql/lib/plugin/下。
在這個目錄下有2個外掛,分別是semisync_master.so, semisync_slave.so。其中semisync_master.so是master上的外掛,semisync_slave.so是slave上的外掛。分別在各自的伺服器上安裝即可。
一、在master上的配置
1、在master上安裝外掛
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
這裡的rpl_semi_sync_master soname為外掛名稱,semisync_master.so為模組名稱
刪除外掛的語法格式為:
UNINSTALL PLUGIN plugin_name
2、設定全域性變數,啟用半同步複製功能,並設定超時時長
mysql> set global rpl_semi_sync_master_enabled=1;
mysql> set global rpl_semi_sync_master_timeout=10000; 設定超時時長為10秒,預設單位為毫秒
3、檢視與半同步複製相關的變數資訊
mysql> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
+------------------------------------+-------+
4 rows in set (0.00 sec)
二、slave上的配置
1、在slave上安裝外掛
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
2、啟用半同步複製功能
mysql> set global rpl_semi_sync_slave_enabled =1;
檢視設定是否成功
mysql> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
2 rows in set (0.01 sec)
3、啟動slave上的兩個程序
mysql> slave stop;
mysql> slave start;
4、驗證半同步複製是否生效
在master上執行如下命令,可以檢視半同步複製是否生效
mysql> show global status like '%semi%';
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 1 | 說明已經有一個客戶端連線上來了
| Rpl_semi_sync_master_net_avg_wait_time | 0 |
| Rpl_semi_sync_master_net_wait_time | 0 |
| Rpl_semi_sync_master_net_waits | 0 |
| Rpl_semi_sync_master_no_times | 0 |
| Rpl_semi_sync_master_no_tx | 0 |
| Rpl_semi_sync_master_status | ON |說明半同步複製功能已開啟
| Rpl_semi_sync_master_timefunc_failures | 0 |
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |
| Rpl_semi_sync_master_tx_wait_time | 0 |
| Rpl_semi_sync_master_tx_waits | 0 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 0 |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)
5、在master上建立表bincp,並驗證在slave上是否存在
mysql> use testrepl
mysql> create table bancp (id int);
mysql> show tables;
+--------------------+
| Tables_in_testrepl |
+--------------------+
| bancp |
+--------------------+
1 row in set (0.00 sec
在slave上驗證,是否存在表bincp
mysql> use testrepl
Database changed
mysql> show tables;
+--------------------+
| Tables_in_testrepl |
+--------------------+
| bancp |
+--------------------+
1 row in set (0.00 sec)
說明表複製成功,mysql的半複製功能也設定成功了。
如果在slave上停止其IO執行緒和SQL執行緒,然後在建立一個數據庫的話,你會發現建立需要好長時間,這個時間就是我們在master上設定的超時時長。一旦第一次連線超時,則就會自動切換成非同步模式。
說明:剛剛在上面修改全域性變數的操作都是在命令列中完成的,不會永久生效的,要想永久生效,需要將其變數寫入到配置檔案中去。
mysql的複製過濾功能的實現過程
一般說來,如果在master上做過濾的話,會影響到二進位制日誌的完整性的,會對以後做及時點恢復有影響的,因此,一般我們不會在master上做過濾。只在slave上做過濾。
如果slave上不想接受某些庫或表的話,可以在slave上做相應的配置,這樣slave就不會接受master上某些庫或指定表的相關資料了。
如果要在slave上開啟過濾功能,還需要配置如下步驟:
1、 在slave上的配置檔案中,且在[mysqld]這個容器中新增如下引數:
#replicate_do_db=db_name 表示只接受某個資料庫
#replicate_ignore_db=db_name表示不解釋某個資料庫
#replicate_do_table=db_table.tb_name表示只接受指定庫的某個表
#replicate_ignore_table=db_table.tb_name表示不接受指定庫的某個表
#replicate_wild_do_table=db_name.test%對於表來說,還可以萬用字元來進行匹配。這裡表示只接受指定庫中以test開頭且test後面為任意長度的任意字元的所有表
#replicate_wild_ignore_table=db_name.test_這也是使用萬用字元來進行匹配的。這裡表示不接受指定庫中以test開頭且後面為任意單個字元的所有表
replicate_ignore_table=testrepl.xsl
說明如果要指定多個庫或多個表,可以將命令多寫幾次就可以了。在設定過濾的時候,最好不要同時使用do和ignore引數
2、重啟mysqld服務
#service mysqld restart
2、在master的testrepl庫上建立兩個表,分別為xsl、abc
mysql> use testrepl
mysql> create table abc(id int);
mysql> create table xsl(id int);
檢視常見的表
mysql> show tables;
+--------------------+
| Tables_in_testrepl |
+--------------------+
| abc |
| bancp |
| xsl |
+--------------------+
3 rows in set (0.00 sec)
3、在slave上觀察表xsl是否複製過來了。
mysql> use testrepl
mysql> show tables;
+--------------------+
| Tables_in_testrepl |
+--------------------+
| abc |
| bancp |
+--------------------+
2 rows in set (0.00 sec)
看看,slave上確實是沒有表xsl,說明設定成功了。
mysql的資料基於ssl加密傳輸
預設情況下,mysql的資料是明文傳送的,不能夠保證資料的安全性和完整性。因此,需要藉助ssl的加密功能來完成資料傳輸。
預設情況下,mysql是沒有啟動加密功能的,這可以如果如下命令檢視:
mysql> show global variables like '%ssl%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
+---------------+----------+
7 rows in set (0.00 sec)
如果要讓mysql的資料傳輸是通過加密方式進行的,那麼需要配置如下步驟:
1、在master上建立私有CA
# (umask 077 ;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、生成自簽證書
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
3、建立檔案和目錄
自簽證書生成完成後,還需要建立一些檔案和目錄。如index,serial,cert,crl,newcerts
# cd /etc/pki/CA/
#touch index.txt serial
#echo '01' > serial
#mkdir -p certs crl newcerts
建立完檔案和目錄以後,還需要修改ssl的配置檔案/etc/pki/tls/openssl.conf,修改CA的目錄為如下:
dir = /etc/pki/CA
3、在master上建立私鑰以及頒發證書
#mkdir /usr/local/mysql/ssl/
#cd /usr/local/mysql/ssl/
#(umask 077;openssl genrsa -out mysql.key 2048)
# openssl req -new -key mysql.key -out mysql.csr
為master頒發證書
#openssl ca -in mysql.csr -out mysql.crt -days 3650
#chwon -R mysql.mysql ./
4、在slave上配置
在slave上建立私鑰
#mkdir /usr/local/mysql/ssl
#cd /usr/local/mysql/ssl/
# (umask 077;openssl genrsa -out mysql.key 2048)
5、生成頒發請求
# openssl req -new -key mysql.key -out mysql.csr
6、將請求檔案傳送給master(在slave上執行)
# scp /usr/local/mysql/ssl/mysql.csr 192.168.108.202:/tmp
7、master為slave簽署請求檔案(在master上執行)
#openssl ca -in /tmp/mysql.csr -out /tmp/mysql.crt -days 3650
8、將簽署好的證書傳送給slave(在master上執行)
#scp /tmp/mysql.crt 192.168.108.150:/usr/local/mysql/ssl/
#scp /etc/pki/CA/cacert.pem 192.168.108.150:/etc/pki/CA/
9、修改master上的mysql配置檔案/etc/my.cnf,並在[mysqld]容器中新增如下資訊:
[mysqld]
ssl #這個就是用來啟用ssl功能的
ssl-ca=/etc/pki/CA/cacert.pem
ssl-cert=/usr/local/mysql/ssl/mysql.crt
ssl-key=/usr/local/mysql/ssl/mysql.key
檢視ssl功能是否啟用
mysql> show variables like '%ssl%';
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/pki/CA/cacert.pem |
| ssl_capath | |
| ssl_cert | /usr/local/mysql/ssl/mysql.crt |
| ssl_cipher | |
| ssl_key | /usr/local/mysql/ssl/mysql.key |
+---------------+--------------------------------+
7 rows in set (0.00 sec)
然後在重啟master上的mysqld服務
#service mysqld restart
10、在master上建立具有複製許可權的使用者且基於ssl來傳輸
mysql>grant replication client,replication slave on *.* to 'repluser'@'192.168.108.%' identified by 'repluser' require ssl
mysql> flush privileges;
11、修改slave上的mysql配置檔案,並在[mysqld]容器下新增如下引數:
[mysqld]
ssl #啟用ssl
12、連線master伺服器
在連線master之前,最後是檢視一下master正在使用的二進位制日誌檔案是哪一個,以及事件正處在哪個position上。
可以在master上執行如下命令檢視:
mysql> show master status;
#service mysqld restart
#mysql
mysql> change master to master_host='192.168.108.202', master_user='repluser', master_password='repluser', master_log_file='mysql-bin.000018', master_log_pos=107,master_ssl=1, master_ssl_ca='/usr/local/mysql/ssl/cacert.pem',master_ssl_cert='/usr/local/mysql/ssl/mysql.crt',master_ssl_key='/usr/local/mysql/ssl/mysql.key';
mysql>slave start
檢視slave上的狀態資訊
mysql> show slave status\G
mysql的讀寫分離
轉載於:https://blog.51cto.com/xslwahaha/1621304