mysql(mariadb)基于ssl主从复制

环境172.16.1.3为主节点,172.16.1.7为从节点;同时在172.16.1.3上搭建私有CA,此外两台设置好时间同步

系统版本:centos7.2

一、设置好主机的主机名,并可以完成通信

~】#hostnamectl set-hostname
master.zou.com

另一个设置为slave.zou.com

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

172.16.1.3  master.zou.com  master

172.16.1.7  slave.zou.com  slave

另一个从节点,也写入相同的解析

之后测试一下:

[[email protected] ~]# ping master

PING master.zou.com (172.16.1.3) 56(84) bytes of data.

64 bytes from master.zou.com (172.16.1.3): icmp_seq=1 ttl=64
time=0.902 ms

二、时间同步:

[[email protected]master ~]# yum install chrony -y

[[email protected]master ~]# vim /etc/chrony.conf

把其他的几个server开头的全部注释掉

server172.16.0.1 iburst

allow 172.16/16

[[email protected]master ~]# systemctl start chronyd.service

[[email protected]master ~]# systemctl enable chronyd.service

查看主节点是否可以与设置的服务器的时间可以完成同步,有那个※号就代表可以完成

[[email protected]master ~]# chronyc sources

210 Number of sources = 1

MS Name/IP address        
Stratum Poll Reach LastRx Last sample

================================================================

^* server.magelinux.com         11  
6    17     2   
+19us[ +669us] +/-   11ms

继续在从节点上做响应的操作

[[email protected]slave ~]# yum install chrony -y

[[email protected]slave ~]# vim /etc/chrony.conf

server master.zou.com iburst

[[email protected]slave ~]# systemctl start chronyd.service

[[email protected]slave ~]# systemctl enable chronyd.service

[[email protected]slave ~]# chronyc sources

210 Number of sources = 1

MS Name/IP address        
Stratum Poll Reach LastRx Last sample

================================================================

^* master.zou.com                  12   6    
7     0  +2396ns[+32419s] +/-   14ms

当这里的为*而不是?的时候即可同步时间成功

此后就在两台服务器上面,用date查看时间是否一样(时区不同时间不一样)

注:如果时区不一致,需要

TZ=‘Asia/Shanghai‘

vim /etc/sysconfig/clock

ZONE=Asia/Shanghai

rm /etc/localtime

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

三、设置CA根服务器,并为两台主机颁发证书

搭建CA服务器,为web服务器派发证书 此ip为172.16.1.3

生成私钥CA服务器自己的私钥,准备给自己做个根证书

[[email protected] ~]# cd /etc/pki/CA

[[email protected]master CA]# (umask
077;openssl genrsa 2048 > private/cakey.pem)

cakey.pem为CA服务的自己的私钥

##因为这里是建立私有CA,同一个机构,国家,省,组织
,所以为了后续给自己签证方便,这里需要修改

[[email protected]master CA]# vim
/etc/pki/tls/openssl.cnf

country Name_default = CN

StateOrprovinceName_default = Beijing

LocatityName_default = Shangdi

0.organizationName_default = Haizei

organizationUnitName_default = Jishu

生成自签证书(根CA)

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

根证书签署主节点

[[email protected] CA]# openssl ca -in master.csr -out master.crt

slave节点生成自己的证书并请求认证

[[email protected] CA]# (umask 077;openssl genrsa 4096 >
slave.key)

[[email protected] CA]# openssl req -new -key slave.key -out
slave.csr

把slave.csr复制到根证书颁发服务器,做认证

根证书签发从节点

[[email protected] CA]# openssl ca -in /tmp/slave.csr -out
certs/slave.crt

颁发完了之后,要把这个slave.crt发送给从节点,同时也要发送cacert.pem给从节点,因为主的就位CA根,所以就不用发送了

注:主从节点准备好各自的key和crt,同时还要有根证书的pem,保证这3个文件,为后续操作做准备

[[email protected] mnt]# mkdir /mydata/ssl

[[email protected] mnt]# cp cacert.pem master.crt master.key
/mydata/ssl

[[email protected] mnt]# chown -R mysql.mysql /mydata/ssl

[[email protected] ssl]# chmod 600 master.crt master.key cacert.pem

[[email protected] mnt]# mkdir /mydata/ssl

[[email protected] mnt]# cp cacert.pem slave.crt slave.key
/mydata/ssl

[[email protected] mnt]# chown -R mysql.mysql /mydata/ssl

[[email protected]lave ssl]# chmod 600 cacert.pem slave.*

四、基于ssl建立主从复制

两个节点的配置文件如下

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

[mysqld]

datadir=/mydata/data

log_bin=/mydata/logs/log_bin

server_id=1

innodb_file_per_table=ON

skip_name_resolve=ON

ssl

ssl_ca = /mydata/ssl/cacert.pem

ssl_cert = /mydata/ssl/master.crt

ssl_key = /mydata/ssl/master.key

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

datadir=/mydata/data

innodb_file_per_table=ON

skip_name_resolve=ON

relay_log=/mydata/logs/relay-log

server_id=2

ssl

ssl_ca = /mydata/ssl/cacert.pem

ssl_cert = /mydata/ssl/slave.crt

ssl_key = /mydata/ssl/slave.key

开启主节点mysql服务,在主上面创建复制用户

[[email protected] ~]# systemctl start mariadb.service

MariaDB [(none)]> grant replication slave,replication
client on *.* to [email protected]‘172.16.1.%‘ identified by ‘123.comer‘ require ssl;

MariaDB [(none)]> flush privileges;

查看主节点状态

开启从节点mysql服务,并在从服务器上开始设置复制

[[email protected] ssl]# systemctl start mariadb.service

查看从节点是否可以通过命令连接上

[[email protected] ssl]# mysql -uslaveuser -p123.comer -h172.16.1.3
--ssl-ca=cacert.pem --ssl-cert=slave.crt --ssl-key=slave.key

测试连接没有问题了之后,登录客户端进行后续操作

MariaDB [(none)]> show slave status\G

Empty set (0.00 sec)

MariaDB [(none)]> change master to
master_host=‘172.16.1.3‘,master_user=‘slaveuser‘,master_password=‘123.comer‘,master_log_file=‘log_bin.000003‘,master_log_pos=508,master_ssl=1,master_ssl_ca=‘/mydata/ssl/cacert.pem‘,master_ssl_cert=‘/mydata/ssl/slave.crt‘,master_ssl_key=‘/mydata/ssl/slave.key‘;

MariaDB [(none)]> start slave;

上面显示是通过ssl协议加密来拉取主节点上面的数据的,所以没有问题

五、测试

主节点上面创建数据库

MariaDB [(none)]> create database testzou;

MariaDB [(none)]> use testzou;

MariaDB [testzou]> create table testuser (id int unsigned
not null primary key auto_increment,user char(12) not null,gender
enum(‘f‘,‘m‘));

MariaDB [testzou]> insert into testuser (id,user,gender)
values (1,‘lufy‘,‘m‘);

从节点上面:



数据同步成功,主从复制没有问题

时间: 2024-07-30 10:26:31

mysql(mariadb)基于ssl主从复制的相关文章

mysql/mariadb基于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.p

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM 优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepal

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

MySql基于ssl安全连接的主从复制 一.设备环境 centos7.2   两台 MySQL 5.7 MySQL 5.7 主要特性: 原生支持Systemd更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化更好的InnoDB存储引擎更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库. 新增sys库:以后这会是DBA访问最频繁的库更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的

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

关系型数据库之MySQL基于SSL主从复制及SSL远程访问

当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密. 准备环境: 1.系统环境:Centos6.52.数据库版本:5.5.36-MariaDB-log MariaDB Server3.Host:Master主机: master.samlee.com 172.16.100.7Slave主机: slave.samlee.com 172.16.100.8Public主机: public.samlee.com 172

mysql(mariadb)数据库的主从复制

MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MySQL数据库支持单向.双向.链式级联,等不同业务场景的复制.在复制的过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(slave),接收来自Master上binlog文件的日志内容,解析出SQL,重新更新到Slave,使得主从服务器数据达到一致. 主从机制实现原理 (1) master将改变

MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍

一.复制概述 MariaDB/MySQL内建的复制功能是构建大型,高性能应用程序的基础.将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位

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 protect

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

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