2 mysql主从复制配置

2023-12-13 22:20:34
1、节点以及网络配置

前置条件:
已经在linux上安装好了一主一从或者一主多从的mysql

2、具体配置

主服务器 172.20.0.2
从服务器 172.20.0.3

  1. 首先主机mysql配置:
    打开mysqld.cnf:
    添加如下配置:
# 主服务器ID 必须唯一
server-id=2

# 开启及设置二进制日志文件名称
log_bin=mysql-bin

# 要同步的数据库
binlog-do-db =db_java1234

# 不需要同步的数据库
binlog-ignore-db=mysql    
binlog_ignore_db=information_schema
binlog_ignore_db=performation_schema
binlog_ignore_db=sys

# 设置logbin格式
binlog_format= MIXED  # binlog日志格式,mysql默认采用statement,建议使用mixed
  1. 从服务器,打开mysqld.cnf:
server-id=3
relay-log=mysql-relay
  1. 在主服务器执行如下语句,需要单独创建一个用户授权给从节点使用,用来同步数据。

依次执行如下语句:

CREATE USER 'slave1'@'172.20.0.3' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'172.20.0.3';
FLUSH PRIVILEGES;

查看主服务器状态;

SHOW MASTER STATUS

在这里插入图片描述
4. 从机创建连接主服务器的IP,用户,密码以及日志文件和位置;

CHANGE MASTER TO MASTER_HOST='172.20.0.2', MASTER_USER='slave1', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;

启动主从复制

START SLAVE;

查看从机状态;

SHOW SLAVE STATUS

在这里插入图片描述
有两个yes才OK;
假如有 No 或者 Connecting,请看下方日志 或者找到Mysql日志文件查看具体问题;

3、binlog_format详解

mysql复制主要有三种方式:

1.基于SQL语句的复制(statement-based replication, SBR)
2.基于行的复制(row-based replication, RBR)
3.混合模式复制(mixed-based replication, MBR)

对应的,binlog的格式也有三种:STATEMENTROWMIXED

  1. STATEMENT模式(SBR)
    每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)。

  2. ROW模式(RBR)
    不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。

  3. MIXED模式(MBR)
    以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

文章来源:https://blog.csdn.net/weixin_39563769/article/details/134943527
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。