linux中mysql主从搭建

linux中mysql主从搭建


前言

由于工作中需要搭建mysql主从数据库这里做一个过程记录和分享欢迎大家指正。


一、mysql安装

linux中安装mysql库,包括低版本升级到高版本参照下面连接这里就不做详细分享。
mysql8.0版本安装: https://blog.youkuaiyun.com/Jerry_zhy/article/details/135703594
mysql8.0版本升级: https://blog.youkuaiyun.com/Jerry_zhy/article/details/135630769

二、mysql主从配置

1.修改配置文件

这里需要台服务器各部署mysql库,前面我已经安装完成直接进行主从配置。
分别进入到mysql的配置文件中,进行编辑.

vim /etc/my.cnf 

在配置文件my.cnf中的mysqld下面添加:

server_id=1#主
log_bin
<think>首先,用户的问题是:“我想在Linux系统中配置MySQL主从复制 请问Linux MySQL 主从复制 配置步骤”。我需要基于系统级指令来回答。 系统级指令: 1. 所有行内数学表达式使用$...$格式。但在这个问题中,可能没有数学表达式,所以我可以忽略。 2. 独立公式使用$$...$$格式并单独成段。同样,这里可能没有公式。 3. LaTeX语法正确。确保任何数学内容正确格式化。 4. 使用中文回答。整个回答必须用中文。 5. 生成相关问题。在回答后,添加相关问题部分。 6. 回答中引用的段落末尾自然地添加引用标识,例如[^1]。我需要引用提供的参考内容。 提供的引用: - [^1]: MySQL主从复制配置。重启mysql服务 systemctl restart mysql 等。 - [^2]: linux搭建mysql主从复制(一主一从)。包括配置步骤。 - [^3]: 并行复制---解决从库复制延迟的问题。包括binlog日志和主从复制设置。 - [^4]: linux mysql主从复制配置。CHANGE MASTER TO命令。 - [^5]: 【LinuxMySQL主从复制。使用Docker运行MySQL实例。 用户真正的需求是配置MySQL主从复制在Linux系统中。我需要提供清晰的步骤。 回答结构: - 结构清晰,逐步解决问题。 - 保证回答真实可靠。基于标准MySQL主从复制配置过程。 - 引用参考内容:在适当的地方添加引用标识。 步骤概述: 1. 准备环境:确保两台Linux机器(主和从),MySQL安装并运行。 2. 配置主服务器(Master)。 3. 配置从服务器(Slave)。 4. 启动主从复制。 5. 验证配置。 基于引用: - 引用[^1]提到修改配置文件、重启MySQL。 - 引用[^2]提到配置主从同步命令:CHANGE MASTER TO。 - 引用[^3]提到关闭防火墙、SELinux,确保时间一致。 - 引用[^4]提供CHANGE MASTER TO语法。 - 引用[^5]提到使用Docker,但用户没有指定Docker,所以我假设标准安装。 用户没有指定使用Docker,所以我将提供基于标准MySQL安装的步骤。 关键步骤: - 主服务器:修改my.cnf,设置server-id,启用binlog,创建复制用户。 - 从服务器:修改my.cnf,设置server-id。 - 在主服务器上获取binlog位置。 - 在从服务器上运行CHANGE MASTER TO。 - 启动从服务器复制。 引用标识:在步骤中自然地添加引用。例如,当提到修改配置文件时,引用[^1];当提到CHANGE MASTER TO时,引用[^2]或[^4]。 最后,生成相关问题。 完整回答结构: 1. 介绍:简要说明主从复制的目的。 2. 前提条件:列出所需环境。 3. 详细步骤: a. 配置主服务器。 b. 配置从服务器。 c. 启动复制。 4. 验证步骤。 5. 相关问题。 用中文写。</think>### Linux MySQL 主从复制配置步骤 在Linux系统中配置MySQL主从复制,可以实现数据备份、负载均衡和高可用性。主服务器(Master)处理写操作,从服务器(Slave)复制数据并处理读操作。以下步骤基于标准MySQL 8.0+环境(CentOS/Ubuntu系统),确保操作真实可靠。配置前,请确保两台Linux机器(主和从)已安装MySQL服务,网络互通,时间同步(使用NTP服务),并关闭防火墙和SELinux以提高兼容性[^3]: ```bash # 关闭防火墙和SELinux(两台机器均执行) systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ``` #### **步骤 1: 配置主服务器(Master)** 1. **修改MySQL配置文件** 编辑主服务器的`my.cnf`文件(通常位于`/etc/mysql/mysql.conf.d/mysqld.cnf`或`/etc/my.cnf`),添加以下配置: ```ini [mysqld] server-id = 1 # 唯一ID,主从不能重复 log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志 binlog_format = ROW # 推荐使用ROW格式 binlog_do_db = your_database_name # 可选:指定要复制的数据库,默认为所有 ``` 保存文件后,重启MySQL服务使配置生效: ```bash systemctl restart mysql ``` 2. **创建复制用户** 登录MySQL主服务器,创建一个专用于复制的用户,并授予权限: ```sql mysql -u root -p CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password'; # 替换为安全密码 GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` 3. **获取主服务器状态** 记录二进制日志文件名和位置(后续从服务器需要): ```sql SHOW MASTER STATUS; ``` 输出示例: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 154 | your_database | | +------------------+----------+--------------+------------------+ ``` 记下`File`和`Position`值(如`mysql-bin.000001`和`154`)[^1]。 #### **步骤 2: 配置从服务器(Slave)** 1. **修改MySQL配置文件** 编辑从服务器的`my.cnf`文件,设置唯一`server-id`: ```ini [mysqld] server-id = 2 # 不同于主服务器 relay-log = /var/log/mysql/mysql-relay-bin.log # 启用中继日志 read_only = ON # 可选:设置从服务器只读 ``` 保存文件后,重启MySQL服务: ```bash systemctl restart mysql ``` 2. **配置主从同步** 登录MySQL从服务器,使用`CHANGE MASTER TO`命令指定主服务器信息: ```sql mysql -u root -p CHANGE MASTER TO MASTER_HOST = '192.168.10.106', # 替换为主服务器IP MASTER_USER = 'repl_user', MASTER_PASSWORD = 'your_password', MASTER_LOG_FILE = 'mysql-bin.000001', # 使用步骤1获取的值 MASTER_LOG_POS = 154; ``` 此命令配置从服务器连接到主服务器并开始复制[^2][^4]。 #### **步骤 3: 启动并验证主从复制** 1. **启动从服务器复制** 在从服务器上执行: ```sql START SLAVE; ``` 2. **检查复制状态** 运行以下命令查看复制是否成功: ```sql SHOW SLAVE STATUS\G; ``` 关键输出项: - `Slave_IO_Running`: 应为`Yes`(I/O线程正常)。 - `Slave_SQL_Running`: 应为`Yes`(SQL线程正常)。 - `Seconds_Behind_Master`: 应为`0`或较小值(无延迟)。 如果出现错误(如`Last_IO_Error`),检查网络、用户权限或日志文件路径[^2]。 3. **测试复制功能** 在主服务器上创建测试数据: ```sql CREATE DATABASE test_db; USE test_db; CREATE TABLE test_table (id INT); INSERT INTO test_table VALUES (1); ``` 在从服务器上验证数据是否同步: ```sql SELECT * FROM test_db.test_table; ``` 如果输出包含`id=1`的记录,说明复制成功。 #### **常见问题解决** - **复制延迟**:如果`Seconds_Behind_Master`较大,启用并行复制(在`my.cnf`添加`slave_parallel_workers=4`)[^3]。 - **连接失败**:确保主从防火墙关闭,MySQL端口(3306)开放,复制用户权限正确。 - **配置错误**:使用`STOP SLAVE;`和`RESET SLAVE;`重置配置后重试。 通过以上步骤,您已成功配置MySQL主从复制。此过程基于标准MySQL文档和实践经验,确保数据一致性[^1][^2][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值