ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

CentOS7环境下MySQL的主从配置

2021-09-05 18:35:58  阅读:177  来源: 互联网

标签:slave MySQL CentOS7 MASTER master mysql 服务器 主从


CentOS7环境下MySQL的主从配置

一、什么叫主从复制

通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。通俗点说就是select查询发送到从服务器,修改数据的语句发送到主服务器,以此来降低主服务器的查询处理压力

二、主从复制工作原理

MySQL主从是基于binlog的,主服务器必须开启binlog才能进行主从。3个过程实现,其中一个过程在主服务器上,另外两个过程发生在从服务器上。

  1. master服务器将增删改操作记录写入到binlog里
  2. slave服务器将binlog中(sql语句)同步到自己的relaylog里
  3. slave服务器从relaylog里面的SQL语句按顺序很执行

三、主从复制的优点

  • 数据库备份 假如一台服务器宕机或数据丢失,我们只需把其他服务器上的数据库copy一份就可以了
  • 读写分离 根据2、8原则,系统中80%的请求多是查询(select),20%请求为增删改(insert、delete、update)。当项目请求数足够大的时候,读写分离可以有效的减轻数据库压力

步骤

1、准备数据库服务器

以centos7下的lnmp集成包为例,保持两台主机网络畅通

  • 主(master) 192.168.0.253
  • 从(slave) 192.168.0.251

首先要考虑防火墙影响,要么关闭防火墙;

[root@localhost jack]# systemctl stop firewalld.service

要么在防火墙里添加开放3306端口的规则:

[root@localhost jack]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost jack]# firewall-cmd --reload

2、主服务器配置

1、修改主服务器上:/etc/my.cnf

server-id = 1 
log-bin = mysql-bin  #主从服务的核心 定义binblog日志的前缀名
binlog-do-db=test    #需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-do-db=mydb    #需要同步的数据库,同时同步test、mydb库
binlog-ignore-db=mysql #被忽略的数据库

在主服务器创建一个专门用来同步的用户,注意下面:

  • *.* 指定能操作所有的表和库;
  • mysync表示在系统中创建一个用户,用于负责主从工作;
  • %表示允许所有主机,
  • 后面跟具体的ip(192.168.0.251),表示针对某一个主机用来做从服务器
    # GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY '12345678';
    
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.0.251' IDENTIFIED BY '12345678';
    mysql> show master status;  // 等着 留意file 和postion字段

    锁定数据库,此时不允许更改任何数据,当然也可以省略这一步,只要我们人为的不操作数据就好

    mysql> flush tables with read lock;  

    查看主服务器当前状态,这些数据是要记录的,一会要在slave服务器端用到

    mysql> show master status;  // 等着 留意file 和postion字段
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000006 |   511   |    test,mydb    |                  |
    +------------------+----------+--------------+------------------+

3、从服务器

1、修改主服务器上:/etc/my.cnf

server-id = 251  //保证唯一性

2、设置从服务

mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.253',MASTER_USER='mysync',
MASTER_PASSWORD='12345678',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=511;
  • MASTER_LOG_FILE //从主服务器上看status
  • MASTER_LOG_POS //同上
mysql> start slave  #开启从服务
mysql> show slave status\G #查看从服务状态

如下两个选项都为yes标明主从成功

Slave_IO_Running:Yes
Slave_SQL_Running:yes

出现
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决
find / -name auto.cnf
删除auto.cnf文件内容

4、测试增删改

具体自己测试,聂哥就不管了,其实就简单创建一个表,或添加几条数据就能测试

5、友情提醒

主从复制搭建起来不算难,只要按照上面步骤来,一般不会有问题。但是一旦我们不小心在slave服务器上写了数据,那么主从也就被破坏了。 另外如果非要重启master服务器,一定要先把slave服务器停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master服务器上的mysql服务,否则很有可能就会中断了。 当然重启完后,还需要把slave服务器给开启 slave start.



来自为知笔记(Wiz)

标签:slave,MySQL,CentOS7,MASTER,master,mysql,服务器,主从
来源: https://www.cnblogs.com/chengwens/p/7b1196df07df6f76bba92af9679b9608.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有