MySQL主从数据库搭建的实现

 更新时间:2025年06月13日 09:09:40   作者:明月惊雀  
本文主要介绍了MySQL8.0主从复制搭建步骤,包括配置文件修改、复制用户权限设置、主库状态查询、SSL证书生成及数据同步,具有一定的参考价值,感兴趣的可以了解一下

学习了如何搭建MySQL主从数据库,为加深印象,写了这篇博客作为总结。本篇文章使用的是MySQL8.0,主库使用Windows操作系统,从库使用Linux。

1. 数据库配置

在主库对MySQL进行配置。如果是Linux,需配置my.cnf或mysql.cnf,如果是Windows,需在C:\ProgramData\MySQL\MySQL Server 8.0配置my.ini。
在配置文件的[mysqld]下添加如下配置:

server-id = 1	#如已经有该配置,则不用再次添加。和从库的server-id不同即可。
log-bin = mysql-bin
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON

从库同样在配置文件里添加以下内容:

server-id = 2
relay-log = mysql-relay-bin
read_only = 1
gtid_mode = ON
enforce_gtid_consistency = ON
#跳过 mysql 系统库的复制
replicate-ignore-db = mysql
replicate-ignore-db = sys
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema

配置完成后重启MySQL服务

2. 创建复制用户

创建并分配用户权限

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'StrongPassword!';
GRANT REPLICATION SLAVE, REPLICATION CLIENT, REPLICATION_APPLIER 
ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;

修改用户认证方式

ALTER USER 'repl_user'@'%' 
IDENTIFIED WITH mysql_native_password 
BY 'StrongPassword!';
FLUSH PRIVILEGES;

注:认证方式修改只需在主库进行(从库连接主库时使用)

3. 主库状态查询

主库登录MySQL,执行SHOW MASTER STATUS;查询并记录输出中的 File 和 Position,稍后从库需要用到。

4.ssl配置

在C:\ProgramData\MySQL\MySQL Server 8.0\Data查询是否有ca.pem、ca-key.pem、server-key.pem和server-cert-pem。如果没有,需要使用openssl进行生成。
在主库配置文件的[mysqld]下添加以下内容:

ssl-ca = ca.pem
ssl-cert = server-cert.pem
ssl-key = server-key.pem

5. 导入数据库,开启复制线程

在主库登录MySQL,执行mysqldump -u root -p --single-transaction --master-data=2 --routines --triggers --all-databases > full_backup.sql导出数据库文件。发送到Linux虚拟机后,执行mysql -u root -p < full_backup.sql进行导入。

6. 从库配置

在linux登录MySQL,执行以下命令:

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST = '192.168.8.100',		#填写主库的实际ip,建议使用固定ip
  SOURCE_USER = 'repl_user',
  SOURCE_PASSWORD = 'StrongPassword!',
  SOURCE_LOG_FILE = 'mysql-bin.000002',		#第三步查询到的file
  SOURCE_LOG_POS = 1330,		#第三步查询到的position
  SOURCE_SSL = 1;	#启用ssl

导入完成,执行START REPLICA;开启复制线程即可。
开启后可执行SHOW REPLICA STATUS\G;查询从库配置的具体状态。正常情况下应该没有error信息,Replica_IO_Running和Replica_SQL_Running都是Yes。

到此这篇关于MySQL主从数据库搭建的实现的文章就介绍到这了,更多相关MySQL主从数据库搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql如何修改表中某个数据

    mysql如何修改表中某个数据

    这篇文章主要介绍了mysql如何修改表中某个数据的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySQL 原理优化之Group By的优化技巧

    MySQL 原理优化之Group By的优化技巧

    这篇文章主要介绍了MySQL 原理优化之Group By的优化技巧,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Mysql中如何删除某个字段的最后四个字符

    Mysql中如何删除某个字段的最后四个字符

    这篇文章主要介绍了Mysql中如何删除某个字段的最后四个字符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • MySQL数据库 JDBC 编程(Java 连接 MySQL)

    MySQL数据库 JDBC 编程(Java 连接 MySQL)

    这篇文章主要介绍了MySQL数据库 JDBC 编程Java 连接 MySQL,在 Java 中,这样的封装就是由 Java 标准库来完成的,封装出了一套统一的数据库 API 称为 JDBC,下面来看文章的详细介绍吧
    2021-12-12
  • mysql8.0.21下载安装详细教程

    mysql8.0.21下载安装详细教程

    这篇文章主要介绍了mysql8.0.21下载安装详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Mysql学习心得之插入、更新、删除记录

    Mysql学习心得之插入、更新、删除记录

    在程序开发过程中,离不开数据库,数据库离不开增删改查操作,下面小编把我对mysql学习之插入、更新、删除记录心得总结分享给大家,需要的朋友可以参考下
    2015-08-08
  • 你需要理解的关于MySQL的锁知识

    你需要理解的关于MySQL的锁知识

    锁是MySQL里面最难理解的知识,但是又无处不在。一开始接触锁的时候,感觉被各种锁类型和名词弄得晕头转向,下面小编来简单介绍一下
    2019-05-05
  • mysql中的utf8与utf8mb4存储及区别

    mysql中的utf8与utf8mb4存储及区别

    本文主要介绍了mysql中的utf8与utf8mb4存储及区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • MySQL和Redis实现二级缓存的方法详解

    MySQL和Redis实现二级缓存的方法详解

    这篇文章主要给大家介绍了关于MySQL和Redis实现二级缓存的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • 安装mysql noinstall zip版

    安装mysql noinstall zip版

    没用过mysql, 这几天折腾django ,发现连接mssql好像还是有些小bug,为了防止日后项目有些莫名的db故障,故选择django推荐之一的mysql
    2011-12-12

最新评论