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
查看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
作者:重庆熊猫
出处:https://www.cnblogs.com/cqpanda/p/18112606
版权:本作品采用「不论是否商业使用都不允许转载,否则按3元1字进行收取费用」许可协议进行许可。
本文来自博客园,作者:重庆熊猫,转载请注明原文链接:https://www.cnblogs.com/cqpanda/p/18112606
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通