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语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

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

l 数据在键值对中

l 数据由逗号分隔

l 花括号保存对象

l 方括号保存数组

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

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

mysql配置ssl加解密 mysql使用ssl连接_mysql配置ssl加解密

mysql配置ssl加解密 mysql使用ssl连接_mysql配置ssl加解密_02


给server-key.pem权限

mysql配置ssl加解密 mysql使用ssl连接_mysql_03

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

mysql配置ssl加解密 mysql使用ssl连接_SSL_04

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

mysql配置ssl加解密 mysql使用ssl连接_SSL_05

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

mysql配置ssl加解密 mysql使用ssl连接_JSON_06

mysql配置ssl加解密 mysql使用ssl连接_mysql_07

查看主mysql的状态

mysql配置ssl加解密 mysql使用ssl连接_JSON_08

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

防火墙允许3306/tcp通信

mysql配置ssl加解密 mysql使用ssl连接_mysql_09

2)接着就去从上配置

从mysql的/etc/my.cnf文件内容

mysql配置ssl加解密 mysql使用ssl连接_JSON_10

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

mysql配置ssl加解密 mysql使用ssl连接_SSL_11

查看从mysql复制过来的证书

mysql配置ssl加解密 mysql使用ssl连接_SSL_12

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

mysql配置ssl加解密 mysql使用ssl连接_mysql配置ssl加解密_13

重启mysqld服务

mysql配置ssl加解密 mysql使用ssl连接_SSL_14

查看SSL是否被支持:

mysql配置ssl加解密 mysql使用ssl连接_SSL_15

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

mysql配置ssl加解密 mysql使用ssl连接_mysql配置ssl加解密_16

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

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

 

在从上change master to

mysql配置ssl加解密 mysql使用ssl连接_JSON_17

测试:

mysql配置ssl加解密 mysql使用ssl连接_JSON_18

从服务器上

mysql配置ssl加解密 mysql使用ssl连接_JSON_19

mysql配置ssl加解密 mysql使用ssl连接_JSON_20

以上同步成功。

总结:

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


转载于:https://blog.51cto.com/duyuheng/1941089