CentOS MySQL8实现主从复制

该文详细介绍了如何配置MySQL的主从复制,包括修改主库的my.cnf文件设置server-id,创建并授权replicationslave用户,查看master状态记录File和Position。接着在从库上修改my.cnf,设置不同的UUID,配置changemaster命令,并启动slave服务进行数据同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主库配置

1、修改主库配置

vi /etc/my.cnf

在[mysqld]标签下添加如下内容,server-id可自己指定
在这里插入图片描述
2、重启MySQL服务:

systemctl restart mysqld

3、进入MySQL数据库执行如下语句,用户名密码自行更改:

create user 'ikun'@'%' identified by 'root@123456';
grant replication slave on *.* to 'ikun'@'%' with grant option;

4、查看master状态,记录下File及Position(后面要使用)show master status;记录下之后不要对主库进行修改;
在这里插入图片描述

从库配置

1、修改my.cnf文件:vi /etc/my.cnf
在这里插入图片描述
2、修改UUID(不是必须):vi auto.cnf,将uuid修改为与主库不同的值即可
3、重启MySQL服务:

systemctl restart mysqld

4、进入MySQL,输入如下命令:

change master to master_host='192.168.118.135',master_user='ikun',master_password='root@123456',master_log_file='mysql-bin.000001',master_log_pos=708,get_master_public_key=1;

其中host,user,password,log_file,log_pos均需根据自己的实际情况进行修改。 master_log_file,master_log_pos的值为 主库配置第四步 中查看到的值;

5、执行start slave;命令,之后查询slave状态show slave status\G;最后两项均为yes即可
在这里插入图片描述
6、完成后进行测试,对主库进行任意修改,观察从库也会修改。

### 设置 CentOS 7 上 MySQL 8 主从复制 #### 准备工作 为了确保主从复制正常运行,在开始之前需确认两台服务器已正确配置网络并能互相解析主机名。 ```bash cat >> /etc/hosts << EOF 192.168.6.176 mysql-m 192.168.6.177 mysql-s EOF ``` 此命令用于向 `/etc/hosts` 文件追加 IP 地址与主机名称映射关系,以便于后续通过主机名访问各节点[^1]。 #### 安装 MySQL 8 在主库 `mysql-m` 和从库 `mysql-s` 上均执行如下命令来安装 MySQL: ```bash yum install -y https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm yum-config-manager --disable mysql80-community yum-config-manager --enable mysql80-community yum install -y mysql-server ``` 上述脚本首先添加官方源仓库,接着启用特定版本通道最后完成软件包下载及安装过程。 #### 配置主库 (Master) 编辑主库配置文件 `/etc/my.cnf.d/server.cnf` 或者 `/etc/my.cnf` 添加以下内容: ```ini server-id=1 log-bin=mysql-bin binlog-format=row expire_logs_days=10 max_binlog_size=100M innodb_flush_log_at_trx_commit=1 sync_binlog=1 ``` 这些参数定义了唯一的服务ID、开启二进制日志功能以及优化性能相关选项。保存更改后重启服务使新设置生效[^3]: ```bash systemctl restart mysqld ``` 初始化数据库并获取临时密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword!'; FLUSH PRIVILEGES; CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'slavepass'; FLUSH PRIVILEGES; ``` 创建同步账户供从库连接验证身份之用,并赋予相应权限范围内的操作许可。 #### 配置从库 (Slave) 同样地调整从库端口对应的 my.cnf 参数设定(server-id 不同): ```ini server-id=2 relay-log=mysql-relay-bin read-only=ON ``` 重载守护进程加载最新改动后的配置项: ```bash systemctl restart mysqld ``` 登录 MySQL 控制台指定上游 master 的地址信息连通链路: ```sql CHANGE MASTER TO MASTER_HOST='192.168.6.176', MASTER_USER='repl_user', MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=<position>; START SLAVE; SHOW SLAVE STATUS\G; ``` 此处需要注意的是 `<position>` 应该替换为主机当前 binlog 日志位置值;可以通过 SHOW MASTER STATUS 查询得到准确数值[^4]。 #### 测试数据同步效果 尝试往测试表内插入几条记录观察是否能够自动传播至 slave 节点上。 #### 处理常见问题 当遇到由于克隆虚拟机引起 UUID 冲突的情况时,可以按照文档说明修改其中一个实例下的全局变量 server_uuid 来解决冲突现象[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值