一、登录服务器或虚拟机操作
执行下列命令为多台实例进行数据库安装:
此场景为两台云服务器搭建(centos7.6):
curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
yum install mysql-community-server
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server
yum list installed mysql-*
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
grep 'temporary password' /var/log/mysqld.log #这句为查询数据库默认密码使用
记录Mysql默认密码,通过下列命令登录,并修改密码:
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; --修改root登录密码
此段命令为root用户授权远程连接/主从复制可用:(谨慎使用)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
–授权mysql root用户可以远程连接
注:以上操作已完成数据库安装
此段命令为创建用户使用,非root账户。可根据具体场景自行添加
create user '数据库用户名' @'%' identified by '密码';
grant all privileges on *.* to '数据库用户名' @'%' identified by '密码';
flush privileges;
二、主从数据库搭建:
1、前提条件:
- 确认主从实例数据库均已安装完成,状态为正常运行中(active)。
systemctl enable mysqld
- 确认实例间网络互通。
ping IP地址
- 登录主从实例,创建好主从实例两端需要同步的数据库
CREATE DATABASE 数据库名 CHARACTER SET utf8;
2、使用root账号登录主实例:
编辑 MySQL 配置文件 /etc/my.cnf,在 [mysqld] 段中添加以下配置:
server-id=1 # 设置 MySQL 实例唯一 ID,主从不同
log-bin=mysql-bin # 启用二进制日志,用于记录所有写入操作
binlog-format=ROW # 指定二进制日志格式为 ROW 模式
重启 MySQL 服务以使更改生效:
systemctl restart mysqld
systemctl status mysqld
创建一个用于同步的 MySQL 用户,并授予其复制权限:(如安装时已经授权root账号,则可以直接使用,未创建可通过以下命令新建)
CREATE USER '用户名'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%';
flush privileges;
查看主服务器的状态,并记录下来 File 和 Position 字段的值:
SHOW MASTER STATUS;

3、使用root账号登录从实例:
编辑 MySQL 配置文件 /etc/my.cnf,在 [mysqld] 段中添加以下配置:
server-id=2 # 设置 MySQL 实例唯一 ID,主从不同
重启 MySQL 服务以使更改生效:
systemctl restart mysqld
systemctl status mysqld
登录MySQL,使用以下命令进入需要同步的库中:
show databases; --查看数据库列表
use 数据库名; --进入数据库
提前整理好以下配置,在需要同步的库中执行:
CHANGE MASTER TO
MASTER_HOST='主实例 IP',
MASTER_USER='主实例数据库用户名',
MASTER_PASSWORD='数据库密码',
MASTER_LOG_FILE='主服务器上的 File 字段值', #参考上图
MASTER_LOG_POS=主服务器上的 Position 字段值; #参考上图
启动复制进程:
START SLAVE;
查询进程状态:
SHOW SLAVE STATUS\G
参考项:
在输出结果中,您可以查看以下信息:
Slave_IO_State:复制进程的当前状态。
Master_Host:主服务器的主机名或 IP 地址。
Master_User:连接主服务器的用户名。
Master_Port:主服务器使用的端口号。
Connect_Retry:如果连接到主服务器失败,则从服务器重试连接的次数。
Master_Log_File:从服务器正在复制的日志文件的名称。
Read_Master_Log_Pos:从服务器正在读取的主服务器日志文件的位置。
Relay_Log_File:中继日志文件的名称。
Relay_Log_Pos:中继日志文件的位置。
Relay_Master_Log_File:从服务器正在复制的主服务器日志文件的名称。
Exec_Master_Log_Pos:从服务器正在执行的主服务器日志文件的位置。
Slave_IO_Running:复制进程是否正在运行。
Slave_SQL_Running:SQL 线程是否正在运行。
Seconds_Behind_Master:从服务器落后主服务器的时间(以秒为单位)。
Slave_IO_State 状态参考:
Waiting for master to send event:表示复制 IO 线程已连接到主服务器,并等待主服务器发送日志事件。
Connecting to master:表示复制 IO 线程正在尝试连接到主服务器。
Reconnecting after a failed master event read:表示复制 IO 线程在读取主服务器上的二进制日志事件时遇到了错误,并正在尝试重新连接到主服务器。
Waiting for the slave SQL thread to free enough relay log space:表示复制 IO 线程已经读取了一些日志事件,但复制 SQL 线程尚未处理完所有事件,因此中继日志文件已满,需要等待 SQL 线程释放空间。
Waiting for event from coordinator:表示在复制通道中使用 Group Replication 时,复制 IO 线程正在等待来自协调器的事件。
备注:(无此需求则忽略)
如需要重新配置其他数据库同步任务,需要先结束进程,安装配置流程重新操作:
STOP SLAVE IO_THREAD FOR CHANNEL ''; --结束同步任务
STOP SLAVE;
该文详细介绍了如何在两台CentOS7.6云服务器上安装MySQL数据库,包括下载安装包、设置服务启动、修改root密码,以及为主从复制配置包括创建用户、授权和设置主从实例的详细步骤,涉及日志文件、复制ID、用户权限等关键参数。

2089





