
为了提高数据库的可用性、负载均衡和容灾能力,搭建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主从复制架构有所帮助
word损坏?快速找到备份路径救急
Linux下MySQL主从搭建全攻略
MySQL查询:轻松显示数据库字段技巧
Excel保存技巧:隐藏备份文件夹
MySQL数据导出至Excel实用指南
MySQL添加数据时中文识别问题解决方案
PDF保存技巧:自动备份文件防丢失
MySQL查询:轻松显示数据库字段技巧
MySQL数据导出至Excel实用指南
MySQL添加数据时中文识别问题解决方案
老段推荐:高效MySQL下载指南
国产MySQL名录精选指南
MySQL技巧:轻松获取表列名
MySQL远程连接失败?排查与解决方案指南
学生指南:轻松安装MySQL数据库
MySQL仅剩Warning表,警报还是预警?
MySQL:检查数据表是否存在技巧
MySQL数据库:轻松掌握更改存储引擎的方法
Ubuntu上MySQL服务启动失败解决方案