MySql基于ssl安全连接的主从复制

一、设备环境

centos7.2   两台

MySQL 5.7

MySQL 5.7 主要特性:

原生支持Systemd
更好的性能:对于多核CPU、固态硬盘、锁有着更好的优化
更好的InnoDB存储引擎
更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。

新增sys库:以后这会是DBA访问最频繁的库
更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的难题原生JSON类型的支持(JavaScript Object Notation)

注:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括CC++C#JavaJavaScriptPerlPython等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)

JSON 语法是 JavaScript 对象表示语法的子集。

数据在键值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

二、实现基于ssl安全连接的主从复制

1)在主mysql创建SSL/RSA文件

wKiom1lLu86wl8JJAAAwjpzzSAc868.png

wKioL1lLu87B-YPMAAAicUYl0FU416.png

server-key.pem权限

wKiom1lLu86hB8veAAAh2waGWQs706.png

登录mysql,执行mysql>show variables like'%ssl%';

wKioL1lLu8_gh_VgAAA32ORjLHE013.png

在主mysql上的操作完成,再生成一个复制帐号:REQUIRE SSL

wKiom1lLu8_BcKdmAAAXETp3L54466.png

在主mysql上启用二进制日志并重启mysql服务

wKiom1lLu8_im_OnAAANUMPJI18888.png

wKioL1lLu8_D3yM4AAA25Mflo2s697.png

查看主mysql的状态

wKioL1lLu9Dj4d3zAAAT3iHw2Ic142.png

注:要记住上图所显示的fileposition的值,配置从服务器要用到

防火墙允许3306/tcp通信

wKiom1lLu9CC7LF9AABIlBFrO1I596.png

2)接着就去从上配置

mysql/etc/my.cnf文件内容

wKiom1lLu9Ch3GqaAABCKxOr_Pg496.png

把主mysql生成的证书给了从服务器

wKioL1lLu9HQxUXQAAAtnTpA--s079.png

查看从mysql复制过来的证书

wKioL1lLu9HRijNZAAAhNG-8E7c368.png

继续在从上配置SSL:修改/etc/my.cnf文件,添加如下内容

wKiom1lLu9HD6q2RAABJODthY6E733.png

重启mysqld服务

wKioL1lLu9GzhrSJAABGfBBSEXM597.png

查看SSL是否被支持:

wKiom1lLu9Kiz6GNAAAn8lLx9m8711.png

在配置主从复制之前可以在从mysql上用SSL连接主服务器试试:

wKioL1lLu9KyFQPCAAA-DomR6gk763.png

SSL测试连接成功,并且登入的SSL协议是: Cipher in use is DHE-RSA-AES256-SHA

最后开始配置主从replicate 登录从mysql

 

在从上change master to

wKiom1lLu9PQfQvWAABbKR7F0_M851.png

测试:

wKioL1lLu9Ojc64lAAAwH9fR_Zg049.png

从服务器上

wKiom1lLu9PQaOBDAAAhJY8NhN8596.png

wKioL1lLu9SBLJzMAAAbURAd9kQ031.png

以上同步成功。

总结:

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