设为首页 收藏本站
查看: 1690|回复: 0

[经验分享] mysql基于SSL实现主从复制

[复制链接]

尚未签到

发表于 2018-10-7 09:49:44 | 显示全部楼层 |阅读模式
mysql数据库基于SSL实现主从复制
  实验环境:
  node1:192.168.4.61
  node2:192.168.4.62
  CA:192.168.4.63
node1和node2时间同步
  [root@node1~]#ntpdate 172.18.0.1
  [root@node2~]#ntpdate 172.18.0.1
  [root@node1~]#vim /etc/chrony.conf #node1和node2操作一样
DSC0000.jpg

  [root@node1~]#systemctl start chronyd.service #启动服务
node1和node2基于key连接
  [root@node1~]#ssh-keygen
DSC0001.jpg

  [root@node1~]#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.4.62#将公钥复制到node2上
  node2操作和node1操作相同。
修改hosts文件
  node1和node2配置相同
  [root@node1~]#vim /etc/hosts
  3 192.168.4.61 node1  
4 192.168.4.62 node2
确保关闭iptables和selinux
node1和node2安装mariadb数据库
  [root@node1~]#yum install -y mariadb-server
  [root@node2~]#yum install -y mariadb-server
配置node1为主服务器
  [root@node1~]#vim /etc/my.cnf.d/server.cnf
DSC0002.jpg

  [root@node1~]#systemctl start mariadb #启动mariadb服务
MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456';  #对用户授权查看是否开启二进制日志
MariaDB [(none)]> SHOW VARIABLES LIKE '%log%bin%';
DSC0003.jpg

在node1上二进制日志状态信息
MariaDB [(none)]> SHOW MASTER STATUS;
DSC0004.jpg

配置node2从服务器
  [root@node2~]#vim /etc/my.cnf.d/server.cnf
DSC0005.jpg

  [root@node2~]#systemctl start mariadb #启动mariadb服务
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=417;   #设置连接主服务器启动从服务器
MariaDB [(none)]> START SLAVE;启动IO线程和SQL线程
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;查看从服务器状态
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;
DSC0006.jpg

如果出现图中红框中的信息说明已经启动成功。
测试是否已经实现主从复制
DSC0007.gif

实现SSL功能
搭建CA服务器
  [root@CA/etc/pki/CA]#touch index.txt
  [root@CA/etc/pki/CA]#echo 01 > serial
生成key文件
  [root@CA/etc/pki/CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048)
生成自签证书
  [root@CA/etc/pki/CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
DSC0008.jpg

node1生成证书
  [root@node1~]#mkdir /etc/mysql/ssl -pv
  [root@node1~]#chown mysql.mysql /etc/mysql/ssl/ -R
  [root@node1/etc/mysql/ssl]#(umask 077;openssl genrsa -out master.key 2048)[root@node1/etc/mysql/ssl]#openssl req -new -key master.key -out master.csr
DSC0009.jpg

  [root@node1/etc/mysql/ssl]#scp master.csr 192.168.4.63:/etc/pki/CA/newcerts/
  [root@CA/etc/pki/CA/newcerts]#openssl ca -in master.csr -out master.crt -days 365
  [root@CA/etc/pki/CA/newcerts]#scp master.crt ../cacert.pem 192.168.4.61:/etc/mysql/ssl
  [root@node1~]#vim /etc/my.cnf.d/server.cnf
DSC00010.jpg

  [root@node1~]#systemctl restart mariadb
查看是否开启SSL功能
DSC00011.jpg

node2生成证书
  [root@node2~]#mkdir /etc/mysql/ssl -pv
  [root@node2~]#chown mysql.mysql /etc/mysql/ssl/ -R
  [root@node2/etc/mysql/ssl]#(umask 077;openssl genrsa -out slave.key 2048)
  [root@node2/etc/mysql/ssl]#openssl req -new -key slave.key -out slave.csr
  [root@node2/etc/mysql/ssl]#scp slave.csr 192.168.4.63:/etc/pki/CA/newcerts
  [root@CA/etc/pki/CA/newcerts]#openssl ca -in slave.csr -out slave.crt -days 365
  [root@CA/etc/pki/CA/newcerts]#scp slave.crt ../cacert.pem 192.168.4.62:/etc/mysql/ssl
  [root@node2/etc/mysql/ssl]#vim /etc/my.cnf.d/server.cnf
DSC00012.jpg

重启服务
  [root@node2/etc/mysql/ssl]#systemctl restart mariadb
DSC00013.jpg

基于SSL连接
node1授权
MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456' REQUIRE SSL;测试
  [root@node2~]#mysql -ujoah -p123456 -h192.168.4.61 --ssl
DSC00014.jpg

node2连接主服务器以ssl复制
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000008',MASTER_LOG_POS=429,MASTER_SSL=1,MASTER_SSL_CA='/etc/mysql/ssl/cacert.pem',MASTER_SSL_CERT='/etc/mysql/ssl/slave.crt',MASTER_SSL_KEY='/etc/mysql/ssl/slave.key';  

  
MariaDB [(none)]> START SLAVE;  #启动从服务器
  

  
MariaDB [(none)]> SHOW SLAVE STATUS\G;
DSC00015.jpg

DSC00016.gif

小结
  (1)如果你已经正确的添加了证书,但是启动以后还是没有启动SSL功能,有可能没有权限
DSC00017.jpg

  [root@node2~]#chown mysql.mysql -R /etc/mysql/ssl
  (2)如果出现图片中的问题,停止slave即可
DSC00018.jpg

  (3)每一个过程中都需要验证是否成功然后进行下面的操作。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614203-1-1.html 上篇帖子: MySQL日志简介 下篇帖子: Mysql数据库备份与恢复--Xtrabackup
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表