当前位置:首页 > 问答 > 正文

MySQL配置 CentOS主从设置:centos 配置mysql密码登录-centos mysql主从配置

MySQL配置 | CentOS主从设置:从零开始搭建高可用数据库

场景引入

想象一下你正在运营一个电商网站,"双十一"大促即将到来,突然单台MySQL服务器扛不住暴增的访问量,数据库响应越来越慢,最终直接宕机——订单数据丢失、用户无法支付,这绝对是一场灾难,通过配置MySQL主从复制,我们完全可以把这种风险降到最低,今天我就手把手带你在CentOS上完成MySQL密码登录和主从配置的全过程。

CentOS配置MySQL密码登录

安装MySQL服务器

首先确保你的CentOS系统已经更新到最新:

sudo yum update -y

安装MySQL社区版(以MySQL 8.0为例):

sudo yum install mysql-server -y

启动MySQL服务并设置开机自启:

sudo systemctl start mysqld
sudo systemctl enable mysqld

设置root密码

MySQL 8.0安装后会有临时密码,查看方式:

sudo grep 'temporary password' /var/log/mysqld.log

使用临时密码登录:

mysql -uroot -p

登录后立即修改密码(注意:MySQL 8.0有密码强度要求):

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

如果觉得密码策略太严格,可以临时调整(生产环境不建议):

SET GLOBAL validate_password.policy=LOW;

配置远程登录(可选)

如果需要远程连接MySQL:

CREATE USER '远程用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO '远程用户名'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

记得在防火墙放行3306端口:

MySQL配置 CentOS主从设置:centos 配置mysql密码登录-centos mysql主从配置

sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

CentOS MySQL主从配置

主服务器配置

编辑MySQL配置文件:

sudo vi /etc/my.cnf

在[mysqld]段落下添加:

[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = 你要同步的数据库名  # 如果同步所有库则注释掉这行

重启MySQL服务:

sudo systemctl restart mysqld

登录MySQL创建复制账号:

CREATE USER 'repl'@'从服务器IP' IDENTIFIED BY '复制密码';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从服务器IP';
FLUSH PRIVILEGES;

查看主服务器状态,记录File和Position值:

SHOW MASTER STATUS;

从服务器配置

同样编辑MySQL配置文件:

sudo vi /etc/my.cnf

添加配置:

MySQL配置 CentOS主从设置:centos 配置mysql密码登录-centos mysql主从配置

[mysqld]
server-id = 2  # 必须与主服务器不同
relay-log = mysql-relay-bin
read_only = 1  # 从库设为只读

重启MySQL服务:

sudo systemctl restart mysqld

登录MySQL配置复制:

CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl',
MASTER_PASSWORD='复制密码',
MASTER_LOG_FILE='前面记录的File值',
MASTER_LOG_POS=前面记录的Position值;

启动从库复制进程:

START SLAVE;

检查从库状态:

SHOW SLAVE STATUS\G

重点关注:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes
  • Seconds_Behind_Master: 0 # 表示没有延迟

测试主从同步

在主服务器上创建测试数据库或表:

CREATE DATABASE test_sync;
USE test_sync;
CREATE TABLE sync_test(id INT);
INSERT INTO sync_test VALUES(1);

在从服务器上检查是否同步:

MySQL配置 CentOS主从设置:centos 配置mysql密码登录-centos mysql主从配置

SELECT * FROM test_sync.sync_test;

常见问题解决

  1. 主从连接失败

    • 检查防火墙设置
    • 确认复制账号密码正确
    • 确保主服务器my.cnf中bind-address没有限制
  2. 同步位置错误: 如果主从数据不一致,可以在从服务器上重新配置:

    STOP SLAVE;
    RESET SLAVE;
    # 然后重新执行CHANGE MASTER命令
  3. 从库写入导致错误: 确保从库是read_only状态,避免直接写入

  4. 大事务导致延迟: 考虑拆分大事务,或调整slave_parallel_workers参数

生产环境建议

  1. 定期监控:设置监控检查主从延迟
  2. 备份策略:即使有从库也要定期备份
  3. 读写分离:应用层实现读操作分流到从库
  4. 高可用考虑:可以进一步配置MHA或Group Replication
  5. 密码安全:使用强密码并定期更换复制账号密码

通过以上步骤,你已经成功在CentOS系统上配置了MySQL密码登录和主从复制,主从架构不仅能提高系统可用性,还能分担读压力,为你的应用提供更强大的数据支持,记得定期检查主从同步状态,确保数据一致性,当业务量继续增长时,你还可以考虑更复杂的集群方案,比如MySQL Group Replication或InnoDB Cluster。

发表评论