MySQL主从复制环境搭建

一、主从复制原理 

        MySQL主从复制主要包含三个线程(Log Dump Thread、IO Thread、SQL Thread)和两个日志(Bin log、Relay log),Master的数据库变更会写到binlog中,binlog内容会通过Log Dump Thread线程发送给从节点,从节点的IO Thread线程读取到内容后会将内容写到Relay Log中,然后通过SQL Thread线程读取Relay Log并以SQL形式在Slave数据库执行。

  1.  主节点内容变更会写到binlog日志文件中;
  2.  主节点log dump thread发送增量binlog到从节点,从节点通过IO Thread将内容写道Relay log中;
  3.  从节点SQL Thread线程读取Relay log更新的内容,然后以SQL形式在从节点数据库中重新执行一次。

MySQL主从复制环境搭建_第1张图片

 二、Master节点配置

  2.1、开启binlog日志

        在/etc/my.cnf中添加如下配置,配置完需重启MySQL服务。

# master info
# 设置server_id,同一局域网中需要唯一
server_id=1001
# 二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=30

# binlog文件名称
log-bin=mysql-bin

# 指定需要同步的数据库名称

# binlog_do_db=test
# 指定不需要同步的数据库名称
binlog-ignore-db=mysql
# 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
# 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed

 2.2、创建连接主库使用的账号 

        在master数据库中创建slave连接master使用的用户,用户创建完后需登录一次,否则导致从库一直处理connecting状态。

# 创建连接主库的账号

create user 'slave'@'192.168.1.100' identified by 'Slave@123';

# 授权账号权限

grant replication slave on *.* to 'slave'@'%';

# 刷新权限

flush privileges;

# 用户创建成功后需登录一次,否则可能导致从库一直connecting状态

quit;

mysql -uslave -p

三、 binlog信息查询

查看binlog日志名称及偏移量:show master status\g;

 查看master中binlog状态,log_bin=ON代表已打开,OFF则关闭MySQL主从复制环境搭建_第2张图片

三、Slave节点配置

3.1、从节点配置

        在/etc/my.cnf中添加如下配置,配置完同样需重启MySQL服务。

# slave info
# 设置server_id,同一局域网中需要唯一
server_id=1002
# relay_log配置中继日志
relay_log=mysql-relay-bin
# slave设置为只读(具有super权限的用户除外)
read_only=1

3.2、配置Master相关信息

1、配置主库相关信息

# master_host:主节点ip

# master_user:主节点用户名(拥有replication slave权限的用户)

# master_port:用户对应的密码

# master_log_file:binlog文件名称(在主库中通过“show master status\g;”查看)

# master_log_pos:偏移量(在主库中通过“show master status\g;”查看)

# master_connect_retry:重试时间

change master to master_host='192.168.0.109',
        master_user='slave',
        master_password='Slave@123', 
        master_port=3306,
        master_log_file='mysql-bin.000003',
        master_log_pos=157, 
        master_connect_retry=30; 

2、启动从库

start slave;

3.3、验证

        通过show slave status \G;查询,如果Slave_IO_Running和Slave_SQL_Running状态都为Yes即代表配置成功。

MySQL主从复制环境搭建_第3张图片

你可能感兴趣的:(MySQL学习,mysql,数据库,java)