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

[经验分享] mysql主从复制配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-6 08:32:04 | 显示全部楼层 |阅读模式

       Master/Slave
                  Master: write/read
                   Slaves: read
企业mysql架构环境:
     一主多从,主服务器负责写,从服务器提供读请求

为什么?
        冗余:promte(提升为主),异地灾备
                   人工
                 工具程序: MHA
负载均衡:转移一部分“读”请求;
         支援安全的备份操作;
             测试;
主从复制的原理:利用二进制日志文件和中继日志文件,主服务器将所有的操作写入二进制文件,从服务器
通过i/o线程,不断申请 加载主服务器的二进制文件,存储到从服务器的中继日志中,sql线程通过读取中继
日志,将主服务器中的操作在从服务商进行重放
主/从架构:
异步复制:mysql server master 不需要确认从服务受到数据,直接进行操作
半同步复制:半同步复制是基于Google为 MySQL开发的半同步复制的插件。
半同步 复制的原理是,一个事务在主服务器上执行完成后,必须至少确保至少在一台从服务器   
上执行完成后,事务才算提交成功。如果在一定时间内从服务器没有响应,则会自动降 级为异
步复制
一主多从;
一从一主;
级联复制;黑洞引擎:用于级联复制中,有三台 mysql A、B 、C  ; B同步A 中的数据,
         C同步B中的数据,其中B数据就可以使用黑洞引擎只记录二进制文件,不将数据记录
     到磁盘中,减少I/O读写
应用场景:当mysql主服务器读写压力过大时,中间可以加入 B服务,用于减少压力
循环复制;
双主复制;
一从多主:
         每个主服务器提供不同的数据库;
配置环境:
     配置注意:
          注意时间同步
          主服务器的版本高于或者等于从服务器版本      
复制的开始位置:
      从0开始;
       从备份中恢复到从节点后启动的复制;
     mariadb版本:5.5
     系统版本:centos7
     mariadbserver1(master) ip:192.168.1.36
     mariadbserver2(slave)ip:192.168.1.128
mysql 基于ssl实现mysql主从复制:

     一:实现mysql用户能基于ssl连接:

配置环境:
     mysql server:
           hostname:Myserver
          system version:centos7
          mysql version:mariadb5.5.44
          ip地址:192.168.1.133
     mysql client:
          hostname:Myclient
          系统版本:centos7
          mysql client:mariadb5.5
          ip address:192.168.1.128


    Myserver主机配置配置:   


      证书生成   
      由Myserver服务器自谦CA证书,并给自己和Myclient 颁发证书        
1、 设置CA自签发:
   wKiom1hFeuKwXxQJAAAQJ9z2NmY869.jpg
2、 创建序列号文件和数据库文件
    wKiom1hFcf3CZyHAAAASp95BKto846.jpg

3、生成私钥:
    wKioL1hFcf7iDifZAAAectAGEII826.jpg

   4、生成自签证书
wKiom1hFcf7zu_-pAAAiEPmMwM8420.jpg

5、生成申请证书文件
wKioL1hFcf7jH_qqAAAqjesUGVU659.jpg

  6、签发证书:
wKiom1hFcf-S01ksAAAhU4Kl5qU821.jpg

  7、复制CA  cacert.pem 和私钥  cakey.pem 到/etc/mariadb/ssl中      
wKioL1hFcf-zzEevAAAZXzPjTjE655.jpg



     mysql 配置
1、安装mariadb并启动mysql
2、添加授权用户,并要求使用基于ssl远程连接
wKiom1hFcf_gypAoAAAxPX9Ak_Q125.jpg    
3、创建/etc/mariadb/ssl目录用于存放证书,CA,密钥
4、编辑配置文件/etc/my.cnf在[mysqld]开启ssl,重新启动服务
   wKiom1hFcgDht1-8AAAEaETGntc991.jpg
   登录mysql查看ssl功能是否开启
wKioL1hFcgCzInA7AAAW9GSnOiA307.jpg

5、编辑配置文件在[mysqld]配置段,添加证书文件,重启服务
   wKiom1hFcgDReba7AAAVaPKqlNY942.jpg


wKioL1hFcgGwn3rXAAA3qG6nvJc008.jpg


Myclient配置:

1、生成私钥
wKiom1hFcgHQLTmxAAAj2UZasAA169.jpg   
2、生成申请证书文件,并将其发给Myserver服务器
wKioL1hFcgHzNfcoAAAWM7DY47U556.jpg

3、由Myserver生成给Myclient生成证书,将Myserver中的cacert.pem和生成的客户端证书一起发给Myclient的/etc/mariadb/ssl文件中,将自己的私钥文件也放到此目录中
   wKiom1hFcgKCjilxAAAY0qtPklM009.jpg
    wKioL1hFcgKiB6EUAAAyK0ktTZA984.jpg
wKiom1hFcgKDoOqpAAARqUGMXgk373.jpg


   Myserver端:
   wKioL1hFcgKTUxsPAAAaTbQhw88738.jpg
wKioL1hFcgPD8yAzAAAP0mglJMc771.jpg

客户端测试基于ssl连接Myserver:
cd /etv/mariadb/ssl   wKiom1hFcgPQwKWzAACFxQ2BHWU860.jpg

  可能出现的错误:
  Myserver中添加ssl和ssl证书路径等,如果出现了hava_ssl 状态为DISABLED,日志中提示如下错误
wKiom1hFcgOhVO95AAAcByCs32c820.jpg
解决办法:
wKioL1hFcgSwR00gAAAGOhngOCA937.jpg


二:在第一步上完成主从配置:                          
通过完全备份,将主服务的数据导入到从服务器
master 配置:
1开启二进制文件,开启方式编辑/etc/my.cnf ,添加如下内容,之后重新启动服务
配置开启二进制文件

wKioL1hFcgSBqVJ9AAARPCwJoY0289.jpg
开启ssl和指明证书相关文件、  
wKiom1hFcgSi432HAAAUSzVTx6U890.jpg
2、进入mysql添加用于主从复制的用户
wKioL1hFcgTANQjoAAAU8c7CppU789.jpg
  3、重新启动服务即可
slave配置:
1编辑主配置文件/etc/my.cnf
  开启中继日志
wKiom1hFcgWBlj-qAAAYCr2Hnh0504.jpg

添加ssl证书:
   wKioL1hFcgWzRbGhAAAdONgvhCI459.jpg

2、重新启动服务
3、查看主节点的此时二进制文件的名称和位置,基于二进制文件和此位置进行复制同步
wKiom1hFcgWx1kyTAAAcvecN-nk668.jpg
查看二进制文件日志时间,也可以根据此二级值日志文件不同事件的位置进行同步,例如从479开始
wKiom1hFcgWi__6-AAA_Cic7ghY040.jpg
4、在slave中添加主节点:
wKioL1hFcgbA9esZAABEGN9lrZ0442.jpg
5、设置salve为只读
     配置文件中添加read_only :对管理员不生效啊
wKioL1hFcgajUJOzAAAdEn86pNw279.jpg

6、slave start;开启从服务
7、show slave status\G:显示从服务

主从复制常见问题
     问题一: io线程始终保持为connecting状态

主从架构中,从库的io_thread一直保持connecting状态。先理解Slave_IO_Running 为connecting,的含义。造成的主要有三个:
  1、网络不通 (是否打开防火墙)
  2、复制用户的密码不对 (主从同步指定的用户密码主机名限制)
  3、pos不对 (指定的position不正确)
  4.主键冲突,报1062错误

   问题二:在搭建主从时,报1201错误 。ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL
      error   log
 解决方法:出现这个问题的原因是之前曾做过主从复制!需要reset slave后再change

     问题三:   
     从库同步慢
  主从架构中,从库的同步数据非常慢。出现主从同步慢的原因有:
  1.主从同步延迟与系统时间的关系,查看主从两台机器间系统时间差
  2.主从同步延迟与压力、网络、机器性能的关系,查看从库的io,cpu,mem及网络压力
  3.主从同步延迟与lock锁的关系(myisam表读时会堵塞写),尽量避免使用myisam表。一个实例里面尽量减少数据库的数量。

     问题四:从服务器落后主服务器怎么办
     查看从服务器落后主服务器:  show slave status\G
             seconds_behind_master:是否落后主服务器,落后主服务器的时间;
     停止从服务器然后在重新启动从服务器
     或者基于半同步方式进行主从复制

mysql 半同步复制:   
在主从同步的基础上配置半同步复制:     
mysql支持多种插件:/usr/lib64/mysql/plugins/
master:
1、登录mysql安装PLUGIN模块
   wKiom1hFcgayKaGVAAAPNGOf4_s625.jpg

2、查看插件是否安装完成
wKioL1hFcgeCZxTdAAAbPPkrTMQ370.jpg    
3、查看安装完插件生成的相关变量,确保第一个变量值为ON

wKioL1hFeuDDBP2KAAA6G9Du254248.jpg
rpl_semi_sync_master_timeout:设置超时时间,超过此值主服务器连得不到从服务响应自动将其降级为普通的从服务器
设置永久生效编辑配置文件,重新启动服务 wKiom1hFeuHTvm8VAAAK3ajjwqM795.jpg

slave:
1、安装从服务需要的插件rpl_semi_sync_slave
wKioL1hFeuGC50pGAAARvY3Xec0552.jpg

2、编辑配置文件:
wKioL1hFeuHQ7nnzAAAKzuTnPjo651.jpg
3、重新启动slave;
      slave stop;
      slave  start;     
查看主服务器中半同步状态:
      wKiom1hFeuLDuPKDAACAGGoM2Dk514.jpg

     关注重点:

          Rpl_semi_sync_master_net_avg_wait_time:网络等待的平均时间时间长查看带宽是   否够用单位 ms
         Rpl_semi_sync_master_net_wait_time 网络等待时间:
         Rpl_semi_sync_master_net_waits  网络等待次数:
         Rpl_semi_sync_master_tx_avg_wait_time :等待事务的提交的平均时间
         Rpl_semi_sync_master_tx_wait_time :等待事务的总时长
         Rpl_semi_sync_master_tx_waits:等待事务提交的总次数

测试从服务器故障自定降级:
     如果rpl_semi_sync_slave_enabled的值为在配置文件中配置,而是利用set 设置,重启mysql     slave,当主服务更新数据库时会出现连接超时自动降级


运维网声明 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-310232-1-1.html 上篇帖子: mysql5.7 二进制包安装 下篇帖子: mysql外键引发的锁等待 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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