3:Mysql 主从复制搭建

1:先介绍环境

两台阿里云服务器 : Master(34)阿里云 Slave(226)阿里云
操作系统:CentOS 7.9 64位
Mysql版本:8.0.28
通信:采用内网IP

2:每台服务器安装Mysql

之前写过一篇安装Mysql 教程可用

3:搭建主从复制

1:主节点的搭建

(1):编辑配置文件

vim /etc/my.conf 文件, 在[mysqld] 下添加

# Mysql的bin-log的名字
log-bin=mysql-bin
# Mysql实例中全局唯一,并且大于0
server-id=34
# 禁用Mysql Server对外部连接进行DNS解析,使用这一选项可以消除Mysql进行DNS解析的时间。但所有远程连接都要使用IP地址方式
skip_name_resolve=ON

在这里插入图片描述

(2):查看binlog是否开启

重启mysql服务,并连接mysql,查看binlog是否开启

重启mysql服务
systemctl restart mysqld
查询binlog是否开启
show global variables like '%log%';

3:Mysql 主从复制搭建_第1张图片

(3):查看binlog日志列表

show master logs;

3:Mysql 主从复制搭建_第2张图片

(4):查看主节点的server-id是否生效

show global variables like '%server%';

3:Mysql 主从复制搭建_第3张图片

(5):在主节点上创建用于备份账号

create user 'username'@'%' identified by 'password';
GRANT REPLICATION SLAVE ON *.* TO 'username'@'%';
flush privileges;

3:Mysql 主从复制搭建_第4张图片

2:从节点的搭建

(1):编辑配置文件

vim /etc/my.conf 文件, 在[mysqld] 下添加

# relay log 很多方面和 binary log差不多 ,区别在于 从节点的I/O线程将主服务器的二进制日志读取过来记录到服务器本地文件,然后SQL线程会读取到relay-log日志的内容并应用到从节点,从而使从节点和主节点的数据保持一致
# 定义relay_log 的位置和名称 
relay-log=relay-log
# 定义relay_log 的位置和名称
relay-log-index=relay-log.index
# 从节点关闭binlog日志
skip-log-bin
# Mysql实例中全局唯一,并且大于0
server-id=226
# 禁用Mysql Server对外部连接进行DNS解析,使用这一选项可以消除Mysql进行DNS解析的时间。但所有远程连接都要使用IP地址方式
skip_name_resolve=ON
# 可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。
innodb_file_per_table=ON

3:Mysql 主从复制搭建_第5张图片

(2):查看中继日志

重启mysql服务,并连接mysql,查看中继日志是否开启

重启mysql服务
systemctl restart mysqld
show global variables like '%log%';

3:Mysql 主从复制搭建_第6张图片

(3):查看server-id是否生效

show global variables like '%server%';

3:Mysql 主从复制搭建_第7张图片

(4):从节点配置主从连接信息

需要主节点查出 binlog 日志最新的文件和索引

show master logs;

myster_log_file 和 master_log_pos 通过主节点的
命令查看。 对应Log_name 和 File_size

从节点命令

CHANGE MASTER TO MASTER_HOST='172.29.114.155',
MASTER_USER='username',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=875; 

3:Mysql 主从复制搭建_第8张图片

(5):开启同步

查看同步状态信息

show slave status\G;

3:Mysql 主从复制搭建_第9张图片
开启同步

start slave;

在这里插入图片描述
再次查看状态信息,至此主从复制配置完成
3:Mysql 主从复制搭建_第10张图片

4:测试

主节点上操作

create database mydb1;
show master status;

主节点图
3:Mysql 主从复制搭建_第11张图片
从节点上操作

show databases;
show slave status\G;

从节点图
3:Mysql 主从复制搭建_第12张图片

5:遇到的一些问题

1:从节点关闭 binlog

如果没关闭,会导致复制无效
vim /etc/my.cnf

# 设置为关闭binlog
skip-log-bin

2:连接master错误,需要安全连接

报错信息

2022-03-07T08:41:23.047640Z 139 [ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master '[email protected]:3306' - retry-time: 60 retries: 34 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061

当时解决方式:
stop slave; 关闭从节点
在master把这个slave 账户删除掉,重新创建授权刷新一遍。
在slave重新执行一遍 【从节点命令】 就可以了。

3:不知道错误日志在哪里,无从下手排查

解决办法:从my.cnf找到log-error配置项,值就是错误日志了

vim /etc/my.cnf
这个就是错误日志的路径了
log-error=/var/log/mysqld.log

4:重启了mysql后,需要在从节点重新开始读写配置

start slave;

6:Java应用测试

(1):使用框架

SpringBoot(2.1.5.RELEASE)
Mybatis-Plus(3.3.0)
Sharding-Jdbc-spring-boot(4.0.0-RC2)
HikariCP(3.2.0)

(2):成功图

3:Mysql 主从复制搭建_第13张图片

(3):源码(包含sql)

源码

你可能感兴趣的:(亲手安装教程,读写分离,分库分表,阿里云,mysql,主从复制)