基于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)
上一篇 2016-11-22 13:14
下一篇 2016-11-22 16:33

相关推荐

  • centos6.9实现网卡bonding

    centos6.9实现网卡bonding 为什么要用bonding  将多块网卡配置同一IP地址实际中是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址,这样可以实现多块网卡绑定同一IP地址,对外提供服务。用于网络负载均衡和网络冗余。 工作模式  bonding的模式:0-6,即:7种模式,这里我们…

    2017-08-20
  • NET25-第7周作业

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@node1 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI o…

    Linux干货 2017-03-15
  • 第8天磁盘管理练习—增加SWAP分区

          SWAP交换空间,指在物理内存不够用时,充当虚拟内存使用。在实际操作中,使用1-2G的一个分区并指定分区类型为SWAP,挂载至SWAP来使用。 一、新增分区 fdisk /dev/sda n     #新增加分区 t   &nb…

    Linux干货 2016-07-04
  • 第七周

    第七周 1 创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动…

    Linux干货 2017-02-20
  • N25第7周作业

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; ]# fdisk /dev/sdb #划出一个…

    Linux干货 2017-02-21
  • N25第三周作业

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@centos01 ~]# who | cut -d " " -f1 | uniq -u root qufudcj 二、取出最后…

    Linux干货 2016-12-26