鲲鹏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;

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

相关推荐
树獭非懒1 小时前
告别繁琐多端开发:DivKit 带你玩转 Server-Driven UI!
android·前端·人工智能
于眠牧北2 小时前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
三少爷的鞋2 小时前
为什么应该先在 IntelliJ 中学习 Kotlin 与协程,而不是直接上 Android Studio
android
不爱说话郭德纲17 小时前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
Sinclair21 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
雮尘1 天前
手把手带你玩转Android gRPC:一篇搞定原理、配置与客户端开发
android·前端·grpc
ktl1 天前
Android 编译加速/优化 80%:一个文件搞定,零侵入零配置
android
alexhilton2 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
冬奇Lab2 天前
InputManagerService:输入事件分发与ANR机制
android·源码阅读
张小潇2 天前
AOSP15 Input专题InputManager源码分析
android·操作系统