当前位置: 首页 > news >正文

麒麟系统V10部署MySQL8及主从复制

麒麟系统V10部署MySQL8及主从复制🫚


 

CPU架构是arm版,需下载对应的MySQL包。ARM 架构请用 aarch64 包。

一. 下载安装包

官网:https://dev.mysql.com/downloads/mysql/8.0.html

[root@localhost ~]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.44-linux-glibc2.28-aarch64.tar.xz

image

二. 安装部署

安装主库,从库也是如此,在此不赘述

[root@localhost ~]# tar -xvf mysql-8.0.44-linux-glibc2.28-aarch64.tar.xz -C /usr/local/
[root@localhost local]# cd /usr/local/
[root@localhost local]# mv mysql-8.0.44-linux-glibc2.28-aarch64/ mysql-8.0.44

创建mysql用户及组:

[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql -s /sbin/nologin mysql

创建数据及日志目录:

[root@localhost ~]# mkdir /var/lib/mysql
[root@localhost ~]# mkdir /var/lib/mysql/data
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
[root@localhost ~]# mkdir /var/log/mysql
[root@localhost ~]# chown -R mysql:mysql /var/log/mysql

创建MySQL配置文件:

cat /etc/my.cnf
[client]
# 默认连接 MySQL 时使用的字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock[mysqld]
user=mysql
socket=/var/lib/mysql/mysql.sock
port=3306
pid-file=/var/lib/mysql/mysql.pid
basedir=/usr/local/mysql-8.0.44
datadir=/var/lib/mysql/datalower_case_table_names = 1#日志配置
log-error=/var/log/mysql/error.log
slow-query-log=1
slow-query-log-file=/var/log/mysql/mysql-slow.log
long_query_time=2
binlog_expire_logs_seconds=604800# 字符集设置及排序规则
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-authentication-plugin=mysql_native_password

配置MySQL环境变量:

[root@localhost ~]# vim /etc/profile
export PATH=$PATH:/usr/local/mysql-8.0.44/bin
[root@localhost ~]# source /etc/profile

初始化MySQL:

[root@localhost ~]# /usr/local/mysql-8.0.44/bin/mysqld  --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql

 使用system管理MySQL(推荐):

[root@localhost ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mysql-8.0.44/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
LimitCORE=0
Restart=on-failure
RestartSec=10
PrivateTmp=true[Install]
WantedBy=multi-user.target

开机自启MySQL:

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable --now mysql

 

登录MySQL并修改密码:

本地首次使用sock文件登录mysql是不需要密码的。

[root@localhost ~]# mysql -S /var/lib/mysql/mysql.sockmysql> alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges;

修改密码后,就不能用sock方式登录,需要用以下方式登录:

[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.44 MySQL Community Server - GPLCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

 


三. 配置主从复制

 

采用GTID方式配置主从复制。

GTID(Global Transaction Identifier,全局事务标识符)是 MySQL 5.6 引入,并在 8.0 版本中完善的一项核心技术。它为每一个提交的事务分配一个在全复制拓扑结构内全球唯一的编号。

1. GTID 的构成

一个 GTID 的格式通常如下: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23

它分为两部分:

  • Source_ID (UUID): 产生该事务的源服务器的唯一标识(在 auto.cnf 中定义)。

  • Transaction_ID: 在该服务器上产生的事务序列号,从 1 开始自增。

2. GTID 同步的工作原理

  1. 产生标识: 当主库(Master)提交一个事务时,会自动给这个事务分配一个 GTID,并记录到 binlog 中。

  2. 传输日志: 事务传送到从库(Slave)并存储在 relay log 中。从库会读取这个 GTID 并将其设置为自己的 Retrieved_Gtid_Set

  3. 执行并排除: 从库的 SQL 线程读取事务。在执行前,它先检查这个 GTID 是否已经在自己的 Executed_Gtid_Set(已执行清单)中。

    • 如果没有:执行该事务。

    • 如果已经有:说明该事务已经同步过,直接忽略(这种幂等性保证了数据不会重复)。

 

192.168.10.1(主库)

192.168.10.2(从库)

3.1 配置 my.cnf(重点)

Master 节点 /etc/my.cnf

[root@localhost ~]# vim /etc/my.cnf
[client]
# 默认连接 MySQL 时使用的字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock[mysqld]
# ===== 基础配置 =====
user=mysql
port=3306
basedir=/usr/local/mysql-8.0.44
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
pid-file=/var/lib/mysql/mysql.pid# ===== 表名大小写 =====
lower_case_table_names=1# ===== InnoDB核心配置 =====
#innodb_data_file_path=ibdata1:12M:autoextend
#innodb_buffer_pool_size=128M
#innodb_log_file_size=48M
#innodb_file_per_table=ON# ===== 主从配置 =====
server-id=1
log-bin=mysql-bin  # 使用相对路径,会在datadir下创建
#log-bin=/var/lib/mysql/binlog/mysql-bin# ===== GTID 核心 =====
gtid_mode=ON
enforce_gtid_consistency=ON
log_replica_updates=ON  # ===== 日志配置 =====
log-error=/var/log/mysql/error.log
slow-query-log=1
slow-query-log-file=/var/log/mysql/mysql-slow.log
long_query_time=2
binlog_expire_logs_seconds=604800# ===== 字符集配置 =====
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
authentication_policy=mysql_native_password

Slave 节点 /etc/my.cnf

[root@localhost ~]# vim /etc/my.cnf
[client]
# 默认连接 MySQL 时使用的字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock[mysqld]
user=mysql
socket=/var/lib/mysql/mysql.sock
port=3306
pid-file=/var/lib/mysql/mysql.pid
basedir=/usr/local/mysql-8.0.44
datadir=/var/lib/mysql/datalower_case_table_names = 1#主从配置
server-id=2
log-bin=mysql-bin
binlog_format=ROW
relay-log=/var/lib/mysql/binlog/relay-bin#设置只读
#read_only=1
#super_read_only=1# ===== GTID 核心 =====
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON#日志配置
log-error=/var/log/mysql/error.log
slow-query-log=1
slow-query-log-file=/var/log/mysql/mysql-slow.log
long_query_time=2
binlog_expire_logs_seconds=604800# 字符集设置及排序规则
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-authentication-plugin=mysql_native_password

 

3.2 主库配置(Master)

1️⃣ 创建复制用户

mysql> CREATE USER 'repl'@'192.168.10.%' IDENTIFIED BY 'Repl@123';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.10.%';
mysql> FLUSH PRIVILEGES;

 

3.3 从库配置(Slave)

1️⃣ 设置主库信息(不再指定 binlog)

mysql> CHANGE MASTER TO-> MASTER_HOST='192.168.10.1',-> MASTER_USER='repl',-> MASTER_PASSWORD='Repl@123',-> MASTER_PORT=3306,-> SOURCE_AUTO_POSITION=1;

2️⃣ 启动复制

mysql> START SLAVE;

3️⃣ 检查状态

mysql> SHOW SLAVE STATUS\G

必须看到:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Auto_Position: 1
Retrieved_Gtid_Set: uuid:1-xxx
Executed_Gtid_Set: uuid:1-xxx
Seconds_Behind_Master: 0
mysql> SHOW SLAVE STATUS\G*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.10.1Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000002Read_Master_Log_Pos: 870Relay_Log_File: relay-bin.000003Relay_Log_Pos: 1086Relay_Master_Log_File: mysql-bin.000002Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 870Relay_Log_Space: 2194Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1Master_UUID: bd6584ff-dfad-11f0-b121-00163e32e122Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: bd6584ff-dfad-11f0-b121-00163e32e122:1-6Executed_Gtid_Set: bd6584ff-dfad-11f0-b121-00163e32e122:1-6Auto_Position: 1Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0Network_Namespace: 
1 row in set, 1 warning (0.00 sec)
 
 

3.4 验证 GTID 主从

主库

主库mysql> CREATE DATABASE gtid_test;
Query OK, 1 row affected (0.00 sec)mysql> CREATE TABLE gtid_test.t1(id INT);
Query OK, 0 rows affected (0.01 sec)mysql> INSERT INTO gtid_test.t1 VALUES (100);
Query OK, 1 row affected (0.01 sec)

从库

从库
mysql> SELECT * FROM gtid_test.t1;
+------+
| id   |
+------+
|  100 |
+------+
1 row in set (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| gtid_test          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
验证成功!
http://www.jsqmd.com/news/129026/

相关文章:

  • 字谱Open-AutoGLM实战指南(从零部署到性能调优)
  • SambaNova Reconfigurable Dataflow:灵活适应RAG工作流
  • 30、构建安全文件备份系统指南
  • 从零实现Elasticsearch可视化工具中的关键词检索功能
  • springboot零食销售商城的设计与实现au72407e
  • Quantum Computing展望:量子算法加速向量相似度计算
  • Open-AutoGLM 沉思浏览器上线倒计时:仅限100个内测名额,立即申请
  • 紧急通知:Open-AutoGLM v1.2即将停用旧部署方式,立即升级避免服务中断
  • LangFlow中的密码强度检测:防止弱口令风险
  • 环境配置阶段常见错误:libcudart.so.11.0 找不到的完整指南
  • GLM-4.7来袭!编程能力超越GPT-5.2,大模型开发者不可错过的技术突破!
  • 2025年声学成像仪哪家质量好?福禄克声学成像仪领跑质量榜单 - 博客万
  • springboot高校实验室教学成绩学分管理系统的设计和实现-vue
  • 2025年净洗剂按需定制厂商推荐、信誉好的净洗剂厂家年度排名与选择指南 - mypinpai
  • 使用anything-llm进行合同文本比对的创新应用场景
  • 【Rust】字符串(String 与 str) 详解
  • 2、探秘云计算:概念、历史、特性与服务
  • 快速理解:IPC网表在Altium Designer与PCB板生产厂家间的应用
  • Open-AutoGLM部署性能提升300%的秘密武器,你真的会用吗?
  • 南山世博特系统门窗适合家庭使用吗、实力与技术解析全指南 - 工业品牌热点
  • 【2025最新】基于SpringBoot+Vue的乡村政务办公系统管理系统源码+MyBatis+MySQL
  • 10、Windows Azure服务运行时API与角色使用指南
  • 为什么顶级团队都在悄悄测试 Open-AutoGLM 沉思浏览器?(内部资料流出)
  • LangFlow支持哪些模型?主流大模型兼容性全面测试报告
  • 从AI风控大会看数美科技博弈黑产之道:用AI对抗AI、用魔法打败魔法
  • 2025年靠谱哈尔滨暖气片安装企业排行榜,新测评精选公司推荐 - 工业推荐榜
  • 智谱Open-AutoGLM部署倒计时:如何在24小时内完成生产环境上线?
  • 为什么你的Open-AutoGLM还没封装成SDK?这5个关键步骤你必须掌握
  • 企业级校园失物招领系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • LangFlow支持Webhooks吗?实现外部系统联动