基于ssl功能實現mysql主從復制


基于ssl功能實現mysql主從復制


        證書準備:
                
                CA證書:
                    第一步:創建CA私鑰
                        [root@localhost CA]# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
                    第二步:生成自簽證書
                        [root@localhost CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem  -days 7300 -out /etc/pki/CA/cacert.pem

                ————————————————————————————–

                mysql準備私鑰及證書申請文件
                    第一步:創建mysql私鑰:
                        [root@localhost ~]# (umask 066;openssl genrsa -out /var/lib/mysql/ssl/mysql.key 2048)
                    第二步:生成證書申請文件及發送給CA服務端
                        [root@localhost ~]# openssl req -new -key /var/lib/mysql/ssl/mysql.key -days 365 -out /var/lib/mysql/ssl/mysql.csr
                        注意:國家,省 ,公司名稱必須和CA一致
                        將證書申請文件發送至CA服務器
                

                ————————————————————————————–

                在CA服務器端頒發證書:
                    [root@localhost CA]# openssl ca -in /tmp/mysql.csr -out /tmp/mysql.crt -days 365

                    附上查看證書中的信息命令:
                        openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates
     

                ————————————————————————————–

                    將證書發送至mysql服務器

                    以及將CA的自簽證書發送至從服務器

                    證書準備動作到此結束


                    基于ssl功能實現主從復制,是主從雙方都需要互相驗證,即從服務器也要有自己的證書。
                    所以,按照上述流程,生成slave服務器的證書


                ================================================
                ================================================

        


        配置mysql服務端:
                
                在主服務器端查看關于ssl有關的參數  及  主從復制–主服務器  的配置項:

                    MariaDB [(none)]> show variables like ‘%ssl%’;
                      基于ssl功能實現mysql主從復制
 
  
                由于ssl功能配置項為全局配置參數,所以編輯 /etc/my.cnf 文件
                        由于是客戶端驗證服務端,所以只需要配置  ssl_cert(mysql服務器端的證書位置)、ssl_key(mysql私鑰位置)與ssl_ca(CA證書位置)即可
                    基于ssl功能實現mysql主從復制
 
 
 
                    開啟服務,并檢查:
                        基于ssl功能實現mysql主從復制
 
                                           

                ————————————————————————————–


                創建一個基于ssl功能,從服務器用于復制mysql主服務器數據庫的最小權限賬號:
                    
                    MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘slave1’@’10.1.35.25’ IDENTIFIED BY ‘passwd’ REQUIRE ssl;    基于ssl功能實現mysql主從復制
 


                查看binlog位置,并記錄,用于從服務器配置:
MariaDB [(none)]> SHOW MASTER LOGS;
基于ssl功能實現mysql主從復制

 

                ================================================
                ================================================


                    從服務器配置:

                    編輯 /etc/my.cnf ,由于是從服務器,所以需要開啟中繼日志(relay_log),且server_id不應與同一層面的mysql服務器相同                 

                           基于ssl功能實現mysql主從復制
 

 
                       
                ————————————————————————————–

                            配置從服務器,指向主服務器(這是是全局配置參數,但是不建議寫在配置文件/etc/my.cnf 中,因為如果slave因意外宕機,在為了檢查數據完整性的情況下,再啟動mysql的時候,也會自動啟動復制功能,不利于排查錯誤)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=’10.1.35.1′,MASTER_USER=’slave1′,MASTER_PASSWORD=’passwd’,MASTER_LOG_FILE=’master-log.000025‘,MASTER_LOG_POS=245,MASTER_SSL=1,MASTER_SSL_CA=’/var/lib/mysql/ssl/cacert.pem’,MASTER_SSL_CERT=’/var/lib/mysql/ssl/slave.crt’,MASTER_SSL_KEY=’/var/lib/mysql/ssl/slave.key’;
基于ssl功能實現mysql主從復制
有關MASTER_SSL的配置不可以寫在/etc/my.cnf 中,會報錯



MariaDB [(none)]> START SLAVE;

基于ssl功能實現mysql主從復制

 
 


                ================================================
                ================================================

                驗證主從效果:
            
                ————————————————————————————–

                    主服務器創建數據庫 mydb

                        基于ssl功能實現mysql主從復制

    


                ————————————————————————————–

                    從服務器查看:
                     
                        基于ssl功能實現mysql主從復制

 



                ================================================
                ================================================



    總結:

復制時應該注意的問題:
1、從服務設定為“只讀”;(雙主模式無需設置)
在從服務器啟動read_only,但僅對非SUPER權限的用戶有效;
阻止所有用戶:
mysql> FLUSH TABLES WITH READ LOCK;


2、盡量確保復制時的事務安全
在master節點啟用參數:
sync_binlog = ON    #每次事務提交的時候,都立即將二進制日志時間都重內存同步到磁盤中,能確保從服務器能立即得到事件,而且能保護本地數據安全
如果用到的是InnoDB存儲引擎:
innodb_flush_logs_at_trx_commit=ON      #在事務提交時,立即刷寫事務日志從內存到磁盤上
innodb_support_xa=ON    #支持分布式事務
#這兩項啟動起來,能在一定程度上確保從服務器能夠立即得到主服務器的最新事件


3、從服務器意外中止時盡量避免自動啟動復制線程
由于數據是重要的,服務器能意外終止的時間都是奇異的,所以,終止后不要讓從服務器自動啟動復制線程,等人工手動排查后才從新開啟復制線程;有可能復制線程復制到一半的時候出現意外,復制線程或許沒有這種功能—–不知道時候需要再次復制上次中斷的事件               
4、從節點:設置參數
每一個從服務器都會保存一個文件 relay-log-info,是記錄在主服務器上復制二進制日志的位置,以及本地中繼日志的位置,為避免產生繁忙的IO操作,這些參數都是先保存在內存上的,到一定程度才會同步到磁盤上的,所以不安全
sync_master_info=ON
sync_relay_log_info=ON
                        以上兩項為立即刷寫數據從內存到磁盤











原創文章,作者:hunter,如若轉載,請注明出處:http://www.www58058.com/60390

(0)
hunterhunter
上一篇 2016-11-22
下一篇 2016-11-22

相關推薦

  • bash變量類型及區別之淺談

    變量類型,區別 位置變量$0 $1,$2,$# $@ $* 變量的類型:本地變量、環境變量、位置變量 本地變量:生效范圍為當前shell進程,對當前shell之外的其他shell進程包括當前shell的子進程均無效 環境變量:生效范圍為當前shell進程及子進程 位置變量:$1,…..$n,${10}來表示,用于放腳本在腳本代碼中調用通過命令行傳…

    Linux干貨 2016-08-12
  • grep,find用法-2

    1、顯示當前系統上root、fedora或user1用戶的默認shell; grep -E “^(root|fedora|user1)>” /etc/passwd | cut -d: -f1,7 [root@bogon Desktop]# grep -E “^(root|fedora|user1)\>” /etc/pass…

    Linux干貨 2017-08-04
  • shell腳本小練習..

    剛剛接觸vim和shell腳本,用幾個小腳本練練手。 1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中。 3、編寫腳本…

    2017-04-13
  • 任務計劃和本地系統的默認郵件

    一、前言 二、本地mail的使用方法 三、at /batch 四、cron 五、小結   一、前言 linux 中執行任務計劃有三種命令:at ,batch ,cron.其中,at,batch 是一次性執行,而crontab,則是周期性執行; 作業執行完成后,會通過郵件通知給作業提交者;因此,以下就從郵件說起。 二、郵件服務 Centos ,默認會…

    Linux干貨 2015-05-13
  • 源碼編譯安裝之apache

    工具: Development tools組包 httpd-2.2.9.tar.gz links網站瀏覽工具   安裝apache之前需要安裝編譯需要的環境“Development tools”這個是編譯使用的必須的環境包,使用下面的命令可以安裝。 [root@CentOS6 ~]# yum groupinstall&…

    Linux干貨 2016-08-24
  • 路由器解析路由表

    1.定義——>選擇最佳路徑;他只完成發送到下一個路徑上就結束,任務到達就撤了(就像快遞員一樣,當他將物件發往到下一個目的地,那他的任務就結束了)2.分類:主機路由、網絡路由、默認路由3.每個路由記錄由四項主要組成部分目標地址:主機IP、網絡ID號、未知地址(0.0.0.0)子網掩碼接口interface:從哪個口發往目標地址 網…

    2017-09-05
欧美性久久久久