linux系統中使用openssl實現mysql主從複製_Mysql

來源:互聯網
上載者:User

        認證準備:

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功能配置項為全域配置參數,所以 編輯 /etc/my.cnf 檔案 :

由於是用戶端驗證服務端,所以只需要配置  ssl_cert(mysql伺服器端的認證位置)、ssl_key(mysql私密金鑰位置)與ssl_ca(CA認證位置)即可

開啟服務,並檢查:

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

建立一個基於ssl功能,從伺服器用於複製mysql主伺服器資料庫的最小許可權帳號:

MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘slave1'@'10.1.35.25' IDENTIFIED BY ‘passwd' REQUIRE ssl ;    

查看binlog位置,並記錄,用於從伺服器配置:

MariaDB [(none)]> SHOW MASTER LOGS;

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

從伺服器配置:

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

                                   

啟動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';


MariaDB [(none)]> START SLAVE;

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

驗證主從效果:

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

主伺服器建立資料庫 mydb

                               

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

從伺服器查看:

                          

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

    總結:

複製時應該注意的問題:

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

以上兩項為立即刷寫資料從記憶體到磁碟

以上就是本文的全部內容了,希望對大家熟悉mysql主從複製能夠有所協助

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.