一、主库配置
1、检查是否有ssl证书,默认应该包含ca.pem、server-cert.pem、server-key.pem三个文件
ll /var/lib/mysql/*.pem # ----------------------正常应该显示下列文件---------------------- -rw------- 1 mysql mysql 1705 Jul 19 17:11 /var/lib/mysql/ca-key.pem -rw-r--r-- 1 mysql mysql 1112 Jul 19 17:11 /var/lib/mysql/ca.pem -rw-r--r-- 1 mysql mysql 1112 Jul 19 17:11 /var/lib/mysql/client-cert.pem -rw------- 1 mysql mysql 1705 Jul 19 17:11 /var/lib/mysql/client-key.pem -rw------- 1 mysql mysql 1705 Jul 19 17:11 /var/lib/mysql/private_key.pem -rw-r--r-- 1 mysql mysql 452 Jul 19 17:11 /var/lib/mysql/public_key.pem -rw-r--r-- 1 mysql mysql 1112 Jul 19 17:11 /var/lib/mysql/server-cert.pem -rw------- 1 mysql mysql 1705 Jul 19 17:11 /var/lib/mysql/server-key.pem
2、配置数据库服务器
vim /etc/mysql/mysql.conf.d/mysqld.cnf # 增加以下配置 # 主库唯一 ID server-id = 1 # 启用二进制日志 log_bin = /var/log/mysql/mysql-bin.log # 允许所有 IP 连接(生产环境建议改为具体 IP) bind-address = 0.0.0.0 # 二进制日志格式(推荐 ROW) binlog_format = ROW # SSL 配置(添加以下 3 行) ssl_ca = /var/lib/mysql/ca.pem ssl_cert = /var/lib/mysql/server-cert.pem ssl_key = /var/lib/mysql/server-key.pem
3、重启主库
sudo systemctl restart mysql
4、验证 SSL 生效
# TCP/IP + SSL 连接测试(必须显示加密套件) mysql -u root -p -h 127.0.0.1 --ssl-mode=REQUIRED -e "SHOW STATUS LIKE 'Ssl_cipher';" # ----------------------正常输出如下---------------------- +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | Ssl_cipher | TLS_AES_128_GCM_SHA256 | +---------------+------------------------+
5、创建复制用户
-- 创建复制用户(强制 SSL) CREATE USER 'repl'@'%' IDENTIFIED BY '123456' REQUIRE SSL; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; -- 创建复制用户(非强制 SSL) CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; -- 验证 SELECT user, host, plugin, ssl_type FROM mysql.user WHERE user='repl';
6、导出当前节点的所有数据
mysqldump --single-transaction --source-data=2 -u root -p --all-databases > backup.sql
7、导出主库数据
mysqldump -u root -p \ --all-databases \ --single-transaction \ --source-data=2 \ --routines \ --triggers \ --events \ --set-gtid-purged=OFF \ > master_data.sql
8、查看备份文件记录的节点
head -50 master_data.sql | grep "SOURCE_LOG_FILE" # --------------------预期输出-------------------------- CHANGE REPLICATION SOURCE TO SOURCE_LOG_FILE='binlog.000008', SOURCE_LOG_POS=6627;
二、从库配置
1、从主库复制master_data.sql 文件以及、ca.pem文件到从库,ca.pem需放到/var/lib/mysql/路径下覆盖
# 在主库操作复制到从库 root@leon:/var/lib/mysql# scp ca.pem root@192.168.20.137:/var/lib/mysql/ root@leon:/installpackage# scp master_data.sql root@192.168.20.137:/installpackage
2、导入数据
mysql -u root -p < master_data.sql
3、修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf # 增加以下配置 # 从库唯一 ID,必须不同于主库 server-id = 2 # 中继日志 relay-log = /var/log/mysql/mysql-relay-bin.log # 开启只读模式 read_only = ON
4、重启MySQL从库
sudo systemctl restart mysql
5、从库复制配置
-- 重置复制配置 STOP REPLICA; RESET REPLICA ALL; -- 配置主库信息(使用 1.7 记录的值) CHANGE REPLICATION SOURCE TO SOURCE_HOST = '192.168.20.136', -- 替换主库IP地址 SOURCE_PORT = 3306, -- 替换为主库数据库端口 SOURCE_USER = 'repl', -- 替换为刚创建的复制专用帐号 SOURCE_PASSWORD = '123456', -- 替换刚创建的复制专用帐号的密码 SOURCE_LOG_FILE = 'binlog.000008', -- 替换为1.8实际值 SOURCE_LOG_POS = 6627, -- 替换为1.8实际值 SOURCE_SSL = 1, SOURCE_SSL_CA = '/var/lib/mysql/ca.pem'; START REPLICA;
6、从库查看复制状态
SHOW REPLICA STATUS\G;
Ubuntu24.04配置MySQL8.4数据库主从复制
| Title | Ubuntu24.04配置MySQL8.4数据库主从复制 |
|---|---|
| Framework | Ubuntu |
| User | wy8817399@vip.qq.com |
| Id | 81 |
| Created | 7/19/26, 4:35 PM |
| Modified | 7/19/26, 7:56 PM |
| Published | Yes |
Content