搭建mysql主从数据库

一台机器做主数据库、另外一个机器做从数据库。

假设:

‌Master (主库)‌: 192.168.40.120

‌Slave (从库)‌: 192.168.40.121

主数据库和从数据库都安装

wget https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm

sudo rpm -ivh mysql80-community-release-el7-9.noarch.rpm

sudo yum install mysql-server -y

mysqld --initialize

chown mysql:mysql -R /var/lib/mysql

sudo chmod 750 /var/lib/mysql #注意这个权限不能设置成777,否则会启动失败

chown mysql:mysql -R /var/log/mysql/

sudo chmod 750 /var/log/mysql/

systemctl start mysqld

systemctl enable mysqld

systemctl status mysqld

获取密码

grep 'temp' /var/log/mysql/mysqld.log

mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码123!';

CREATE USER 'root'@'%' IDENTIFIED BY '新密码123!';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

在主数据库修改:

vim /etc/my.cnf

在文件末尾追加:

--- 以下是新增/修改的配置 ---

mysqld

1. 解决日志权限报错:指定明确的日志路径

确保 /var/log/mysql 目录存在且归属为 mysql:mysql

log-error=/var/log/mysql/mysqld.log

2. 基础数据目录配置(根据实际安装情况确认,通常为默认值)

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

3. 字符集配置(避免中文乱码,游戏业务必备)

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

4. 主从复制核心配置(如果是主库,server-id 设为 1;从库设为 2 或其他唯一值)

server-id=1

log-bin=mysql-bin

binlog-format=ROW

5. 其他常用优化(可选)

max_connections=1000

innodb_buffer_pool_size=1G # 根据服务器内存大小调整,建议为物理内存的 50%-70%

校验配置文件是否修改正确执行:sudo mysqld --validate-config

重置失败启动次数

sudo systemctl reset-failed mysqld

重新启动

sudo systemctl restart mysqld

查看启动是否成功

sudo systemctl status mysqld

登录主库:

mysql -uroot -p新密码123!

-- 创建用于主从复制的用户

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'ReplPass123!';

-- 授予复制权限

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';

FLUSH PRIVILEGES;

-- 查看主库状态,记录 File 和 Position,后续从库配置需要用到

SHOW MASTER STATUS;

配置从库

vim /etc/my.cnf

文件追加:

mysqld

服务器唯一ID,必须与主库不同,从库通常设为2,3...

server-id = 2

开启中继日志

relay-log = relay-bin

字符集统一

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

可选:如果从库只读,防止误写

read-only = 1

super-read-only = 1

重启:

sudo systemctl restart mysqld

登录从库 MySQL,执行以下 SQL(替换为主库的实际 IP、用户、密码及之前记录的 File/Position):

mysql -uroot -p新密码123!

登录后执行:

-- 停止奴隶线程

STOP SLAVE;

-- 配置主库信息

CHANGE MASTER TO

MASTER_HOST='192.168.40.120',//主数据的地址

MASTER_USER='repl_user',//主数据建立的登录账号

MASTER_PASSWORD='ReplPass123!',//主数据建立的登录账号的密码

MASTER_LOG_FILE='binlog.000001',//上面记录的File 文件名

MASTER_LOG_POS=1410;//上面记录的Position

-- 启动奴隶线程

START SLAVE;

验证同步状态:

SHOW SLAVE STATUS\G;

测试现在在主数据创建一个数据,从数据库也会出现一条数据

相关推荐
Elastic 中国社区官方博客9 小时前
14 个 alerts,1 个 incident:使用 Elasticsearch 中的 ES|QL 衡量 alerting rule 噪声
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
资深技术分享员9 小时前
遗留系统——把“改不动的老系统“接过来
java·服务器·数据库
AllData公司负责人10 小时前
AllData数据中台物联网实时平台|集成 Apache StreamPipes,MQTT工业物联网数据实时预警实践案例
大数据·数据库·人工智能·物联网·apache·工业物联网·streampipes
天衍四九-10 小时前
Docker Compose企业实战系列(一):LNMP环境一键部署(Nginx\+MySQL\+PHP)
mysql·nginx·docker
在放️10 小时前
技术支持岗 · 笔试填空、问答题
数据库
oradh10 小时前
Oracle固定执行计划的方法----SQL Profie(二)
数据库·sql·oracle
Mortalbreeze10 小时前
MySQL 基础篇(二):数据库和数据表的基本操作
linux·服务器·数据库·mysql
Zenova EdgeOS10 小时前
工业网关心跳机制实战:Keepalive、应用层探活与健康判定
服务器·网络·数据库
龙腾AI白云18 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
一 乐19 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计