返回顶部
首页 > 资讯 > 数据库 >MySQL基于SSL安全连接的主从复制(过程详解)
  • 736
分享到

MySQL基于SSL安全连接的主从复制(过程详解)

mysql基于ssl主从复制mysql主从复制 2023-04-06 10:04:06 736人浏览 八月长安
摘要

目录主从复制的原理部署master1. 主机创建 SSL/RSA 文件2. 赋予权限并重启。3. 登录Mysql查看ssl是否开启,并创建一个复制用户。4. master开启二进制日志,重启后查看二进制日志文件。5. 防

生产环境中一台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,主从成功。

结语:

        SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。复制默认是明文进行传输的,通过SSL加密可以大大提高数据的安全性。

到此这篇关于MySQL基于SSL安全连接的主从复制的文章就介绍到这了,更多相关mysql 基于ssl主从复制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL基于SSL安全连接的主从复制(过程详解)

本文链接: https://lsjlt.com/news/201313.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL基于SSL安全连接的主从复制(过程详解)
    目录主从复制的原理部署master1. 主机创建 SSL/RSA 文件2. 赋予权限并重启。3. 登录mysql查看ssl是否开启,并创建一个复制用户。4. master开启二进制日志,重启后查看二进制日志文件。5. 防...
    99+
    2023-04-06
    mysql 基于ssl主从复制 mysql 主从复制
  • MySql之基于ssl安全连接的主从复制
    MySql基于ssl安全连接的主从复制一、设备环境centos7.2   两台MySQL 5.7MySQL 5.7 主要特性:原生支持Systemd更好的性能:对于多...
    99+
    2024-04-02
  • MySQL基于SSL安全连接的主从复制怎么实现
    本文小编为大家详细介绍“MySQL基于SSL安全连接的主从复制怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL基于SSL安全连接的主从复制怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。生...
    99+
    2023-07-05
  • 基于 SSL 实现MySQL主从复制
    1、主服务器配置1)、在主服务器创建SSL/RSA文件 #在MySQL5.7之后,安装完毕MySQL会在data目录下自动生成,这里模拟没有这些文件 [[email protected] ~]# mysql_ssl_rsa_setup...
    99+
    2016-06-28
    基于 SSL 实现MySQL主从复制 数据库入门 数据库基础教程 数据库 mysql
  • MySQL基于SSL协议的主从复制
       数据对于大部分公司来说都是最重要的部分,而MySQL的服务器在同步数据时,默认是使用明文进行传输,所以接下来就来说说MySQL基于SSL协议进行密文传输数据的主从复制模式。逻辑拓...
    99+
    2024-04-02
  • MySQL:安装和基于SSL加密的主从复制(基于5.7)
       小生博客:http://xsboke.blog.51cto.com             ...
    99+
    2024-04-02
  • 关系型数据库之MySQL基于SSL主从复制及SSL远程访问
      当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密。准备环境:1.系统环境:Centos6.52.数据库...
    99+
    2024-04-02
  • 通过 mysqldump 搭建基于 gtid MySQL 5.7 主从复制
    安装主从 MySQL 5.7 # 主 MySQL5.7 useradd mysql /sbin/nologin cd /usr/local tar -xvf mysql-5.7.23-linux-glibc...
    99+
    2024-04-02
  • 如何搭建基于Docker的MySQL主从复制
    下文主要给大家带来如何搭建基于Docker的MySQL主从复制,希望这些内容能够带给大家实际用处,这也是我编辑如何搭建基于Docker的MySQL主从复制这篇文章的主要目的。好了,废话不多说,大家直接看下文...
    99+
    2024-04-02
  • mysql基于日志的主从复制是什么
    这篇文章主要介绍了mysql基于日志的主从复制是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。       ...
    99+
    2024-04-02
  • MySQL主从复制的详细过程是怎么样的
    这篇文章将为大家详细讲解有关MySQL主从复制的详细过程是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 MySQL数...
    99+
    2024-04-02
  • mysql传统主从复制的部署过程
    这篇文章主要讲解了“mysql传统主从复制的部署过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql传统主从复制的部署过程”吧!部署过程 一、保证M...
    99+
    2024-04-02
  • 如何理解基于keepalived的MySQL主主复制
    这篇文章将为大家详细讲解有关如何理解基于keepalived的MySQL主主复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 ...
    99+
    2024-04-02
  • 全面解读MySQL主从复制,从原理到安装配置
    为什么需要主从复制? 在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从...
    99+
    2022-05-14
    MySQL 主从复制 MySQL 主从复制原理 MySQL 主从复制配置
  • mysql主从复制的安装流程操作
    本篇内容主要讲解“mysql主从复制的安装流程操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql主从复制的安装流程操作”吧!Mysql主从复制一、一主...
    99+
    2024-04-02
  • MySQL SSL 连接与数据安全性的关系解析
    MySQL SSL 连接与数据安全性的关系解析随着互联网的发展,数据安全性成为了一个越来越重要的问题。对于数据库中的敏感信息,如用户密码、个人隐私等,保护数据的安全性尤为重要。在传统的网络连接中,数据传输是明文的,容易受到黑客攻击。为了解决...
    99+
    2023-10-22
    ssl 数据安全性 关键词:MySQL
  • MySQL主从复制原理解析与最佳实践过程
    目录一、主从复制1、复制的基本原理2、复制的基本原则 二、最佳实践1、ping测试2、主服务器配置3、从服务器配置4、主服务器设置5、从服务器设置6、主从测试7、关闭slave总结一、主从复制 1、复制的基本原理 主要涉...
    99+
    2023-05-16
    MySQL主从复制原理解析 MySQL主从复制 MySQL主从复制实践
  • 基于Python制作炸金花游戏的过程详解
    目录前言一、思路二、解决方案三、总结前言 《诈金花》又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏。比如JJ比赛中的诈金花(赢三张),具有独特的比牌规则。游戏过程中需要考验玩家的...
    99+
    2024-04-02
  • 基于Matlab绘制超绚丽的烟花的过程详解
    目录1.使用效果2.随机点生成3.图像膨胀4.特效「风」模拟5.级坐标变换6.图像模糊及再映射7.图像上色8.完整代码1.使用效果 2.随机点生成 我们要构造一个黑色背景,对其添...
    99+
    2024-04-02
  • mysql主从复制读写分离的配置方法详解
    一、说明 前面我们说了mysql的安装配置,mysql语句使用以及备份恢复mysql数据;本次要介绍的是mysql的主从复制,读写分离;及高可用MHA; 环境如下: master:CentOS7_x64...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作