mysql8主从搭建

centos7准备两台机器:192.168.131.101,192.168.131.102
mysql8安装
主节点:
创建一个账户专门用于同步主从数据,赋权限

CREATE USER 'slave'@'%'  IDENTIFIED BY 'slave';
GRANT REPLICATION SLAVE ON *.* To  'slave'@'%'  WITH GRANT OPTION;
flush privileges;

设置binlog和server id

vim /etc/my.cnf
log-bin=mysql-bin.log
server-id=101

重启mysqld
systemctl restart mysqld;

show master status;
File:mysql-bin.000001
Position:156

从节点:
设置binlog和server id

vim /etc/my.cnf
log-bin=mysql-bin.log
server-id=102

重启mysqld
systemctl restart mysqld;

启动slave

change master to master_host='192.168.131.101',master_user='slave',master_password='slave' ,MASTER_PORT=3306, master_log_file='mysql-bin.000001',master_log_pos=156;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

start slave;

显示slave状态
show slave status \G
错误一:
error connect to xxx cahche sha2 password:
解决:
主:

 ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'slave' ;
FLUSH PRIVILEGES;	

错误:
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
vim /var/lib/mysql/auto.cnf 修改uuid
主要是因为机器是clone的导致uuid一样

参考资料
mysql8主从

### MySQL 8.4 主从复制实施步骤 #### 创建用于复制的用户账户 为了安全起见,在设置主从复制时应避免使用 `root` 用户进行同步配置。建议创建专门用于复制操作的新用户,并授予必要的权限。 ```sql CREATE USER 'slave'@'192.168.%.%' IDENTIFIED BY 'Zabbix@root818'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.%.%'; FLUSH PRIVILEGES; ``` 上述命令将在主服务器上创建名为 `slave` 的新用户,允许来自特定子网内的主机连接到该用户[^3]。 #### 配置主服务器 确保主服务器已启用二进制日志记录功能,这是实现数据同步的基础条件之一。编辑 `/etc/my.cnf.d/server.cnf` 文件中的 `[mysqld]` 段落部分: ```ini server-id=1 log_bin=mysql-bin binlog_format=row expire_logs_days=7 max_binlog_size=100M ``` 重启 MySQL 服务使更改生效。之后可以查看当前正在使用的二进制文件名及其位置以便稍后在从服务器端指定这些参数[^2]。 #### 获取主服务器状态信息 登录至主服务器执行如下 SQL 查询来获取最新的二进制日志坐标点作为后续配置依据: ```sql SHOW MASTER STATUS\G ``` 此查询返回的结果将显示最近一次写入事件所在的二进制日志名称 (`File`) 和偏移量 (`Position`),这两个值对于初始化从服务器至关重要。 #### 设置从服务器指向主服务器 切换到从服务器环境中,通过下面这条语句告知其要跟踪哪个上游节点以及如何访问它所保存的数据变更历史记录: ```sql CHANGE MASTER TO MASTER_HOST='192.168.126.133', MASTER_PORT=3306, MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154; ``` 这里假设已经知道了确切的日志文件名(`master_log_file`)和位置(`master_log_pos`);如果不确定,则可以用 `AUTO_POSITION=1` 替代最后两个选项以自动定位最新有效位点。 #### 启动并验证复制过程 完成以上准备工作后就可以启动 I/O 线程开始拉取更新了: ```sql START SLAVE; ``` 可以通过运行 `SHOW SLAVE STATUS \G` 来确认所有组件都正常工作,特别是关注 `Slave_IO_Running` 及 `Slave_SQL_Running` 字段的状态是否均为 "Yes"[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值