一、加密传输复制的实现

在默认的主从复制过程或远程连接到MySQL/MariaDB所有的链接通信中的数据都是明文的,外网里访问数据或则复制,存在安全隐患。通过SSL/TLS加密的方式进行复制的方法,来进一步提高数据的安全性

主服务器开启SSL:[mysqld] 加一行ssl
主服务器配置证书和私钥;并且创建一个要求必须使用SSL连接的复制账号
从服务器使用CHANGER MASTER TO 命令时指明ssl相关选项

特别提示:在配置之前先检查mysql服务是否支持ssl功能,如果have_ssl的值为'DISABLED'则支持;如果为'NO'则不支持,需要再重新编译安装或者安装具有ssl功能的版本

MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_key       |          |
+---------------+----------+

1、CA

[root@centos7 ~]#mkdir /etc/my.cnf.d/ssl/
[root@centos7 ~]#cd /etc/my.cnf.d/ssl/
[root@centos7 ssl]#openssl genrsa 2048 > cakey.pem   #生成私钥
[root@centos7 ssl]#openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650  #自签名证书
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:30
Common Name (eg, your name or your server's hostname) []:ca.magedu.com
Email Address []:[root@centos7 ssl]#openssl req -newkey rsa:2048 -days 365 -nodes -keyout master.key > master.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:31
Common Name (eg, your name or your server's hostname) []:master.magedu.com
Email Address []:
[root@centos7 ssl]#openssl x509 -req -in master.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > master.crt  #签署master证书[root@centos7 ssl]#openssl req -newkey rsa:2048 -days 365 -nodes -keyout slave.key > slave.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:31
Common Name (eg, your name or your server's hostname) []:slave.magedu.com
Email Address []:
[root@centos7 ssl]#openssl x509 -req -in slave.csr -CA cacert.pem -CAkey cakey.pem -set_serial 02 > slave.crt     #签署slave证书

[root@centos7 ssl]#openssl verify -CAfile cacert.pem master.crt slave.crt     #检查证书是否可用
master.crt: OK
slave.crt: OK

先在各个节点上创建/etc/my.cnf.d/ssl/文件夹,将各自的证书,CA的证书和各自的秘钥文件复制过去[root@centos7 ssl]#scp -r cacert.pem master.crt master.key 192.168.95.5:/etc/my.cnf.d/ssl/[root@centos7 ssl]#scp -r cacert.pem slave.crt slave.key 192.168.95.3:/etc/my.cnf.d/ssl/

2、master

[mysqld]

log_bin
  server_id=1
  datadir=/var/lib/mysql

ssl         # 开启ssl功能
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem        #指定CA证书命令
ssl-cert=/etc/my.cnf.d/ssl/master.crt      #指定自己的证书路径
ssl-key=/etc/my.cnf.d/ssl/master.key       #指定自己的秘钥文件路径[root@localhost ~]# systemctl restart mariadb

MariaDB [(none)]> show variables like '%ssl%';   #查看加密是否成功;
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| have_openssl | YES |   #成功
| have_ssl | YES |
| ssl_ca | /etc/my.cnf.d/ssl/cacert.pem |
| ssl_capath | |
| ssl_cert | /etc/my.cnf.d/ssl/master.crt |
| ssl_cipher | |
| ssl_key | /etc/my.cnf.d/ssl/master.key |
+---------------+------------------------------+

MariaDB [(none)]> grant replication slave on *.* to laobai@'192.168.95.%' identified by '123456' REQUIRE SSL;    #授权并强制用户使用 SSL登录

MariaDB [(none)]> show master logs;
  +--------------------+-----------+
  | Log_name | File_size |
  +--------------------+-----------+
  | mariadb-bin.000001 | 264 |
  | mariadb-bin.000002 | 343 |
  | mariadb-bin.000003 | 569 |
  | mariadb-bin.000004 | 264 |
  | mariadb-bin.000005 | 410 |
  +--------------------+-----------+

 

3、slave

[mysqld]
log_bin
server_id=2
ssl
[root@slave1 ~]# systemctl restart mariadb
CHANGE MASTER TOMASTER_HOST='192.168.95.5',MASTER_USER='laobai',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000006',MASTER_LOG_POS=245,MASTER_CONNECT_RETRY=10,MASTER_SSL=1,MASTER_SSL_CA = '/etc/my.cnf.d/ssl/cacert.pem',MASTER_SSL_CERT = '/etc/my.cnf.d/ssl/slave.crt',MASTER_SSL_KEY = '/etc/my.cnf.d/ssl/slave.key';mysql> start slave;

二、MySQL复制的相关指令和变量总结

选项:

  • log_bin 启用二进制日志,在主节点或级联复制中间的从节点必须要开启
  • binlog_format=ROW 二进制日志记录方式为基于行的方式记录,强烈建议开启
  • log-basename=master | slave ... 二进制日志的前缀名,不是必须向,但建议标识
  • server_id = # 服务器ID,各个节点的ID必须唯一
  • relay_log = relay-log 开启中继日志,并以relay-log为文件名开头,从节点开启
  • relay_log_index = relay-log.index 中继日志索引文件
  • log_slave_updates 作用是SQL线程重读中继日志时将改变数据的操作记录为二进制日志,在级联复制中使用
  • ssl 开启ssl功能
  • ssl-ca=/etc/my.cnf.d/ssl/cacert.pem
  • ssl-cert=/etc/my.cnf.d/ssl/master.crt
  • ssl-key=/etc/my.cnf.d/ssl/master.key
  • sync_binlog=1 每次写后立即同步二进制日志到磁盘
  • innodb_flush_log_at_trx_commit=1 每次事务提交立即同步日志写磁盘
  • sync_master_info=# #次事件后master.info同步到磁盘
  • skip_slave_start=ON 不自动启动slave
  • sync_relay_log=# #次写后同步relay log到磁盘
  • sync_relay_log_info=# #次事务后同步relay-log.info到磁盘
  • auto_increment_offset=1 自动增长开始点,在主主复制中使用
  • auto_increment_increment=2 增长幅度

变量:

  • replicate_do_db= 指定复制库的白名单
  • replicate_ignore_db= 指定复制库黑名单
  • replicate_do_table= 指定复制表的白名单
  • replicate_ignore_table= 指定复制表的黑名单
  • replicate_wild_do_table= foo%.bar% 支持通配符
  • replicate_wild_ignore_table= 指定复制的表,黑名单

  • rpl_semi_sync_slave_enabled=1 开启半同步复制,需要安装模块

指令:

  • START SLAVE; 启动主从复制
  • STOP SLAVE; 停止复制
  • SHOW SLAVE STATUS; 查看复制状态
  • Seconds_Behind_Master: 0 从服务器是否落后于主服务
  • RESET SLAVE ALL; 重置从服务器的配置
  • MASTER_SSL=1, 配合 CHANGE MASTER TO 使用,开启ssl加密复制
  • MASTER_SSL_CA = '/etc/my.cnf.d/ssl/cacert.pem',
  • MASTER_SSL_CERT = '/etc/my.cnf.d/ssl/slave.crt',
  • MASTER_SSL_KEY = '/etc/my.cnf.d/ssl/slave.key';
  • PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr } 删除二进制日志,谨慎操作
  • SHOW MASTER STATUS 查看二进制日志状态
  • SHOW BINLOG EVENTS 查看二进制日志
  • SHOW BINARY LOGS 查看二进制日志
  • SHOW PROCESSLIST 查看进程

Mysql高可用的实现

一、先搭建主从服务器

1、搭建主服务器,修改配置文件 并创建授权用户

[mysqld]
log_bin
server_id=1
binlog_format=row     #将数据库格式改为行
skip_name_resolve     #做名词解析,非常重要,必须写进来
MariaDB [(none)]> grant replication slave on *.* to laobai@'192.168.95.%' identified by '123456';

2、搭建从服务器

转载于:https://www.cnblogs.com/huxiaojun/p/9219384.html

Linux九阴真经之九阴白骨爪残卷16相关推荐

  1. Linux九阴真经之九阴白骨爪残卷2(SSH)

    SSH ssh:安全的远程登录 两种方式的用户登录认证 基于passwork 基于key 客户端 常见的客户端工具有:Windows版的putty.securecrt.xshell:linux中有ss ...

  2. Linux九阴真经之九阴白骨爪残卷13(LVM的备份还原,恢复最新状态)

    一.备份策略 1.备份的类型 类型1: 热备份:读写不受影响(MyISAM不支持热备,InnoDB支持热备) 温备份:仅可以执行读操作 冷备份:离线备份,读写操作均中止 类型2: 物理备份:复制数据文 ...

  3. Linux九阴真经之九阴白骨爪残卷14(备份和恢复)

    备份还原案例 前提:log_bin=ON 一.早上上班后误删数据库,如何恢复最新状态 1.假设早上已经完成备份 (开启二进制),然后在students表里新增了一条数据 [root@centos7 ~ ...

  4. Linux九阴真经之九阴白骨爪残卷1(加密和安全)

    CA和证书 1.KPI :公共秘钥体系 签证机构:CA 注册机构:RA 证书吊销列表:CRL 证书存取库 509:定义了证书的结构以及认证协议标准 版本号 序列号 签名算法               ...

  5. Linux九阴真经之九阴白骨爪残卷3(自动化运维之系统安装)

    安装程序 CentOS系统安装 系统启动流程: bootloader-->kernel(initramfs)-->rootfs-->/sbin/init anaconda: 系统安装 ...

  6. Linux九阴真经之九阴白骨爪残卷4(自动化运维之ansible用法一)

    ansible是什么?   ansible是什么? 它是一个配置管理工具,也是一个自动化运维工具. ansible能做什么? ansible 可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工 ...

  7. Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)

    playbook是由一个或多个"play"组成的列表 play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色.从根本上来讲,所谓task无 ...

  8. Linux九阴真经之九阴白骨爪残卷3(DHCP、TFTP服务的安装与启动以及PXE安装Centos7)...

    DHCP实现 一.首先准备两台linux,一台做dhcp服务器,另一台做客户端(将服务器的桥接网卡禁用),并取消虚拟机的HPC服务 二.将服务器端的IP设置为静态IP,取消DHCP服务(不写默认为取消 ...

  9. Linux九阴真经之九阴白骨爪残卷4(cobbler)

    cobbler pex的二次封装,由Python开发,提供CLI和Web管理,cobbler在epel源中,安装时需要配置epel源. 工作原理: 1.client裸机配置了从网络启动后,开机后会广播 ...

最新文章

  1. 最精简写法→去掉任意多个空行
  2. 数据库优化案例——————某市中心医院HIS系统
  3. C++11如何减少内存拷贝次数
  4. 【node节点版本管理器NVM,详解安装教程,建议收藏】
  5. 浮点数可以直接相加么?_鸭粪屎可以直接做有机肥么?
  6. SpringHibernate4
  7. Hologres如何支持超高基数UV计算(基于roaringbitmap实现)
  8. linux生成的pdf文件,把LINUX MAN PAGE生成为PDF文件的脚本
  9. 开发管理 -启动项目(转)
  10. 二维码获取WIFI配置
  11. 6月8日苹果正式发布iOS 15,亮度多多
  12. Linux下MySQL 5.7在线镜像安装
  13. amc 美国数学竞赛能用计算机吗,关于AMC美国数学竞赛的QA
  14. 一本书一句话:真北敏捷的微信读书2021
  15. 扫盲:集线器、网桥、交换机、路由器、网关大解析
  16. 形容等待时间长的句子_形容等待已久的事终于等到句子
  17. 批量搜索多个excel文件
  18. oracle数据库工程师的工资,数据库开发工程师工资待怎么样
  19. 用html做个猜字游戏,HTML5 Canvas API制作简单的猜字游戏
  20. 企业数字化转型“核心方法论”

热门文章

  1. pytorch实现图像的腐蚀和膨胀
  2. RTX3050显卡Ubuntu装Nvidia卡驱动
  3. 10 款国外实用、有趣的 GitHub 简介 README
  4. OSPF 邻居状态机
  5. 计算机名师工作室活动个人总结,名师工作室个人年度工作计划范文(通用3篇)...
  6. 单片机的停车场计数系统c51_基于单片机的停车场计数系统设计(附实物图,电路原理图,程序)...
  7. 0109连续函数的运算和初等函数的连续性-函数与极限-高等数学
  8. CF400D Dima and Bacteria【并查集】
  9. 提升C++程序运行速度的一些方法
  10. 第一次穿睡衣直播。。。