MySQL 8.4.9主从集群部署
一、环境准备
1.1 清理环境
1、检查是否已经安装过mysql,执行命令
rpm -qa | grep mysql
如果查出来有安装包,使用如下命令清理
rpm -e --nodeps `rpm -qa | grep mysql`
再次执行查询命令,查看是否删除
2、查询所有Mysql对应的文件夹
whereis mysql
mysql: /usr/bin/mysql /usr/include/mysql
find / -name mysql
/data/mysql
/data/mysql/mysql
删除相关目录或文件
rm -rf /usr/bin/mysql /usr/include/mysql /data/mysql /data/mysql/mysql
验证是否删除完毕
whereis mysql
find / -name mysql
3、检查mysql用户组和用户是否存在,如果没有,则创建
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql
1.2 安装依赖包
yum install -y libaio numactl-libs ncurses-libs openssl perl
二、安装 MySQL 8.4.9
2.1 下载下载 Bundle 包
下载地址:https://dev.mysql.com/downloads/mysql/

2.2 按顺序安装
# 1. 公共文件
rpm -ivh mysql-community-common-8.4.9-1.el8.x86_64.rpm
# 2. 共享库
rpm -ivh mysql-community-libs-8.4.9-1.el8.x86_64.rpm
# 3. 客户端插件
rpm -ivh mysql-community-client-plugins-8.4.9-1.el8.x86_64.rpm
# 4. 客户端
rpm -ivh mysql-community-client-8.4.9-1.el8.x86_64.rpm
# 5. 国际化数据文件
rpm -ivh mysql-community-icu-data-files-8.4.9-1.el8.x86_64.rpm
# 6. 最后安装服务器包
rpm -ivh mysql-community-server-8.4.9-1.el8.x86_64.rpm
2.3 创建数据和日志目录
# 数据目录
mkdir -p /data/mysql/data
# 日志目录
mkdir -p /data/mysql/log
mkdir -p /data/mysql/binlog
chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql
2.4 配置主库
vim /etc/my.cnf
[mysqld]
port = 3306
datadir = /data/mysql/data
socket = /data/mysql/mysql.sock
pid-file = /data/mysql/mysqld.pid
user = mysql
bind-address = 0.0.0.0
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 4
max_connections = 1000
max_connect_errors = 100
wait_timeout = 600
innodb_log_file_size = 1G
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
slow_query_log = 1
slow_query_log_file = /data/mysql/log/slow.log
long_query_time = 15
log_error = /data/mysql/log/mysqld.log
max_allowed_packet = 1000M
lower_case_table_names = 1
skip-symbolic-links
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id = 1
log_bin = /data/mysql/binlog/mysql-bin
binlog_format = ROW
log-bin-trust-function-creators = 1
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 512M
gtid_mode = ON
enforce_gtid_consistency = ON
[mysql]
default-character-set = utf8mb4
socket = /data/mysql/mysql.sock
[client]
socket = /data/mysql/mysql.sock
default-character-set = utf8mb4
2.5 配置从库
vim /etc/my.cnf
[mysqld]
port = 3306
datadir = /data/mysql/data
socket = /data/mysql/mysql.sock
pid-file = /data/mysql/mysqld.pid
user = mysql
bind-address = 0.0.0.0
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_buffer_pool_size = 8G
innodb_buffer_pool_instances = 4
max_connections = 1000
max_connect_errors = 100
wait_timeout = 600
innodb_log_file_size = 1G
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
slow_query_log = 1
slow_query_log_file = /data/mysql/log/slow.log
long_query_time = 15
log_error = /data/mysql/log/mysqld.log
max_allowed_packet = 1000M
lower_case_table_names = 1
skip-symbolic-links
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id = 2
log_bin = /data/mysql/binlog/mysql-bin
relay_log = /data/mysql/binlog/relay-bin
binlog_format = ROW
log-bin-trust-function-creators = 1
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 512M
log_slave_updates = 1
#以下两条配置先注释,等启动完成修改了初始化密码之后再打开
#read_only = 1
#super_read_only = 1
gtid_mode = ON
enforce_gtid_consistency = ON
[mysql]
default-character-set = utf8mb4
socket = /data/mysql/mysql.sock
[client]
socket = /data/mysql/mysql.sock
default-character-set = utf8mb4
2.6 启动数据库:
systemctl start mysqld
systemctl enable mysqld
2.7 修改密码:
获取临时密码
grep 'temporary password' /data/mysql/log/mysqld.log
登录并修改 root 密码:
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongRootPass!';
2.8 创建复制用户(主库执行)
-- 创建专用复制账号(使用 caching_sha2_password,MySQL 8.4 默认)
CREATE USER 'repl'@'172.16.10.217' IDENTIFIED BY 'YourStrongRootPass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.10.217';
FLUSH PRIVILEGES;
2.9 启动 GTID 复制(从库执行)
STOP REPLICA;
RESET REPLICA ALL; -- 清除旧的复制配置
CHANGE REPLICATION SOURCE TO
SOURCE_HOST = '172.16.10.218',
SOURCE_PORT = 3306,
SOURCE_USER = 'repl',
SOURCE_PASSWORD = 'YourStrongRootPass',
SOURCE_AUTO_POSITION = 1,
GET_MASTER_PUBLIC_KEY = 1; -- 关键:允许 caching_sha2_password 无 SSL 连接
START REPLICA;
验证复制状态
SHOW REPLICA STATUS\G
2.10 测试同步
在主库创建测试数据
CREATE DATABASE db_repl_test;
USE db_repl_test;
CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(20));
INSERT INTO t1 VALUES (1, 'test1'), (2, 'test2');
在从库查询
SHOW DATABASES LIKE 'db_repl_test';
USE db_repl_test;
SELECT * FROM t1;
如果返回数据,说明同步成功。

浙公网安备 33010602011771号