mysql基于SSL实现主从复制

mysql数据库基于SSL实现主从复制

实验环境:

node1:192.168.4.61

node2:192.168.4.62

CA:192.168.4.63

node1和node2时间同步

[[email protected]~]#ntpdate 172.18.0.1

[[email protected]~]#ntpdate 172.18.0.1

[[email protected]~]#vim /etc/chrony.conf #node1和node2操作一样

[[email protected]~]#systemctl start chronyd.service #启动服务

node1和node2基于key连接

[[email protected]~]#ssh-keygen

[[email protected]~]#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.4.62#将公钥复制到node2上

node2操作和node1操作相同。

修改hosts文件

node1和node2配置相同

[[email protected]~]#vim /etc/hosts

  3 192.168.4.61 node1
 4 192.168.4.62 node2

确保关闭iptables和selinux

node1和node2安装mariadb数据库

[[email protected]~]#yum install -y mariadb-server

[[email protected]~]#yum install -y mariadb-server

配置node1为主服务器

[[email protected]~]#vim /etc/my.cnf.d/server.cnf

[[email protected]~]#systemctl start mariadb #启动mariadb服务

MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO ‘joah‘@‘192.168.4.62‘ IDENTIFIED BY ‘123456‘;  #对用户授权
查看是否开启二进制日志
MariaDB [(none)]> SHOW VARIABLES LIKE ‘%log%bin%‘;

在node1上二进制日志状态信息
MariaDB [(none)]> SHOW MASTER STATUS;

配置node2从服务器

[[email protected]~]#vim /etc/my.cnf.d/server.cnf

[[email protected]~]#systemctl start mariadb #启动mariadb服务

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘192.168.4.61‘,MASTER_USER=‘joah‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘master-log.000003‘,MASTER_LOG_POS=417;   #设置连接主服务器
启动从服务器
MariaDB [(none)]> START SLAVE;
启动IO线程和SQL线程
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;
查看从服务器状态
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;

如果出现图中红框中的信息说明已经启动成功。
测试是否已经实现主从复制

实现SSL功能

搭建CA服务器

[[email protected]/etc/pki/CA]#touch index.txt

[[email protected]/etc/pki/CA]#echo 01 > serial

生成key文件

[[email protected]/etc/pki/CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048)

生成自签证书

[[email protected]/etc/pki/CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

node1生成证书

[[email protected]~]#mkdir /etc/mysql/ssl -pv

[[email protected]~]#chown mysql.mysql /etc/mysql/ssl/ -R

[[email protected]/etc/mysql/ssl]#(umask 077;openssl genrsa -out master.key 2048)[[email protected]/etc/mysql/ssl]#openssl req -new -key master.key -out master.csr

[[email protected]/etc/mysql/ssl]#scp master.csr 192.168.4.63:/etc/pki/CA/newcerts/

[[email protected]/etc/pki/CA/newcerts]#openssl ca -in master.csr -out master.crt -days 365

[[email protected]/etc/pki/CA/newcerts]#scp master.crt ../cacert.pem 192.168.4.61:/etc/mysql/ssl

[[email protected]~]#vim /etc/my.cnf.d/server.cnf

[[email protected]~]#systemctl restart mariadb

查看是否开启SSL功能

node2生成证书

[[email protected]~]#mkdir /etc/mysql/ssl -pv

[[email protected]~]#chown mysql.mysql /etc/mysql/ssl/ -R

[[email protected]/etc/mysql/ssl]#(umask 077;openssl genrsa -out slave.key 2048)

[[email protected]/etc/mysql/ssl]#openssl req -new -key slave.key -out slave.csr

[[email protected]/etc/mysql/ssl]#scp slave.csr 192.168.4.63:/etc/pki/CA/newcerts

[[email protected]/etc/pki/CA/newcerts]#openssl ca -in slave.csr -out slave.crt -days 365

[[email protected]/etc/pki/CA/newcerts]#scp slave.crt ../cacert.pem 192.168.4.62:/etc/mysql/ssl

[[email protected]/etc/mysql/ssl]#vim /etc/my.cnf.d/server.cnf

重启服务

[[email protected]/etc/mysql/ssl]#systemctl restart mariadb

基于SSL连接

node1授权

MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO ‘joah‘@‘192.168.4.62‘ IDENTIFIED BY ‘123456‘ REQUIRE SSL;

测试

[[email protected]~]#mysql -ujoah -p123456 -h192.168.4.61 --ssl

node2连接主服务器以ssl复制

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘192.168.4.61‘,MASTER_USER=‘joah‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘master-log.000008‘,MASTER_LOG_POS=429,MASTER_SSL=1,MASTER_SSL_CA=‘/etc/mysql/ssl/cacert.pem‘,MASTER_SSL_CERT=‘/etc/mysql/ssl/slave.crt‘,MASTER_SSL_KEY=‘/etc/mysql/ssl/slave.key‘;

MariaDB [(none)]> START SLAVE;  #启动从服务器

MariaDB [(none)]> SHOW SLAVE STATUS\G;

小结

(1)如果你已经正确的添加了证书,但是启动以后还是没有启动SSL功能,有可能没有权限

[[email protected]~]#chown mysql.mysql -R /etc/mysql/ssl

(2)如果出现图片中的问题,停止slave即可

(3)每一个过程中都需要验证是否成功然后进行下面的操作。

时间: 2024-11-08 03:31:41

mysql基于SSL实现主从复制的相关文章

MySQL基于SSL的主从复制、半同步复制

(一)主从复制的架构图 1.在主数据库上,每执行一个有可能引起数据库发生改变的的语句,都会记录到二进制日志文件中,并把它们保存为事件. 2.每保存一个事件,我们就通过mysql的服务器3306端口发送给另外一台服务器 3.另外一台服务器把这个事件接收下来,接收的时候先保存到本地的中继日志里面 4.然后,mysql从中继日志文件里读一个事件,然后保存到数据文件 (二)一主多从 半同步架构图 1.Master和Slave-1在同一个机房 2.Slave-2和Slave-3在其它机房 3.半同步指的是

mysql 基于 ssl 的主从复制

1.创建证书中心 创建证书颁发机构,首先要生成ca自己的私钥,如下: cd /etc/pki/CA (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 生成自签证书,由于需要输入大量用户信息(在私有的CA上创建证书要注意所有的用户信息需要一致,从国家到部门都要相同,否则会造成证书无法使用) 生成自签名证书 openssl req -new -x509 -key /etc/pki/CA/private/cakey.p

mysql基于ssl的主从复制

当mysql/mariadb跨越互联网进行复制时别人可以窃取到mysql/mariadb的复制信息, 这些信息是明文的, 因此存在不安全性, 这里通过ssl对复制的信息进行加密  1. 创建证书中心 在主服务器上创建证书中心 cd /etc/pki/CA 生成私钥 (umask 077;openssl genrsa -out private/cakey.pem 2048) 生成自签名证书 openssl req -new -x509 -key /etc/pki/CA/private/cakey.

MySQL/MariaDB数据库基于SSL实现主从复制

前言 备份数据库是生产环境中的首要任务,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输. 部署配置 实验拓扑 实验环境 系统环境:CentOS6.6 数据库版本:mariadb-5.5.36 #注意:主从服务器数据库版本须一致:主从服务器时间须同步 #此实验从服务器只做一组为例 配置主从复制 安装mariadb [[e

MySQL基于SSL协议的主从复制

数据对于大部分公司来说都是最重要的部分,而MySQL的服务器在同步数据时,默认是使用明文进行传输,所以接下来就来说说MySQL基于SSL协议进行密文传输数据的主从复制模式. 逻辑拓扑: 接下来的实验中Master节点服务器即使Master节点数据库服务器,同时也是CA. 环境准备: 一.主从服务器时间需要同步: [[email protected] ~]# chronyc sources 210 Number of sources = 1 MS Name/IP address         S

MYSQL5.7基于SSL的主从复制

本文档使用的是mysql版本为5.7.22,linux内核为3.10.0-862.el7.x86_64.一.首先主从复制的原理:1.master服务器的binary log(二进制)将用户输入的增删改的SQL语句通过二进制日志记录下来,并通知存储引擎提交事务.2.slave将master的binary log复制到自己的中继日志.首先,slave开启一个工作线程(I/O线程),I/O线程在master打开一个连接,然后开始Binlog dump process.Binlog dump proce

Mysql 基于GTID的主从复制及切换

参考 http://imysql.com/tag/gtid http://mysqllover.com/?p=594 Mysql 基于GTID的主从复制及切换 一.主从复制配置 两个mysql服务的my.cnf 中相关内容配置 [mysqld] #从复制数据库表设置 replicate-wild-ignore-table = mysql.%,information_schema.%,innodb.%,innodb_log.%,performance_schema.%,test.%,tmp.% #

linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本2.实现步骤一(mycat实现读写分离) 1.首先在两台服务器安装mysql 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp

mysql基于ssl 主从复制

#注意:主从服务器数据库版本须一致:主从服务器时间须同步 环境: centos6.6_x86_64 mysql5.1 master_ip:192.168.122.20 slave_ip:192.168.122.207 主服务器配置 [[email protected] mysql]# mkdir /mydata/binlogs [[email protected] mysql]# chown -R mysql.mysql /mydata [[email protected] mysql]# vi