当前位置: 代码网 > it编程>数据库>Mysql > Mysql主从复制部署过程解读

Mysql主从复制部署过程解读

2026年01月27日 Mysql 我要评论
mysql 主从复制是将主数据库的变更自动同步到从数据库的过程,常用语读写分离、高可用性和数据备份。gtid(全局事务标识符)是 mysql 5.6 引入的特性,用于唯一标识每一个事务。在主从复制中使

mysql 主从复制是将主数据库的变更自动同步到从数据库的过程,常用语读写分离、高可用性和数据备份。

gtid(全局事务标识符)是 mysql 5.6 引入的特性,用于唯一标识每一个事务。

在主从复制中使用 gtid 可以简化复制配置,提高可靠性,避免传统复制中常见的位点偏移问题。

1.环境准备

确保主从服务器已安装相同版本的 mysql,并能通过网络互相访问。

# 检查 mysql 版本
mysql -v

2.配置主服务器

(1)编辑主服务器的配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)

[mysqld]
server-id = 1                 # 唯一标识,建议使用ip地址的最后一个数
log-bin = mysql-bin           # 启用二进制日志
gtid_mode = on
enforce_gtid_consistency = on
log_slave_updates = on
binlog_format = row

(2)重启 mysql 服务并验证配置

sudo systemctl restart mysql
mysql -e "show variables like 'gtid_mode';"  # 应显示 on
mysql -e "show variables like 'enforce_gtid_consistency';"  # 应显示 on

(3)创建复制用户

create user 'repl_user'@'%' identified by 'password';
grant replication slave on *.* to 'repl_user'@'%';
flush privileges;

3.配置从服务器

(1)编辑从服务器的配置文件

[mysqld]
server-id = 2                 # 唯一标识,不能与主库重复
log-bin = mysql-bin           # 启用二进制日志
read-only = 1                 # 从库设置为只读(可选)
gtid_mode = on
enforce_gtid_consistency = on
log_slave_updates = on
binlog_format = row

(2)重启 mysql 服务

sudo systemctl restart mysql

(3)连接从服务器到主服务器

在从服务器上执行以下命令,配置主从关系:
change master to
master_host='主服务器ip',
master_user='repl_user',
master_password='password',
master_auto_position = 1;  # 使用 gtid 自动定位

start slave;

show slave status\g;    #检查 io 和 sql 线程状态,确认从服务器是否落后于主服务器
检查以下两个状态是否均为 yes:
slave_io_running: yes
slave_sql_running: yes
seconds_behind_master: 0

4.其他配置

(1)mysql 启用安全连接(mysql 8.0)

# step 1 在主库和从库生成 ssl 证书
# 在主库和从库分别执行(使用相同的 ca)
mkdir /etc/mysql/ssl && cd /etc/mysql/ssl
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-csr.pem
openssl x509 -req -in server-csr.pem -days 3650 -ca ca.pem -cakey ca-key.pem -set_serial 01 -out server-cert.pem

# step 2 配置主库 my.cnf
[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

# step 3 配置从库 my.cnf
[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

# step 4 重启主从库服务
systemctl restart mysql

# step 5 创建用户
# 创建使用旧认证方式的复制用户
-- 在主库执行
create user 'repl_user'@'%' identified with mysql_native_password by 'password';
grant replication slave on *.* to 'repl_user'@'%';
flush privileges;

# 修改 mysql 用户认证方式
alter user 'yang'@'%' identified with mysql_native_password by 'your_password';
flush privileges;

(2)禁用主库的 ssl 要求

[mysqld]
require_secure_transport = off  # 关闭强制 ssl

(3) 传统方式配置主从

-- 从库执行
change master to
  master_host='主库ip',
  master_user='repl_user',
  master_password='password',
  master_port=3306,
  master_log_file='主库binlog文件',
  master_log_pos=主库binlog位置;
start slave;

(4)其他命令

stop slave;        #停止复制从库
reset slave;        #删除从库配置
reset master;        #删除主库配置
show master status;    #查询当前主库的 binlog 文件和位置

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com