mysql8.4主从配置

MySQL主从复制配置与测试

主库开启log_bin

使用以下命令查看是否开启,mysql8.4默认开启

SHOW VARIABLES LIKE 'log_bin';

主库配置文件更改

my.cnf 配置文件 在[mysqld] 下增加 server_id 配置

server-id=1

一、主库创建备份账号并授权

创建一个同步用的账号

 create user 'backup'@'backuphost' identified by 'backuppassword';

给账号授权

grant replication slave on *.* to 'backup'@'backuphost';

检查账号权限

show grants for 'backup'@'backuphost';

二、主库锁定,查询log_bin 文件及位置并导出数据导入至从库

数据库锁定

使用 FLUSH TABLES WITH READ LOCK 命令

FLUSH TABLES WITH READ LOCK;

该命令主要用于备份工具获取一致性备份(数据与binlog位点匹配)。
它用于锁定所有数据库中的表,以便进行备份或其他维护操作。
这个命令会执行以下操作:
: 关闭所有打开的表。
: 锁定所有数据库中的所有表,以防止任何表的写入操作。
: 允许其他客户端进行读操作,但不允许写入操作。

查看bin_log 文件信息

使用 SHOW BINARY LOG STATUS; 命令
官方解释:This statement provides status information about binary log files on the source server, and requires the REPLICATION CLIENT privilege (or the deprecated SUPER privilege).
链接:15.7.7.1 SHOW BINARY LOG STATUS Statement

mysql> SHOW BINARY LOG STATUS\G
*************************** 1. row ***************************
             File: source-bin.000002
         Position: 1307
     Binlog_Do_DB: test
 Binlog_Ignore_DB: manual, mysql
Executed_Gtid_Set: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5
1 row in set (0.00 sec)

\G 是格式化输出

从主库导出数据并导入从库

主库数据导出

mysqldump -h10.XX.XX.XX  -uuser_name -p database_name> yourbase_all.sql

导入数据至从库

mysql -h10.xx.xx.xx -uyouruser -p < yourbase_all.sql

三、从库修改

从库配置文件修改

server-id = 2   //和主库的server-id  不一样就可以
replicate-do-db = 要复制的库名
read_only = 1

从库启动复制

需要修改成自己的信息

CHANGE REPLICATION 
SOURCE TO SOURCE_HOST='主库ip',
SOURCE_USER='主库上复制用户',
SOURCE_PASSWORD='主库上复制用户的密码',
SOURCE_PORT=主库的端口, SOURCE_LOG_FILE='上面查询到的bin_log文件名 File的值', 
SOURCE_LOG_POS=上面查询到的bin_log文件位置 Position的值 是个数字, 
SOURCE_SSL=1;

开启复制:

 start replica;

查看状态:

show replica status \G

不能有错误,如有错误使用以下命令查看错误详情:

select * from performance_schema.replication_applier_status_by_worker \G

修复错误可能需要重新执行 CHANGE REPLICATION 命令。

停止复制:

stop replica;

测试

解锁主库:

 unlock tables;

测试

在主库增加或者删除数据,然后查看从库是否保持一致。

### 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、付费专栏及课程。

余额充值