亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL基于SSL安全連接的主從復制怎么實現

發布時間:2023-05-08 18:00:29 來源:億速云 閱讀:142 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“MySQL基于SSL安全連接的主從復制怎么實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL基于SSL安全連接的主從復制怎么實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    生產環境中一臺mysql主機存在單點故障,所以我們要確保mysql的高可用性,即兩臺MySQL服務器如果其中有一臺MySQL服務器掛掉后,另外一臺能立馬接替其進行工作。

    主從復制的原理

            master記錄二進制日志,在每個事務更新數據完成之前,master在二日志記錄這些改變。MySQL將事務寫入二進制日志,在事件寫入二進制日志完成后,master通知存儲引擎提交事務。 下一步就是slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個工作線程——I/O線程,I/O線程在master上打開一個普通的連接,然后開啟binlog dump process。Binlog dump process從master的二進制日志中讀取事件,如果已經同步了master,它會睡眠并等待master產生新的事件,I/O線程將這些事件寫入中繼日志。 SQL slave thread(SQL從線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重放其中的事件而更新slave的數據,使其與master中的數據一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。

    環境準備:打開兩臺MySQL服務器,部署網絡環境。

    MySQL基于SSL安全連接的主從復制怎么實現

    部署master

    1. 主機創建 SSL/RSA 文件

    [root@master ~]# cd /usr/local/mysql/bin/
    [root@master bin]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/llocal/mysql --datadir=/usr/local/mysql/data

    2. 賦予權限并重啟。

    [root@master bin]# chmod +r /usr/local/mysql/data/server-key.pem 
    [root@master bin]# service mysqld restart
    Shutting down MySQL..                                      [  確定  ]
    Starting MySQL.                                            [  確定  ]

    3. 登錄mysql查看ssl是否開啟,并創建一個復制用戶。

    MySQL基于SSL安全連接的主從復制怎么實現

    注:啟用 mysql 支持 ssl 安全連接主要用于 mysql 主從復制(局域網可以非 ssh 連接即明文復制,但 internet 復制建議采用 ssl 連接)

    mysql> grant replication slave on *.* to rep@'192.168.8.3' identified by '123';
    Query OK, 0 rows affected, 1 warning (0.07 sec)

    4. master開啟二進制日志,重啟后查看二進制日志文件。

    需要注意的是server_id必須唯一。

    [root@master ~]# vim /etc/my.cnf
    #添加下面內容
    log-bin=mysql-bin
    service_id=1
    [root@master ~]# service mysqld restart
    Shutting down MySQL..                                      [  確定  ]
    Starting MySQL.                                            [  確定  ]
    [root@master ~]# mysql -uroot -p123 -e "show master status"
    mysql: [Warning] Using a password on the command line interface can be insecure.
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |      154 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+

    5. 防火墻配置,實驗環境中可以關閉防火墻,生產環境中需要配置防火墻規則,允許3306端口。

    [root@master ~]# firewall-cmd --permanent --add-port=3306/tcp
    success
    [root@master ~]# firewall-cmd --reload
    success

    6. 把ssl文件復制到slave

    [root@master data]# scp ca.pem client-cert.pem client-key.pem root@192.168.8.3:/usr/local/mysql/data
    The authenticity of host '192.168.8.3 (192.168.8.3)' can't be established.
    ECDSA key fingerprint is SHA256:LFby9KMDz/kkPfOESbeJ7Qh+3hmQaX2W5gkDDMwSGHA.
    ECDSA key fingerprint is MD5:03:32:64:b4:c2:5b:6c:a4:e2:f0:7f:df:7a:35:19:80.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.8.3' (ECDSA) to the list of known hosts.
    root@192.168.8.3's password: 
    ca.pem                             100% 1112   232.5KB/s   00:00    
    client-cert.pem                    100% 1112   240.4KB/s   00:00    
    client-key.pem                     100% 1676   205.0KB/s   00:00

    部署slave

    1. 開啟ssl、中繼日志,賦予ssl文件讀的權限并重啟mysql。

    [root@slave ~]# vim /etc/my.cnf
    #添加下面內容
    server_id=2
    relay-log=relay-log
    ssl_ca=ca.pem
    ssl_cert=client-cert.pem
    ssl_key=client-key.pem
    
    [root@slave ~]# cd /usr/local/mysql/data
    [root@slave data]# ll ca.pem client-cert.pem client-key.pem 
    -rw-r--r--. 1 mysql mysql 1112 3月  31 14:31 ca.pem
    -rw-r--r--. 1 mysql mysql 1112 3月  31 14:31 client-cert.pem
    -rw-------. 1 mysql mysql 1676 3月  31 14:31 client-key.pem
    [root@slave data]# chmod +r client-key.pem
    [root@slave ~]# service mysqld restart
    Shutting down MySQL..                                      [  確定  ]
    Starting MySQL.                                            [  確定  ]

    2. 確認ssl開啟成功

    [root@slave ~]# mysql -uroot -p123 -e "show variables like '%ssl%'"
    mysql: [Warning] Using a password on the command line interface can be insecure.
    +-------------------------------------+-----------------+
    | Variable_name                       | Value           |
    +-------------------------------------+-----------------+
    | have_openssl                        | YES             |
    | have_ssl                            | YES             |
    | performance_schema_show_processlist | OFF             |
    | ssl_ca                              | ca.pem          |
    | ssl_capath                          |                 |
    | ssl_cert                            | client-cert.pem |
    | ssl_cipher                          |                 |
    | ssl_crl                             |                 |
    | ssl_crlpath                         |                 |
    | ssl_key                             | client-key.pem  |
    +-------------------------------------+-----------------+

    3. 在配置主從復制之前可以在從 mysql 上用 SSL 連接主服務器試試。

            注意分清IP,8.2是master的IP,可以看到ssl協議Cipher in use is ECDHE-RSA-AES128-GCM-SHA256

    [root@slave ~]# cd /usr/local/mysql/data
    [root@slave data]# mysql --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -u rep -p123 -h 192.168.8.2
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.40-log MySQL Community Server (GPL)
     
    Copyright (c) 2000, 2022, Oracle and/or its affiliates.
     
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
     
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
     
    mysql> 
    mysql> \s
    --------------
    mysql  Ver 14.14 Distrib 5.7.40, for linux-glibc2.12 (x86_64) using  EditLine wrapper
     
    Connection id:		3
    Current database:	
    Current user:		rep@192.168.8.3
    SSL:			Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
    Current pager:		stdout
    Using outfile:		''
    Using delimiter:	;
    Server version:		5.7.40-log MySQL Community Server (GPL)
    Protocol version:	10
    Connection:		192.168.8.2 via TCP/IP
    Server characterset:	latin1
    Db     characterset:	latin1
    Client characterset:	utf8
    Conn.  characterset:	utf8
    TCP port:		3306
    Uptime:			22 min 19 sec
     
    Threads: 1  Questions: 8  Slow queries: 0  Opens: 109  Flush tables: 1  Open tables: 102  Queries per second avg: 0.005
    --------------

    1.登錄slave服務器,配置主從 replicate

    記得先退出連接,登錄slave的mysql服務。

    mysql> exit
    Bye
    [root@slave data]# mysql -uroot -p123
    #省略部分登錄信息
    mysql> change master to
        -> master_host='192.168.8.2',						#masterIP
        -> master_user='rep',								#master用戶
        -> master_password='123',							#master密碼
        -> master_log_file='mysql-bin.000001',				#master二進制日志文件
        -> master_log_pos=154,								#master位置
        -> master_ssl=1,									#masterssl
        -> master_ssl_cert='client-cert.pem',
        -> master_ssl_key='client-key.pem',
        -> master_ssl_ca='ca.pem';
    Query OK, 0 rows affected, 2 warnings (0.07 sec)
     
    mysql> start slave;				#啟用從
    Query OK, 0 rows affected (0.02 sec)

    確認啟用成功。

    MySQL基于SSL安全連接的主從復制怎么實現

    測試SSL主從復制

    1. 登錄master,寫入一些數據

    [root@master ~]# mysql -uroot -p123
    #省略部分內容
    mysql> create database bbs;
    Query OK, 1 row affected (0.01 sec)
     
    mysql> use bbs;
    Database changed
    mysql> create table tb1(id int,
        -> name varchar(20));
    Query OK, 0 rows affected (0.02 sec)
     
    mysql> insert into tb1 values(1,'z3');
    Query OK, 1 row affected (0.02 sec)

    2. 登錄slave,查看數據

    [root@slave ~]# mysql -uroot -p123
    #省略部分內容
    mysql> select * from bbs.tb1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | z3   |
    +------+------+
    1 row in set (0.01 sec)

    最后可以查看到z3,主從成功。

    讀到這里,這篇“MySQL基于SSL安全連接的主從復制怎么實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    宁陵县| 平罗县| 正宁县| 徐汇区| 凤台县| 余干县| 平陆县| 田阳县| 屯留县| 曲水县| 通化县| 攀枝花市| 韶关市| 石楼县| 远安县| 南投县| 新干县| 龙山县| 长白| 营口市| 宁化县| 江安县| 沙坪坝区| 托克逊县| 淮南市| 锡林郭勒盟| 嵊州市| 方正县| 清河县| 铁岭县| 岗巴县| 饶平县| 霍山县| 焉耆| 台南市| 和田县| 兴业县| 潞城市| 博乐市| 武胜县| 嘉义市|