基于ssl功能实现mysql主从复制


基于ssl功能实现mysql主从复制


        证书准备:
                
                CA证书:
                    第一步:创建CA私钥
                        [root@localhost CA]# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
                    第二步:生成自签证书
                        [root@localhost CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem  -days 7300 -out /etc/pki/CA/cacert.pem

                ————————————————————————————–

                mysql准备私钥及证书申请文件
                    第一步:创建mysql私钥:
                        [root@localhost ~]# (umask 066;openssl genrsa -out /var/lib/mysql/ssl/mysql.key 2048)
                    第二步:生成证书申请文件及发送给CA服务端
                        [root@localhost ~]# openssl req -new -key /var/lib/mysql/ssl/mysql.key -days 365 -out /var/lib/mysql/ssl/mysql.csr
                        注意:国家,省 ,公司名称必须和CA一致
                        将证书申请文件发送至CA服务器
                

                ————————————————————————————–

                在CA服务器端颁发证书:
                    [root@localhost CA]# openssl ca -in /tmp/mysql.csr -out /tmp/mysql.crt -days 365

                    附上查看证书中的信息命令:
                        openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates
     

                ————————————————————————————–

                    将证书发送至mysql服务器

                    以及将CA的自签证书发送至从服务器

                    证书准备动作到此结束


                    基于ssl功能实现主从复制,是主从双方都需要互相验证,即从服务器也要有自己的证书。
                    所以,按照上述流程,生成slave服务器的证书


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

        


        配置mysql服务端:
                
                在主服务器端查看关于ssl有关的参数  及  主从复制–主服务器  的配置项:

                    MariaDB [(none)]> show variables like ‘%ssl%’;
                      基于ssl功能实现mysql主从复制
 
  
                由于ssl功能配置项为全局配置参数,所以编辑 /etc/my.cnf 文件
                        由于是客户端验证服务端,所以只需要配置  ssl_cert(mysql服务器端的证书位置)、ssl_key(mysql私钥位置)与ssl_ca(CA证书位置)即可
                    基于ssl功能实现mysql主从复制
 
 
 
                    开启服务,并检查:
                        基于ssl功能实现mysql主从复制
 
                                           

                ————————————————————————————–


                创建一个基于ssl功能,从服务器用于复制mysql主服务器数据库的最小权限账号:
                    
                    MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘slave1’@’10.1.35.25’ IDENTIFIED BY ‘passwd’ REQUIRE ssl;    基于ssl功能实现mysql主从复制
 


                查看binlog位置,并记录,用于从服务器配置:
MariaDB [(none)]> SHOW MASTER LOGS;
基于ssl功能实现mysql主从复制

 

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


                    从服务器配置:

                    编辑 /etc/my.cnf ,由于是从服务器,所以需要开启中继日志(relay_log),且server_id不应与同一层面的mysql服务器相同                 

                           基于ssl功能实现mysql主从复制
 

 
                       
                ————————————————————————————–

                            配置从服务器,指向主服务器(这是是全局配置参数,但是不建议写在配置文件/etc/my.cnf 中,因为如果slave因意外宕机,在为了检查数据完整性的情况下,再启动mysql的时候,也会自动启动复制功能,不利于排查错误)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=’10.1.35.1′,MASTER_USER=’slave1′,MASTER_PASSWORD=’passwd’,MASTER_LOG_FILE=’master-log.000025‘,MASTER_LOG_POS=245,MASTER_SSL=1,MASTER_SSL_CA=’/var/lib/mysql/ssl/cacert.pem’,MASTER_SSL_CERT=’/var/lib/mysql/ssl/slave.crt’,MASTER_SSL_KEY=’/var/lib/mysql/ssl/slave.key’;
基于ssl功能实现mysql主从复制
有关MASTER_SSL的配置不可以写在/etc/my.cnf 中,会报错



MariaDB [(none)]> START SLAVE;

基于ssl功能实现mysql主从复制

 
 


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

                验证主从效果:
            
                ————————————————————————————–

                    主服务器创建数据库 mydb

                        基于ssl功能实现mysql主从复制

    


                ————————————————————————————–

                    从服务器查看:
                     
                        基于ssl功能实现mysql主从复制

 



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



    总结:

复制时应该注意的问题:
1、从服务设定为“只读”;(双主模式无需设置)
在从服务器启动read_only,但仅对非SUPER权限的用户有效;
阻止所有用户:
mysql> FLUSH TABLES WITH READ LOCK;


2、尽量确保复制时的事务安全
在master节点启用参数:
sync_binlog = ON    #每次事务提交的时候,都立即将二进制日志时间都重内存同步到磁盘中,能确保从服务器能立即得到事件,而且能保护本地数据安全
如果用到的是InnoDB存储引擎:
innodb_flush_logs_at_trx_commit=ON      #在事务提交时,立即刷写事务日志从内存到磁盘上
innodb_support_xa=ON    #支持分布式事务
#这两项启动起来,能在一定程度上确保从服务器能够立即得到主服务器的最新事件


3、从服务器意外中止时尽量避免自动启动复制线程
由于数据是重要的,服务器能意外终止的时间都是奇异的,所以,终止后不要让从服务器自动启动复制线程,等人工手动排查后才从新开启复制线程;有可能复制线程复制到一半的时候出现意外,复制线程或许没有这种功能—–不知道时候需要再次复制上次中断的事件               
4、从节点:设置参数
每一个从服务器都会保存一个文件 relay-log-info,是记录在主服务器上复制二进制日志的位置,以及本地中继日志的位置,为避免产生繁忙的IO操作,这些参数都是先保存在内存上的,到一定程度才会同步到磁盘上的,所以不安全
sync_master_info=ON
sync_relay_log_info=ON
                        以上两项为立即刷写数据从内存到磁盘











原创文章,作者:hunter,如若转载,请注明出处:http://www.178linux.com/60390

(0)
hunterhunter
上一篇 2016-11-22 13:14
下一篇 2016-11-22 16:33

相关推荐

  • 虚拟化介绍、以及kvm

    什么是虚拟化? 在计算机领域中虚拟化,和我们平时说的虚拟化并没有什么两样,说白了就是一个虚拟出来的东西罢了,并不是真实存在的。 虚拟化的历史 虚拟化早在20实际60年代末,由IBM开发被命名为vmm(Virtual Machine Monitor)虚拟机监视器的软件,我们知道那时候工艺技术并不发达,电脑也不像现在这样属于每家每户的标配,IBM为了解决电脑使用…

    2017-03-08
  • Centos7下安装httpd源码包

    今天小编来跟大家做个练习,就是如何在Centos7下安装httpd源码包. 一:下载httpd最新版本的源码包 [root@localhost ~]# rpm -qa |grep httpd //查询系统上是否已安装httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • Linux Kernel

    Linux Kernel 概述:文章将主要介绍Linux 内核的相关信息,包括内核各组成部分的详细介绍,其中有内核信息的获取命令,uname;内核模块管理类命令:lsmod,modinfo,modprobe,insomd,rmmod;ramdisk生成的相关命令,mkinitrd和dracut命令;以及linux中的两个为文件系统 /proc和/sys。最后…

    Linux干货 2016-09-19
  • WEB 常见故障与处理

    一、应用故障 HTTP 502 故障 502 Bad Gateway 故障检测: 首先定位到前端故障服务器节点,在前端服务器(Telnet)上访问后端服务端口响应时间。如发现响应时间超时>10s。说明后端应用程序出现故障。需要到后端服务器查看,并查明情况。 PS:HTTP 502 Bad Gateway 故障一般分为以下2种情况: 网络问题:前端无法连…

    2016-06-03
  • 硬链接与软链接

    1、关于硬链接和软链接是什么   硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。 (1…

    Linux干货 2016-10-20
  • Linux基础学习总结(一)

    一、计算机的组成与功能 二、Linux的版本 三、Linux的哲学思想 四、Linux基础命令(一) 五、Linux帮助信息 六、Linux目录结构

    Linux干货 2016-09-20