MySQL作为一款开源的关系型数据库管理系统,广泛应用于各种业务场景中
为了提高数据库的可靠性和读写性能,许多企业选择搭建MySQL主从复制环境
本文将详细介绍如何在Linux系统下搭建MySQL主从复制环境,确保每一步都清晰明了,让您轻松实现数据库的高可用性和负载均衡
一、前期准备 在开始搭建之前,请确保您已经具备以下条件: 1.两台Linux服务器:一台作为主服务器(Master),另一台作为从服务器(Slave)
服务器可以是虚拟机或物理机,但建议配置相近以保证性能均衡
2.Linux操作系统:本文将以CentOS 7为例进行说明,但其他Linux发行版如Ubuntu等步骤大同小异
3.网络互通:确保主从服务器之间网络互通,能够通过IP地址相互访问
4.MySQL安装包:提前下载好MySQL或MariaDB的安装包,本文将以MySQL为例
二、安装MySQL 在线安装MySQL 对于能够访问外网的服务器,可以选择在线安装MySQL
以下是安装步骤: 1.导入MySQL社区版仓库: bash wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm 2.更新系统并安装MySQL: bash sudo yum update sudo yum install mysql-server 3.启动MySQL服务: bash sudo systemctl start mysqld 离线安装MySQL 对于无法访问外网的服务器,可以选择离线安装MySQL
以下是安装步骤: 1.下载MySQL安装包:从MySQL官方网站下载适合您Linux版本的安装包,并上传到服务器指定目录,如`/opt/mysql/`
2.卸载系统自带的MariaDB(如有): bash rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs-xxx 3.解压并安装MySQL: bash cd /opt/mysql/ tar -xvf ./mysql-xxx.tar rpm -ivh mysql-community-common-xxx.rpm rpm -ivh mysql-community-libs-xxx.rpm rpm -ivh mysql-community-client-xxx.rpm rpm -ivh mysql-community-server-xxx.rpm rpm -ivh mysql-community-libs-compat-xxx.rpm 4.启动MySQL服务: bash sudo systemctl start mysqld 三、安全配置与初始化 安装完成后,需要对MySQL进行一些安全配置和初始化操作
1.获取MySQL临时密码:MySQL 5.7及以上版本在安装时会为root用户生成一个临时密码,该密码存储在`/var/log/mysqld.log`文件中
bash grep password /var/log/mysqld.log 2.登录MySQL并修改密码: bash mysql -u root -p mysql> ALTER USER USER() IDENTIFIED BY NewPassword; mysql> FLUSH PRIVILEGES; 3.为复制用户授权:在主服务器上创建一个专门用于复制的用户,并授予相应的权限
bash mysql> CREATE USER repl@% IDENTIFIED BY password; mysql> GRANT REPLICATION SLAVE ON. TO repl@%; mysql> FLUSH PRIVILEGES; 四、配置主从服务器 主服务器配置 1.修改MySQL配置文件:编辑`/etc/my.cnf`文件,添加或修改以下配置
ini 【mysqld】 server-id=1 服务器唯一ID,主从服务器必须不同 log-bin=mysql-bin 开启二进制日志 binlog-do-db=mydatabase 指定需要复制的数据库,可多个 2.重启MySQL服务: bash sudo systemctl restart mysqld 3.查看主服务器状态: bash mysql> SHOW MASTER STATUS; 记录下`File`和`Position`的值,这些值在配置从服务器时会用到
从服务器配置 1.修改MySQL配置文件:编辑`/etc/my.cnf`文件,添加或修改以下配置
ini 【mysqld】 server-id=2 服务器唯一ID,与主服务器不同 relay-log=relay-bin 中继日志文件名 read-only=1 设置从服务器为只读模式 replicate-do-db=mydatabase 指定需要复制的数据库,可多个 2.重启MySQL服务: bash sudo systemctl restart mysqld 3.配置从服务器连接主服务器: bash mysql> CHANGE MASTER TO MASTER_HOST=主服务器IP, MASTER_USER=repl, MASTER_PASSWORD=password, MASTER_LOG_FILE=mysql-bin.000001, 与主服务器SHOW MASTER STATUS的输出一致 MASTER_LOG_POS=123456; 与主服务器SHOW MASTER STATUS的输出一致 4.启动从服务器复制进程: bash mysql> START SLAVE; 5.查看从服务器状态: bash mysql> SHOW SLAVE STATUSG; 关注`Slave_IO_Running`和`Slave_SQL_Running`两个参数,如果都为`Yes`,则说明配置成功
五、验证主从复制 在主服务器上创建一个新的数据库或表,并插入一些数据,然后在从服务器上验证这些数据是否同步过来
1.在主服务器上创建数据库和表: bash mysql> CREATE DATABASE testdb; mysql> USE testdb; mysql> CREATE TABLE testtab