返回顶部
首页 > 资讯 > 数据库 >MySQL基于SSL安全连接的主从复制怎么实现
  • 948
分享到

MySQL基于SSL安全连接的主从复制怎么实现

2023-07-05 22:07:25 948人浏览 薄情痞子
摘要

本文小编为大家详细介绍“MySQL基于SSL安全连接的主从复制怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mysql基于SSL安全连接的主从复制怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。生

本文小编为大家详细介绍“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 restartShutting 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-binservice_id=1[root@master ~]# service mysqld restartShutting 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/tcpsuccess[root@master ~]# firewall-cmd --reloadsuccess

    6. 把ssl文件复制到slave

    [root@master data]# scp ca.pem client-cert.pem client-key.pem root@192.168.8.3:/usr/local/mysql/dataThe 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)? yesWarning: 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

    开启ssl、中继日志,赋予ssl文件读的权限并重启mysql。

    [root@slave ~]# vim /etc/my.cnf#添加下面内容server_id=2relay-log=relay-logssl_ca=ca.pemssl_cert=client-cert.pemssl_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 restartShutting down MySQL..                                      [  确定  ]Starting MySQL.                                            [  确定  ]

    确认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  |+-------------------------------------+-----------------+

    在配置主从复制之前可以在从 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.2mysql: [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 3Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners. 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:3Current database:Current user:rep@192.168.8.3SSL:Cipher in use is ECDHE-RSA-AES128-GCM-SHA256Current pager:stdoutUsing outfile:''Using delimiter:;Server version:5.7.40-log MySQL Community Server (GPL)Protocol version:10Connection:192.168.8.2 via TCP/IPServer characterset:latin1Db     characterset:latin1Client characterset:utf8Conn.  characterset:utf8TCP port:3306Uptime: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--------------

    登录slave服务器,配置主从 replicate

    记得先退出连接,登录slave的mysql服务。

    mysql> exitBye[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主从复制

    登录master,写入一些数据

    [root@master ~]# mysql -uroot -p123#省略部分内容mysql> create database bbs;Query OK, 1 row affected (0.01 sec) mysql> use bbs;Database changedmysql> 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)

    登录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安全连接的主从复制怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网数据库频道。

    您可能感兴趣的文档:

    --结束END--

    本文标题: MySQL基于SSL安全连接的主从复制怎么实现

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

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

    猜你喜欢
    • MySQL基于SSL安全连接的主从复制怎么实现
      本文小编为大家详细介绍“MySQL基于SSL安全连接的主从复制怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL基于SSL安全连接的主从复制怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。生...
      99+
      2023-07-05
    • MySql之基于ssl安全连接的主从复制
      MySql基于ssl安全连接的主从复制一、设备环境centos7.2   两台MySQL 5.7MySQL 5.7 主要特性:原生支持Systemd更好的性能:对于多...
      99+
      2024-04-02
    • MySQL基于SSL安全连接的主从复制(过程详解)
      目录主从复制的原理部署master1. 主机创建 SSL/RSA 文件2. 赋予权限并重启。3. 登录mysql查看ssl是否开启,并创建一个复制用户。4. master开启二进制日志,重启后查看二进制日志文件。5. 防...
      99+
      2023-04-06
      mysql 基于ssl主从复制 mysql 主从复制
    • 基于 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
    • 实现SSL加密的主从复制
      实验环境centos7.6最小化安装关闭防火墙、selinux一、建立CA并生成证书1、生成CA的私钥mkdir /etc/my.cnf.d/sslcd /etc/my.cnf.d/sslopenssl g...
      99+
      2024-04-02
    • mysql如何通过SSL实现主从复制
      下文主要给大家带来mysql如何通过SSL实现主从复制,希望这些内容能够带给大家实际用处,这也是我编辑mysql如何通过SSL实现主从复制这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。实验环境:n...
      99+
      2024-04-02
    • mysql基于日志的主从复制是什么
      这篇文章主要介绍了mysql基于日志的主从复制是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。       ...
      99+
      2024-04-02
    • 关系型数据库之MySQL基于SSL主从复制及SSL远程访问
        当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密。准备环境:1.系统环境:Centos6.52.数据库...
      99+
      2024-04-02
    • MySQL基于GTID主从搭建怎么实现
      本篇内容介绍了“MySQL基于GTID主从搭建怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2024-04-02
    • 如何搭建基于Docker的MySQL主从复制
      下文主要给大家带来如何搭建基于Docker的MySQL主从复制,希望这些内容能够带给大家实际用处,这也是我编辑如何搭建基于Docker的MySQL主从复制这篇文章的主要目的。好了,废话不多说,大家直接看下文...
      99+
      2024-04-02
    • mysql 中怎么实现互为主从复制
      本篇文章给大家分享的是有关mysql 中怎么实现互为主从复制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 报错: 1) change ...
      99+
      2024-04-02
    • mysql实现主从复制的步骤
      本文主要给大家介绍mysql实现主从复制的步骤,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql实现主从复制的步骤吧。mysql主从原理:1)...
      99+
      2024-04-02
    • MySQL主从复制的实现方法
      这篇文章给大家分享的是有关MySQL主从复制的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。          &nbs...
      99+
      2024-04-02
    • mysql主从复制的实现步骤
      目录mysql主从复制mysql主从复制的方式mysql主从复制的原理mysql的主从配置的具体实现方式1、 Master配置 2、 Slave配置 mysql主从复制 本来是在...
      99+
      2024-04-02
    • 怎么实现Redis主从复制
      本篇内容介绍了“怎么实现Redis主从复制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!架构主 192.1...
      99+
      2024-04-02
    • MySQL中怎么实现主从复制和半同步复制
      这篇文章将为大家详细讲解有关MySQL中怎么实现主从复制和半同步复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、复制的介绍MySQL支持单向、异步复制...
      99+
      2024-04-02
    • MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?
      MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?这些问题可能是我们日常工作会见到的。通过这些问题,希望你能收获更多。下面是揭开这些问题的详细内容。MySQL主从复制案例概述在企业网站中,后端...
      99+
      2024-04-02
    • 关于Mysql搭建主从复制功能的步骤实现
      目录1.描述2.开始远程连接3.开启bin-log日志4.重启两台mysql5.授权Ⅰ授权Ⅱ6.配置从服务器7.启动从库的复制功能8.检查从库复制功能状态1.描述 在实际的生产中,为了解决Mysql的单点故障已经提高My...
      99+
      2023-05-23
      Mysql 主从复制 搭建主从复制
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作