实验环境RHEL6.4

admin1.tuchao.com    192.168.1.201    主服务器

admin2.tuchao.com    192.168.1.202    从服务器

先在两个机器上安装mysql5.5.3,mysql的安装流程我这里就省略了。

主服务器配置:

设置一个唯一的server_id,在配置文件中定义。

server_id = 10

启用二进制日志,默认是启用的。

创建具有复制权限的用户

grant replication slave,replication client on *.* to 'tuchao'@'192.168.1.%' identified by '123456';

注意这里在初始化MySQL完成后要滚动一下日志(flush logs;)并记录当前的 show master status 状态,在从服务器上指定同步的状态,避免了主键重叠的错误。

我们先看下主服务器上的数据

接下来去配置从服务器:

指定主服务器,指定同步的二进制日志及

change master to master_host='192.168.1.201',master_user='tuchao',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=107;

启动复制线程

start slave;

show slave status\G

Seconds_Behind_Master: 0    这个值表示从服务器比主服务器落后多长时间

复制线程正常工作了,我们看看数据有没有同步过来。

我们还要了解下,在从服务器数据目录的两个文件。

master.info

relay-log.info  而这个文件则记录了,当前服务器的中继日志和主服务器的二进制日志及pos位置。

设置MySQL的半同步机制,先来看看我为大家准备的图,了解下什么是MySQL的半同步。

Master:

安装semisync_master.so插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';

查看相关变量。

show global variables like '%semi%';

+------------------------------------+-------+

| Variable_name                      | Value |

+------------------------------------+-------+

| rpl_semi_sync_master_enabled       | OFF   |

| rpl_semi_sync_master_timeout       | 10000 |

| rpl_semi_sync_master_trace_level   | 32    |

| rpl_semi_sync_master_wait_no_slave | ON    |

+------------------------------------+-------+

默认是功能是关闭的,需要启动起来。

set global rpl_semi_sync_master_enabled = 1;

设置等待slave相应的时间

set global rpl_semi_sync_master_timeout = 2000;

再查看验证一下。

> show global variables like '%semi%';

+------------------------------------+-------+

| Variable_name                      | Value |

+------------------------------------+-------+

| rpl_semi_sync_master_enabled       | ON    |

| rpl_semi_sync_master_timeout       | 2000  |

| rpl_semi_sync_master_trace_level   | 32    |

| rpl_semi_sync_master_wait_no_slave | ON    |

+------------------------------------+-------+

Slave:

安装semisync_slave.so插件

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

启用功能

set global rpl_semi_sync_slave_enabled = 1;

验证

show global variables like 'rpl_semi%';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| rpl_semi_sync_slave_enabled     | ON    |

| rpl_semi_sync_slave_trace_level | 32    |

+---------------------------------+-------+

重启IO线程,或者重启Slave都可以。

stop slave

start slave

查看主服务器上的semi_sync是否开启,注意clients 变为1 ,证明主从半同步复制连接成功:

show global status like '%semi%';

可以写到my.cnf中永久生效。

Master

[mysqld]

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000 # 1 second

innodb_flush_logs_at_trx_commit=1  当有事务提交时,会立即记录日志,并同步到磁盘。

sync_binlog=1

Slave

[mysqld]

rpl_semi_sync_slave_enabled=1

read_only=1

skip_slave_start=1    跳过自启动Slave

基于SSL加密的同步复制

先在主服务器上自建CA,生成密钥,创建自签名证书。

(umask 077;openssl genrsa -out private/cakey.pem 2048)

openssl req -new -x509 -key private/cakey.pem  -out cacert.pem -days 365

touch index.txt

echo '01' >serial

生成密钥,创建服务证书申请,签署服务证书。

cd /usr/local/mysql

mkdir ssl

(umask 077;openssl genrsa -out ssl/master.key 2048)

openssl req -new -key ssl/master.key  -out ssl/master.csr -days 100

openssl ca -in ssl/master.csr -out ssl/master.crt -days 100

chown -R mysql.mysql ssl

修改my.cnf添加如下内容:

ssl

ssl-ca=/etc/pki/CA/cacert.pem

ssl-cert=/usr/local/mysql/ssl/master.crt

ssl-key=/usr/local/mysql/ssl/master.key

重启mysqld服务

来到从服务器,生成密钥申请证书。

mkdir ssl

(umask 077;openssl genrsa -out ssl/mysql.key 2048)

openssl req -new -key ssl/mysql.key  -out ssl/mysql.csr -days 100

把请求书,复制到CA上。

scp ssl/mysql.csr admin1:/etc/pki/CA

CA签署证书,并且把签好的证书和CA自己的证书复制到从服务器。

openssl ca -in mysql.csr -out mysql.crt -days 100

scp cacert.pem mysql.crt admin2:/usr/local/mysql/ssl/

修改权限

chown -R mysql.mysql ssl

在从服务器my.cnf文件加入一行ssl。

重启mysql服务

主服务器授权openssl用户

grant replication slave,replication client on *.* to openssl@'admin2.tuchao.com' identified by '123456';

flush privileges;

切到从服务器,指定master。

change master to master_host='admin1.tuchao.com',master_user='openssl',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=360,master_ssl=1,master_ssl_ca='/usr/local/mysql/ssl/cacert.pem',master_ssl_cert='/usr/local/mysql/ssl/mysql.crt',master_ssl_key='/usr/local/mysql/ssl/mysql.key';

启动复制线程

start slave;

查看slave状态

配置成功,还可以通过命令来检测SSL。

mysql --ssl-ca=/usr/local/mysql/ssl/cacert.pem   --ssl-cert=/usr/local/mysql/ssl/mysql.crt --ssl-key=/usr/local/mysql/ssl/mysql.key -uopenssl -hadmin1.tuchao.com -p123456

有问题欢迎与我交流QQ1183710107

本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1528498

mysql主从同步加密_教你构建MySQL主从结构,实现基于SSL加密的主从同步机制相关推荐

  1. mysql下载的压缩包_教你安装Mysql(解压版/非安装包)图文教程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 my-default 的文件内容: # For advice on how to change settings please see # http:// ...

  2. 教你构建MySQL主从结构,实现基于SSL加密的主从同步机制。

    实验环境RHEL6.4 admin1.tuchao.com    192.168.1.201    主服务器 admin2.tuchao.com    192.168.1.202    从服务器 先在 ...

  3. MySQL:安装和基于SSL加密的主从复制(基于5.7)

    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 目录: --------mysql-5.7.13简介及安装 --------配置my ...

  4. 2021win11最新最全MySQL下载安装教程——手把手教你安装MySQL

    2021win11最新最全MySQL下载安装教程--手把手教你安装MySQL 最近重装了win11,给我MySQL整没了,故今天重新装一下. 第一步,进入官网 https://www.mysql.co ...

  5. mysql 主从同步不一致_涨知识!MySQL 主从同步原理原来是这样的

    什么是 MySQL 主从同步 当 master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 主从同步有什么好处 水平扩展数据库的负载能力 容错,高可用.Failover/Hig ...

  6. mysql线上教程_线上环境mysql主从同步的搭建过程

    之前搭建过一套主从同步的mysql集群,但是是基于新数据库,而这次线上环境要升级成主从同步的集群,记录一下升级过程和中间遇到的各种问题. 由于是直接对线上数据库进行修改,因此要保证对线上环境造成尽量小 ...

  7. mysql 日志文件 自动_教你自动恢复MySQL数据库的日志文件

    如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据."mysqlbinlog:用 ...

  8. win10文件夹加密_(十六)小众但好用:免费开源免注册的同步盘加密工具 Cryptomator...

    之前写过同步盘加密工具 boxcryptor,今天给大家推荐另一款开源免费多平台的同步盘加密工具 Cryptomator. 节省时间,直接开始. Cryptomator 官方网站:点击这里 首先简单对 ...

  9. amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离

    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...

最新文章

  1. 笔记本显示器仅计算机,将笔记本电脑(仅一个HDMI接口)连接到双屏幕(谨慎使用)的解决方案...
  2. 运行vc++6.0出现Error spawning cl.exe问题解决方法
  3. 【数据结构与算法】之有关“跳跃游戏”的求解思路与示例算法
  4. 微软开源新字体Cascadia Code,源于Windows Terminal
  5. 利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...
  6. Android 获取app 地址,获取手机设备信息、app版本信息、ip地址
  7. DotNetBar 6.6.0.1 Crack
  8. 【Fiddler抓包】Fiddler基础用法-基于Fiddler5中文汉化版
  9. springboot毕设项目银行助学贷款管理系统0o571(java+VUE+Mybatis+Maven+Mysql)
  10. OpenLayers教程十五:多源数据加载之矢量地图
  11. Spring Cloud 集成 euraka-server 和 euraka-client
  12. 你见过马化腾18年前编写的代码吗?
  13. 01. Linux 简介
  14. 1ppi等于多少dpi_Android开发之显示篇(弄懂ppi、dpi、pt、px、dp、dip、sp之间的关系只需这一篇)...
  15. Excel怎么换行?简单!Excel大神教会了我N种换行方法
  16. 用python成为顶级黑客-python绝技:运用python成为顶级黑客 PDF 超清中文版
  17. 2020年复旦电子信息专硕考研初试经验贴
  18. win10网络图标变成地球加禁止符号但能上网解决办法
  19. 举个栗子!Tableau 技巧(107):如何自定义 Server 登录页背景
  20. html简单个人网页制作 HTML5+CSS大作业——程序员个人简历设计(5页)

热门文章

  1. python中文分词统计_python 中文字数统计/分词
  2. 使用Go语言实现高效的并发编程
  3. 数据库:delete 删除语句
  4. 《Metasploit渗透测试魔鬼训练营》学习笔记
  5. 基于javaweb的校园班级同学通讯录管理系统(java+ssm+html+jsp+mysql)
  6. flightgear 光标消失 卡死
  7. 采用遗传算法求解最大值c语言,遗传算法求解y=x2.doc
  8. Java实现聊天室(TCP)
  9. 2019计算机一级msoffice真题,【2019年整理】全国计算机一级MSOFFICE练习题带题解.pdf...
  10. 【SQL开发实战技巧】系列(十五):查找最值所在行数据信息及快速计算总和百之max/min() keep() over()、fisrt_value、last_value、ratio_to_report