
MySQL作为一款开源的关系型数据库管理系统,以其高性能、灵活性和广泛的支持社区,成为众多企业的首选
然而,单一MySQL实例在面对硬件故障、软件错误或自然灾害时,往往难以保证数据不丢失和服务不中断
因此,实施MySQL双机部署,构建高可用数据库架构,成为提升系统稳定性的关键措施
本文将详细介绍如何快速高效地部署MySQL双机架构,确保您的业务能够持续稳定运行
一、双机部署概述 MySQL双机部署,即主从复制(Master-Slave Replication)或主主复制(Master-Master Replication),通过数据同步机制,在一台主服务器(Master)和一台或多台从服务器(Slave)之间保持数据一致性
主从复制主要用于读写分离,提高读性能;而主主复制则用于实现更高级别的可用性和灾难恢复能力,但配置和维护相对复杂
-主从复制:数据从主服务器写入,自动复制到从服务器,从服务器主要用于读操作,减轻主服务器压力
-主主复制:两台服务器互为主从,任何一台都可以读写,但需要解决数据冲突和自动故障切换问题
本文将以主从复制为例,介绍MySQL双机快速部署步骤,因其配置相对简单且适用于大多数应用场景
二、环境准备 在进行MySQL双机部署前,确保已具备以下条件: 1.两台物理服务器或虚拟机:配置相当,操作系统相同(如CentOS7/8)
2.网络互通:两台服务器之间网络延迟低,带宽充足
3.防火墙配置:开放MySQL默认端口3306,以及可能的复制通信端口
4.域名解析:为两台服务器配置静态IP,并在DNS或`/etc/hosts`中互相解析对方主机名
5.用户权限:确保有足够的权限在两台服务器上安装软件、配置服务
三、安装MySQL 1.更新系统并安装依赖 bash sudo yum update -y sudo yum install -y wget gcc-c++ ncurses-devel cmake make perl 2.下载并编译安装MySQL(或直接使用YUM/APT包管理器安装,此处展示编译安装以获取最新版本) bash wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm sudo yum install -y mysql-community-server 或者,选择编译安装: bash wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.xx.tar.gz tar -zxvf mysql-8.0.xx.tar.gz cd mysql-8.0.xx mkdir build && cd build cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost make && sudo make install 3.初始化数据库 bash sudo mysqld --initialize --user=mysql 4.启动MySQL服务并设置开机自启 bash sudo systemctl start mysqld sudo systemctl enable mysqld 5.获取临时root密码 在MySQL初始化日志中查找`temporary password`,使用此密码首次登录MySQL
四、配置主服务器 1.登录MySQL bash mysql -u root -p 2.修改root密码并创建复制用户 sql ALTER USER root@localhost IDENTIFIED BY NewStrongPassword!; CREATE USER repl@% IDENTIFIED BY ReplicationPassword; GRANT REPLICATION SLAVE ON. TO repl@%; FLUSH PRIVILEGES; 3.编辑MySQL配置文件 在`/etc/my.cnf`或`/etc/mysql/my.cnf`中添加或修改以下内容: ini 【mysqld】 server-id =1 log-bin = mysql-bin binlog-do-db = yourdatabase 仅复制指定数据库,可选 4.重启MySQL服务 bash sudo systemctl restart mysqld 5.锁定表并获取二进制日志位置 sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; 记录下`File`和`Position`值,稍后用于从服务器配置
6.导出数据库 bash mysqldump -u root -p --all-databases --master-data=2 > all_databases.sql 解锁表: sql UNLOCK TABLES; 五、配置从服务器 1.安装MySQL(步骤同上) 2.导入主服务器数据库备份 bash mysql -u root -p < all_databases.sql 3.编辑MySQL配置文件 ini 【mysqld】 server-id =2 relay-log = mysql-relay-bin read-only =1 4.重启MySQL服务 bash sudo systemctl restart mysqld 5.配置复制 在主服务器获取的二进制日志信息基础上,在从服务器上执行: sql CHANGE MASTER TO MASTER_HOST=主服务器IP, MASTER_USER=repl, MASTER_PASSWORD=ReplicationPassword, MASTER_LOG_FILE=mysql-bin.000001, 根据SHOW MASTER STATUS输出替换 MASTER_LOG_POS=123456; 根据SHOW MASTER STATUS输出替换 6.启动复制进程 sql START SLAVE; 7.检查复制状态 sql SHOW SLAVE STATUS G; 确保`Slave_IO_Running`和`Slave_SQL_Running`均为`Yes`
六、验证与测试 1.在主服务器上创建测试表并插入数据 sql USE yourdatabase; CREATE TABLE test(id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(100)); INSERT INTO test(data) VALUES(Hello, Replication!); 2.在从服务器上查询数据 sql USE yourdatabase; SELECTFROM test; 应能看
如何在MySQL数据库中高效上传文件:实用指南
MySQL双机快速部署实战指南
易语言实战:中转连接MySQL技巧
MySQL JDBC连接数据库教程
MySQL新建数据库,设置字符集指南
MySQL中记录为空的表示方法
MySQL中使用汉语作为字段名的技巧
如何在MySQL数据库中高效上传文件:实用指南
易语言实战:中转连接MySQL技巧
MySQL JDBC连接数据库教程
MySQL新建数据库,设置字符集指南
MySQL中记录为空的表示方法
MySQL中使用汉语作为字段名的技巧
MySQL精准锁行机制解析
MySQL用户名密码设置全攻略
MySQL数据库Binlog解析与应用
如何轻松获取MySQL数据库中的最新一条数据
MySQL数据库密码遗忘更新指南
C实现MySQL数据插入技巧