Loading

MySQL 主从配置-之-一主一从

准备

首先需要准备好,2台MySQL。用虚拟机或实体机器都可以。
如果没有安装,可以查看安装教程:
https://www.cnblogs.com/cqpanda/p/16365015.html
https://www.cnblogs.com/cqpanda/p/18044804
https://www.cnblogs.com/cqpanda/p/17299234.html

测试环境:MySQL 8.x Linux OpenEuler 2203Sp3.x86_64 2台(用于1主,1从)

主数据库配置

创建一个数据库用于主从复制

create database test default character set utf8mb4 collate utf8mb4_general_ci;

主数据库配置文件进行修改

## 进入编辑配置文件
vim /etc/my.cnf

编辑配置文件

## 下面为配置文件内容
# 配置编码为utf8
character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'

# 启用二进制日志
log-bin=mysql-bin
# 配置要给Slave同步的数据库,可以设置多个
binlog-do-db=test
# 不用给Slave同步的数据库,一般是Mysql自带的数据库就不用给Slave同步了
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# Master的id,这个要唯一,唯一是值,在主从中唯一
server-id=3

重启服务

systemctl restart mysqld

查看log_bin日志是否启动成功

show variables like '%log_bin%';

查看Master状态

show master status;

File和Position要记住,后面配置Slave的时候要使用到这两个数据.

然后主数据库创建一个用于同步使用的账户

create user 'backup'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO backup@"%" WITH GRANT OPTION;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%';
FLUSH PRIVILEGES;

从数据库配置

创建一个和主数据库同名的数据库:

create database test default character set utf8mb4 collate utf8mb4_general_ci;

编辑配置文件:

vim /etc/my.cnf

配置文件设置:

# 配置从服务器的ID,唯一的
server-id=4
#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE

配置完成后,重启服务

systemctl restart mysqld

设置Master的信息:

-- 注意:master_log_file、master_log_pos改为主数据库对应的数据
change master to master_host='192.168.1.5',master_port=3306,
master_user='backup',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1690;

启动从数据库从服务

start slave;

查看slave状态

-- 查看从数据库状态
show slave status

image

查看Slave_IO_Running和Slave_SQL_Running是否都是yes

如果存在no,则关闭从服务,然后重启服务器

-- 停止从服务
stop slave;
-- 启动从服务
start slave;
-- 注意:master_log_file='mysql-bin.000001',master_log_pos=1690; 是与主数据库是同步的

其他命令

-- 查看主的日志
show master logs;
-- 重置从数据库配置(注意!!!会清空从的配置信息)
reset slave

常见错误处理

slave启动后报错1872

1872 - Replica failed to initialize applier metadata structure from the repository

reset slave;

从库状态 Slave_IO_Running: Connecting

检查网络是否能连通,ping一下

ping 192.168.100.100

检查主库的防火墙是否开启对应端口

firewall-cmd --query-port=3306/tcp

检查提供给从库的用户名和密码是否正确

在主库用对应的用户名和密码登录一下就知道了

检测对应的master_log_file='mysql-bin.000001',master_log_pos=1690; 是否主数据库是同步的

show master status;

检查虚拟机MySQL库uuid

如果是虚拟机环境,是使用克隆出来的两个虚拟机
在文件夹/var/lib/mysql下面的auto.cnf文件中
serveruuid=aaaaaaaaaaaaa是相同的,
将主从数据库中的auto.cnf文件删除后重新启动数据库后可以解决

参考链接

https://cloud.tencent.com/developer/article/1662191
https://zhuanlan.zhihu.com/p/164518315
https://zhuanlan.zhihu.com/p/138420773
https://www.cnblogs.com/jialanyu/p/14074039.html
https://blog.csdn.net/weixin_43879261/article/details/111483712
https://zhuanlan.zhihu.com/p/261416799
https://developer.aliyun.com/article/43337

posted @ 2024-04-08 15:15  重庆熊猫  阅读(45)  评论(0编辑  收藏  举报