最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL基于SSL安全連接的主從復(fù)制(過程詳解)

 更新時(shí)間:2023年04月06日 09:30:36   作者:大蝦好吃嗎  
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,這篇文章主要介紹了MySQL基于SSL安全連接的主從復(fù)制,需要的朋友可以參考下

生產(chǎn)環(huán)境中一臺(tái)mysql主機(jī)存在單點(diǎn)故障,所以我們要確保mysql的高可用性,即兩臺(tái)MySQL服務(wù)器如果其中有一臺(tái)MySQL服務(wù)器掛掉后,另外一臺(tái)能立馬接替其進(jìn)行工作。

主從復(fù)制的原理

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

環(huán)境準(zhǔn)備:打開兩臺(tái)MySQL服務(wù)器,部署網(wǎng)絡(luò)環(huán)境。

部署master

1. 主機(jī)創(chuàng)建 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. 賦予權(quán)限并重啟。

[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是否開啟,并創(chuàng)建一個(gè)復(fù)制用戶。

注:?jiǎn)⒂?mysql 支持 ssl 安全連接主要用于 mysql 主從復(fù)制(局域網(wǎng)可以非 ssh 連接即明文復(fù)制,但 internet 復(fù)制建議采用 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開啟二進(jìn)制日志,重啟后查看二進(jìn)制日志文件。

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

[root@master ~]# vim /etc/my.cnf
#添加下面內(nèi)容
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. 防火墻配置,實(shí)驗(yàn)環(huán)境中可以關(guān)閉防火墻,生產(chǎn)環(huán)境中需要配置防火墻規(guī)則,允許3306端口。

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

6. 把ssl文件復(fù)制到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文件讀的權(quán)限并重啟mysql。

[root@slave ~]# vim /etc/my.cnf
#添加下面內(nèi)容
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. 確認(rèn)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. 在配置主從復(fù)制之前可以在從 mysql 上用 SSL 連接主服務(wù)器試試。

        注意分清IP,8.2是master的IP,可以看到ssl協(xié)議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服務(wù)器,配置主從 replicate

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

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二進(jìn)制日志文件
    -> 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)

確認(rèn)啟用成功。

測(cè)試SSL主從復(fù)制

1. 登錄master,寫入一些數(shù)據(jù)

[root@master ~]# mysql -uroot -p123
#省略部分內(nèi)容
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,查看數(shù)據(jù)

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

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

結(jié)語:

        SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。復(fù)制默認(rèn)是明文進(jìn)行傳輸?shù)模ㄟ^SSL加密可以大大提高數(shù)據(jù)的安全性。

到此這篇關(guān)于MySQL基于SSL安全連接的主從復(fù)制的文章就介紹到這了,更多相關(guān)mysql 基于ssl主從復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL查詢緩存優(yōu)化示例詳析

    MySQL查詢緩存優(yōu)化示例詳析

    MySQL的優(yōu)化指的是一個(gè)很大的系統(tǒng),面試的時(shí)候我之前是從sql的語句優(yōu)化方面去說的,這種優(yōu)化也有作用,不過是從邏輯方面去優(yōu)化,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢緩存優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • MySQL數(shù)據(jù)表合并去重的簡(jiǎn)單實(shí)現(xiàn)方法

    MySQL數(shù)據(jù)表合并去重的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)表合并去重的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • MySQL的鎖機(jī)制及排查鎖問題解析

    MySQL的鎖機(jī)制及排查鎖問題解析

    MySQL的鎖機(jī)制包括行鎖和表鎖,行鎖進(jìn)一步細(xì)分為RecordLock、GapLock和Next-keyLock,行鎖因其細(xì)粒度而減少?zèng)_突但開銷大,可能引起死鎖,本文介紹MySQL的鎖機(jī)制及排查鎖問題,感興趣的朋友一起看看吧
    2025-01-01
  • MySQL中binlog+dump備份還原詳細(xì)教程

    MySQL中binlog+dump備份還原詳細(xì)教程

    MySQL備份是指將MySQL數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行備份,以便在需要的時(shí)候能夠恢復(fù)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL中binlog+dump備份還原的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • MySQL8新特性:自增主鍵的持久化詳解

    MySQL8新特性:自增主鍵的持久化詳解

    MySQL8.0 GA版本發(fā)布了,展現(xiàn)了眾多新特性,下面這篇文章主要給大家介紹了關(guān)于MySQL8新特性:自增主鍵的持久化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Mysql5.7修改root密碼教程

    Mysql5.7修改root密碼教程

    本文給大家分享的是個(gè)人在使用mysql5.7修改root密碼的時(shí)候遇到的問題,以及解決方法,推薦給有相同需求的小伙伴參考下。
    2016-02-02
  • MySQL性能優(yōu)化之路---修改配置文件my.cnf

    MySQL性能優(yōu)化之路---修改配置文件my.cnf

    mysql數(shù)據(jù)庫的優(yōu)化,算是一個(gè)老生常談的問題了,網(wǎng)上也有很多關(guān)于各方面性能優(yōu)化的例子,今天我們要談的是MySQL 系統(tǒng)參數(shù)的優(yōu)化即優(yōu)化my.cnf文件
    2014-06-06
  • 探討:innodb與myisam在存儲(chǔ)上有何特點(diǎn)和區(qū)別

    探討:innodb與myisam在存儲(chǔ)上有何特點(diǎn)和區(qū)別

    本篇文章是對(duì)innodb與myisam在存儲(chǔ)上有何特點(diǎn)和區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL的commit是如何commit源碼解析

    MySQL的commit是如何commit源碼解析

    這篇文章主要為大家介紹了MySQL的commit是如何commit源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 開啟mysql的binlog日志步驟詳解

    開啟mysql的binlog日志步驟詳解

    這篇文章主要介紹了MySQL?5.7版本中二進(jìn)制日志(bin_log)的配置和使用,文中通過圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02

最新評(píng)論

南昌县| 明溪县| 福安市| 敦化市| 泌阳县| 四子王旗| 泸州市| 武冈市| 大丰市| 红河县| 漳州市| 西华县| 沙田区| 抚顺县| 闸北区| 微山县| 济阳县| 正安县| 灵台县| 恭城| 襄樊市| 荆州市| 嘉祥县| 宁明县| 长泰县| 鄂尔多斯市| 壤塘县| 新余市| 喀喇沁旗| 马公市| 同仁县| 宜春市| 方正县| 枣强县| 花垣县| 福安市| 波密县| 遂宁市| 大余县| 开阳县| 南汇区|