鲲鹏ARM服务MySQL镜像方式部署主从集群

环境说明

鲲鹏ARM服务器,操作系统为银河麒麟V10,MySQL镜像名称:mysql:8.0.35

准备两台云主机,主:192.168.31.11,从192.168.32.12

配置主节点

1、创建数据目录和配置目录

shell 复制代码
mkdir -p /data/docker/mysql/data /data/docker/mysql/conf.d

2、创建配置文件,使用命令vi /data/docker/mysql/conf.d/cim.cnf

shell 复制代码
[mysqld]
server-id=101
log-bin=mysql-bin
port=3306
max_connections=1000
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
performance_schema_max_table_instances=600
lower_case_table_names=1

这里特别注意一下,主从的server-id值必须不一样,server-id和server_id这两种写法 效果完全一样,MySQL 都能正确识别并设置 server_id 系统变量。

在 SQL 语句或系统变量查询中使用 server_id(带下划线),例如:

shell 复制代码
SHOW VARIABLES LIKE 'server_id';
SET GLOBAL server_id = 101;

3、创建主节点

shell 复制代码
docker run -itd --restart=always --network=host --name mysql -v "/data/docker/mysql/conf.d:/etc/mysql/conf.d/" -v "/data/docker/mysql/data:/var/lib/mysql" -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD="test123456" mysql:8.0.35

4、放开防火墙

shell 复制代码
firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="192.168.31.0/26" port port="3306" protocol="tcp" accept" && firewall-cmd --reload

5、主节点配置

shell 复制代码
# 进入镜像
docker exec -it mysql /bin/bash
# 登录mysql
mysql -uroot -p  输入密码test123456
# 创建slave用户
CREATE USER 'slave'@'%' IDENTIFIED BY 'salve123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
ALTER USER 'slave'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'salve123456';
FLUSH PRIVILEGES;
# 查看master状态,
show master status;

注意执行show master status后的master_log_file和master_log_pos非常重要,后面配置从节点时会用到。

至此主节点已经配置完成。

配置从节点

1、创建数据目录和配置目录

shell 复制代码
mkdir -p /data/docker/mysql/data /data/docker/mysql/conf.d

2、创建配置文件,使用命令vi /data/docker/mysql/conf.d/cim.cnf

shell 复制代码
[mysqld]
server-id=102
log-bin=mysql-bin
port=3306
max_connections=1000
max_connect_errors=10
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
performance_schema_max_table_instances=600
lower_case_table_names=1

这里特别注意一下,主从的server-id值必须不一样

3、创建从节点

shell 复制代码
docker run -itd --restart=always --network=host --name mysql -v "/data/docker/mysql/conf.d:/etc/mysql/conf.d/" -v "/data/docker/mysql/data:/var/lib/mysql" -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD="test123456" mysql:8.0.35

4、放开防火墙

shell 复制代码
firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="192.168.31.0/26" port port="3306" protocol="tcp" accept" && firewall-cmd --reload

5、从节点配置

shell 复制代码
# 进入镜像
docker exec -it mysql /bin/bash
# 登录mysql
mysql -uroot -p  输入密码test123456
# 授权
GRANT REPLICATION_SLAVE_ADMIN ON *.* TO 'root'@'%';
# 配置从
change master to master_host='192.168.31.11', master_user='slave', master_password='salve123456', master_port=3306, master_log_file='mysql-bin.000004', master_log_pos=1132, master_connect_retry=30;
# 开启从节点
start slave;
# 查看主从状态,如果有异常,针对异常解决即可。
show slave status;

至此主从配置完成,验证创建数据库、表、增删改查记录均可正常同步。

相关推荐
Fleshy数模13 分钟前
MySQL 表创建全攻略:Navicat 图形化与 Xshell 命令行双模式实践
linux·mysql
儿歌八万首15 分钟前
硬核春节:用 Compose 打造“赛博鞭炮”
android·kotlin·compose·春节
Nandeska23 分钟前
15、基于MySQL的组复制
数据库·mysql
AllData公司负责人1 小时前
AllData数据中台-数据同步平台【Seatunnel-Web】整库同步MySQL同步Doris能力演示
大数据·数据库·mysql·开源
醇氧2 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
lekami_兰2 小时前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
消失的旧时光-19433 小时前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
Jinkxs3 小时前
Gradle - 与Groovy/Kotlin DSL对比 构建脚本语言选择指南
android·开发语言·kotlin
&有梦想的咸鱼&3 小时前
Kotlin委托机制的底层实现深度解析(74)
android·开发语言·kotlin
LDORntKQH3 小时前
基于深度强化学习的混合动力汽车能量管理策略 1.利用DQN算法控制电池和发动机发电机组的功率分配 2
android