Linux下MySQL主从搭建全攻略
linux中mysql如何搭建主从

首页 2025-06-12 20:46:04



Linux中MySQL如何搭建主从架构 在当今的数据库管理领域,MySQL作为一款开源的关系型数据库管理系统,凭借其高性能、灵活性和广泛的应用支持,成为了众多企业和开发者的首选

    为了提高数据库的可用性、负载均衡和容灾能力,搭建MySQL的主从复制架构显得尤为重要

    本文将详细介绍如何在Linux环境下搭建MySQL的主从复制架构

     一、前期准备 在开始搭建之前,请确保以下几点: 1.系统环境:两台或多台Linux服务器,建议操作系统版本一致,以减少兼容性问题

     2.MySQL版本:确保主从数据库的版本一致,以避免版本差异带来的兼容性问题

     3.网络连通性:主从数据库服务器之间网络互通,确保能够相互访问

     4.数据一致性:在搭建主从复制之前,确保主数据库的数据是从数据库数据的完整副本,或者从数据库为空,准备从主数据库进行初始数据同步

     二、安装MySQL 首先,需要在所有服务器上安装MySQL数据库

    安装方法根据是否有外网连接而有所不同: 在线安装 对于能够访问外网的服务器,可以使用包管理器进行在线安装

    以CentOS7为例: bash wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm sudo yum update sudo yum install mysql-server sudo systemctl start mysqld 离线安装 对于无法访问外网的服务器,需要提前下载MySQL的安装包并进行离线安装

    假设已经下载了MySQL的RPM安装包,并放置在`/opt/mysql/`目录下: bash cd /opt/mysql/ tar -xvf ./mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar sudo rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm sudo rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm sudo rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm sudo rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm sudo rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm 安装完成后,启动MySQL服务: bash sudo systemctl start mysqld 三、安全配置与初始化 MySQL5.7及以后版本在安装后会为root用户生成一个随机密码,该密码存储在`/var/log/mysqld.log`文件中

    需要找到这个密码并登录MySQL进行密码修改: bash grep password /var/log/mysqld.log mysql -u root -p mysql> ALTER USER USER() IDENTIFIED BY Mysql.123456; mysql> GRANT ALL PRIVILEGES ON- . TO root@% IDENTIFIED BY Mysql.123456; mysql> FLUSH PRIVILEGES; 四、主数据库配置 在主数据库服务器上,需要修改MySQL的配置文件`/etc/my.cnf`,添加或修改以下内容: ini 【mysqld】 server-id=1 设置唯一的服务器ID log-bin=mysql-bin启用二进制日志 binlog-format=MIXED 设置二进制日志格式 sync_binlog=1 确保二进制日志同步到磁盘 expire_logs_days=7 设置二进制日志自动清理天数 binlog-do-db=your_database 指定需要复制的数据库(可选) binlog-ignore-db=mysql 不给从机同步的库 binlog-ignore-db=information_schema binlog-ignore-db=performance_schema 配置完成后,重启MySQL服务使配置生效: bash sudo systemctl restart mysqld 在主数据库上创建一个用于复制的用户,并授予相应的权限: sql CREATE USER slave_user@% IDENTIFIED BY slave_password; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON. TO slave_user@%; FLUSH PRIVILEGES; 然后,锁定主数据库表,以获取当前的二进制日志文件和位置: sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; 记下输出的`File`和`Position`值,稍后在从数据库配置时会用到

    此时,主数据库处于锁定状态,不允许写入操作

     五、数据同步 在主数据库锁定期间,使用`mysqldump`工具导出主数据库的数据,并通过`scp`命令复制到从数据库服务器上: bash /usr/local/mysql/bin/mysqldump -uroot -p your_database > /opt/your_database.sql scp /opt/your_database.sql root@slave_ip:/opt/ 在从数据库服务器上,导入导出的SQL文件: bash mysql -uroot -p your_database < /opt/your_database.sql 完成数据导入后,解锁主数据库的写操作: sql UNLOCK TABLES; 六、从数据库配置 在从数据库服务器上,同样需要修改MySQL的配置文件`/etc/my.cnf`,添加或修改以下内容: ini 【mysqld】 server-id=2 设置唯一的服务器ID(与主数据库不同) relay-log=relay-bin 设置中继日志 read-only=1 设置从数据库为只读模式 replicate-ignore-db=mysql replicate-ignore-db=information_schema replicate-ignore-db=performance_schema 配置完成后,重启MySQL服务: bash sudo systemctl restart mysqld 在从数据库上配置复制信息,指向主数据库: sql CHANGE MASTER TO MASTER_HOST=master_ip, MASTER_USER=slave_user, MASTER_PASSWORD=slave_password, MASTER_LOG_FILE=mysql-bin.xxxxxx, 使用之前SHOW MASTER STATUS得到的File值 MASTER_LOG_POS=xxxxxx; 使用之前SHOW MASTER STATUS得到的Position值 启动从数据库的复制进程: sql START SLAVE; 检查复制状态: sql SHOW SLAVE STATUSG; 确保`Slave_IO_Running`和`Slave_SQL_Running`的状态都为`Yes`,表示复制配置成功

     七、测试与验证 在主数据库上进行一些数据操作,如插入、更新或删除记录,然后在从数据库上检查这些操作是否已同步

    如果同步成功,说明MySQL主从复制架构搭建完成

     八、总结 通过本文的介绍,我们详细了解了如何在Linux环境下搭建MySQL的主从复制架构

    从安装MySQL、安全配置与初始化,到主从数据库的配置与数据同步,每一步都至关重要

    搭建完成后,还需要进行充分的测试与验证,以确保主从复制的稳定性和可靠性

    希望本文能对大家在实际应用中搭建MySQL主从复制架构有所帮助

    

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道