MySQL 配置主从复制实践分享

一、检测通信

查看主库(master)和从库(slave)的ip地址,并检测是否可以通信

保证master和slave之间网络是互通的,用ping命令检测

到这里我们知道,master的ip为192.168.131.129,slave的ip为192.168.0.6,并且可以相互通信。保证3306端口开放

查看防火墙状态systemctl status firewalld.service

临时手动启动防火墙systemctl start firewalld.service
临时手动停止防火墙systemctl stop firewalld.service

持久打开防火墙(重启服务生效)systemctl enable firewalld.service
持久关闭防火墙(重启服务生效)systemctl disable firewalld.service

查看当前开放的端口列表firewall-cmd --list-ports

二、master配置

1. 开启二进制日志

配置log_bin和全局唯一的server-id,和slave区分开,不能配置成一样的(如果是my.cnf新添加配置,一定要重启mysql服务)

vim /etc/my.cnf打开my.cnf文件

2. 创建一个用于主从库通信用的账号

即在master中创建一个账号,用于slave登录master读取binlog

虽然我们在linux上查看的ip地址是192.168.131.129,但我们创建账户登录时不写这个ip,写的是192.168.131.1。因为我这里虚拟机用的是nat模式(如果是桥接模式就可以直接用了),虚拟机(master)和物理机(slave)通信的时候,虚拟机先把数据发送到网关192.168.131.1(默认与vmnet8通信),192.168.131.1再转发到物理机,所以物理机接收到的是192.168.131.1的数据,故我们在master上为slave创建账户的时候,应该写192.168.131.1

如果给slave配置的不是网关192.168.131.1地址,vim + /var/log/mysqld.log打开错误日志会有如下信息:

这说的就是从192.168.131.1的mslave权限不够,那是因为我们在master配置的是允许从其他地方登录,并不允许从192.168.131.1地址登录,导致权限不够。

由于master这边收到的是来自192.168.131.1的请求,所以错误日志显示的是192.168.131.1

创建用户的命令:

//如果嫌麻烦可以用%代替192.168.131.1,,它就可以匹配任何ip
mysql> create user 'mslave'@'192.168.131.1' identified by '1qaz@wsx';
//启动主从,在主库上给当前的mslave用户开启replication slave主从复制的权限,从库就可以通过1qaz@wsx账户密码
//从192.168.131.1 ip地址来请求访问这台主库上的任意库里面的任意表*.*,同步这个主库的任意库里的任意表
mysql> grant replication slave on *.* to 'mslave'@'192.168.131.1' identified by '1qaz@wsx';
mysql> flush privileges;

3. 获取binlog的日志文件名和position

show master status

三、slave配置

1. 配置全局唯一的server-id

配置全局唯一的server-id

涉及修改配置文件,需要重启mysql服务

2. 使用master创建的账户读取binlog同步数据

这一步配置主要是给io线程读取binlog使用:

mysql> change master to master_host='192.168.131.129',
master_port=3306,
master_user='mslave',
master_password='1qaz@wsx',
master_log_file='mysql-bin.000006',
master_log_pos=1262;
  • master_host:指定master的ip
  • master_log_file:binlog文件名
  • master_log_pos:binlog的position

3. 开启slave服务

通过show slave status命令查看主从复制状态,show processlist查看master和salve相关线程的运行状态

四、配置中可能出现的问题

1. 网络连接问题

通过show slave status命令查看主从复制状态

连接connection错粗,先考虑网络是否互通,ping一下:

然后再检查从库里面的配置信息是否正确

如果都正确,检查主库所在机器的3306端口是否正常

telnet xxx.xxx.xxx.xxx 3306

如果发现3306端口不能连通,就需要怀疑主库对端口有限制吗,也就是防火墙限制,就需要在防火墙把3306端口开放出来。

如果这个错误还没解决,就查看一个主库的错误日志/var/log/mysql/mysqld.log,查看错误日志中提示的ip是否和自己允许slave登录的ip一致

这说的就是从192.168.131.1的mslave权限不够,自己玩的时候,如果虚拟机是nat模式,则需要写成vmnet8网关ip。如果都是物理机通信,那直接写正确的ip即可

可以在mysql数据库下的mysql库的user表中更改允许登录的ip

然后重新赋予权限:

mysql> grant replication slave on *.* to 'mslave'@'xxx.xxx.xxx.xxx' identified by '1qaz@wsx';

2. binlog的position问题

在master中查看show master status一下binlog日志文件名以及position,然后用命令重新配置slave,比如:

mysql> change master to master_host='192.168.131.129',master_port=3306,master_user='mslave',master_password='1qaz@wsx',
master_log_file='mysql-bin.000006',master_log_pos=1262;

配置slave前需要stop slave,配置完成再start slave

3. sql线程出错

错误原因:首先配置主从复制的时候,slave的mytest库中没有user表,而master的mytest库已经有user表了配置好主从复制后直接drop table mytest.user,这就会写到binlog里面,然后在通过dump线程和io线程将这个操作发送到从库的relay log,然后从库的sql线程从relay log里把drop table mytest.user捞出来在从库执行这个sql,可从库的mytest根本就没有user表,这就是删除一个不存在的表,于是出现错误了。

一般我们是不会做这样的操作的,我们一般都是主库配置以后,slave从数据开始增量进行同步,不会同步以后一开始就删主库里的东西,如果真的出现这样的问题了,随时可以通过show slave status来查看主从库的状态来解决错误,如果是上图这个错误,
(1)可以在从库stop slave,然后把位置重新设置一下,然后再start slave,相当于重新开始主从同步的位置。
(2)可以在从库stop slave,然后set global sql_slave_skip_counter=1;(跳过一个错误),然后再start slave重启从库的线程,相当于把错误跳过了,异常操作。

可以通过show slave status查看以下标识,io线程出错一般是网络问题,sql线程出错一般是sql在slave库执行出现了问题

到此这篇关于mysql 配置主从复制实践分享的文章就介绍到这了,更多相关mysql 配置主从复制 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

“张承辉博客” MySQL 配置主从复制实践分享 https://www.zhangchenghui.com/267410

(0)
上一篇 6分钟前
下一篇 5分钟前

相关推荐

  • 怎么查爱人的微信聊天记录(怎样查她人微信聊天记录)

    01 男人之间的快乐还真是朴实无华呢 02 看到帅哥时的我: 看美女的我 03 这马克杯的设计师是有多浪漫啊 这边压力给到了义乌 04 《叛逆作者和他的大冤种书名》 野史都没这么野…

    问答 2022年4月27日
    003
  • QQ2022年伤感签名99句

    1、这倾城的疼痛,就让我一个人去甜食。 2、一起做梦的样子,也许就是爱情的样子。 3、你给我的承诺,到最后不过变成了谎言。 4、你若将我万劫不复,我便让你生不如死。 5、我不希望你…

    问答 2022年4月17日
    008
  • 中考语文必考古诗词整理 初中语文古诗词答题技巧

    中考语文必考古诗词整理 初中语文古诗词答题技巧 关于古诗词的考点在初中语文试卷可谓是随处可见的,考题的类型又是极为灵活的,以下张承辉博客整理的中考常见古诗词,仅供参考。 初中语文古…

    问答 2022年4月18日
    0011
  • 简短易记生日祝福语

    生日对于每个人来说还是挺有特殊意义的,身边的朋友快过生日啦,该准备送去生日祝福了,有哪些生日祝福简约得体呢?以下是小编给大家收集的关于简短易记生日祝福语,欢迎大家前来参阅。 简短易…

    问答 2022年4月18日
    001
  • 三七炖汤的方法

    1、三七乌骨鸡。 (1)材质:三七10克、乌骨鸡1只、食盐适量、料酒10克、生姜粒5克。 (2)办法:将鸡宰杀,去毛和内脏。三七研成成粉末,撒在鸡身上,放入碗中,加食盐,料酒、姜粒…

    问答 2022年4月25日
    003
  • 《名人传——贝多芬传》读后感1500到2000字

      本文《《名人传——贝多芬传》读后感1500到2000字》由读后感大全整理,仅供参考。 打开罗曼。罗兰的《名人传》,一股生命的烈火就迎面而来。   --题记   他不断地钟情,如…

    问答 2022年4月18日
    002

发表评论

登录后才能评论