主机操作

修改配置文件

通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf

#master端的id号,不唯一即可
server-id=1
#同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
log-bin=mysql-bin
#指定同步的数据库,如果不写,默认是同步所有数据库
binlog-do-db=数据库
#指定不同步的数据库  
binlog-ignore-db=mysql
#binlog日志的保留时间
expire_logs_days=7
#指定binlog日志的格式
#binlog_format=ROW
binlog_format=MIXED
#8.4版本需要启用本插件
#https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html
mysql_native_password=ON

重启服务

systemctl restart mysql

创建用户并授权

CREATE USER 'slave'@'从数据库IP地址' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'从数据库IP地址';
FLUSH PRIVILEGES;

查询主服务器当前二进制日志名和偏移量

#SHOW MASTER STATUS;
#8.4版本
SHOW BINARY LOG STATUS;

记下 FilePosition的值,稍后在备份服务器配置时将需要它们

复制主服务器数据库到从服务器上

从机操作

修改配置文件

#slave端的id号,不唯一即可
server-id=2
#同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
log-bin=mysql-bin
#复制哪个库,可以不用填写
replicate-do-db=db1
replicate-do-db=db2
#不复制哪个库
replicate-ignore-db=mysql,information_schema,performance_schema
#这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止,保证数据写入的一致性
master_info_repository=table
relay_log_info_repository=table

重启服务

systemctl restart mysql

配置备份服务器连接到主服务器

CHANGE MASTER TO MASTER_HOST='主数据库IP地址',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='binlog.000005',
MASTER_LOG_POS=1240; 

注:MASTER_LOG_FILE和MASTER_LOG_POS的值为master节点中执行show master status查询到的信息

启动备份服务器上的数据同步进程

start slave;

重新启动

STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='主数据库IP地址',
MASTER_PORT=3306, 
MASTER_USER='slave', 
MASTER_PASSWORD='123456',
MASTER_AUTO_POSITION=1;
START SLAVE;

查看slave状态

show slave status\G;

确保 Slave_IO_RunningSlave_SQL_Running的值为 Yes,表明主备同步正在运行。

参考文章

mysql 主备模式搭建过程
MySQL主备操作以及原理详解
MySQL高可用之主备同步

ps

8.4版本相关命令

#https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-0.html
START SLAVE (START REPLICA); 
STOP SLAVE (STOP REPLICA); 
SHOW SLAVE STATUS (SHOW REPLICA STATUS); 
SHOW SLAVE HOSTS (SHOW REPLICAS); 
RESET SLAVE (RESET REPLICA); 
CHANGE MASTER TO (CHANGE REPLICATION SOURCE TO); 
RESET MASTER (RESET BINARY LOGS AND GTIDS); 
SHOW MASTER STATUS (SHOW BINARY LOG STATUS); 
PURGE MASTER LOGS (PURGE BINARY LOGS);
SHOW MASTER LOGS (SHOW BINARY LOGS);

标题:MySQL主备设置
作者:xingzhegu
地址:https://www.fxg.life/articles/2023/12/20/1703035317885.html