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

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

相关推荐
flower_drop6 小时前
基于 WebUSB 与 CDP:在浏览器端实现 Android 设备通信与无证书抓包实践
android·chrome·测试工具·adb·bug·edge浏览器
SendTomo6 小时前
【技术交流】从0到1构建一个汉字学习平台:汉字吧(hanzi8.com)的技术架构猜想
redis·mysql·nginx·php·个人开发
IT大白鼠7 小时前
MySQL 分布式集群系列 · 第四篇——实操部署指南:从零搭建生产级 MySQL NDB 集群
数据库·分布式·mysql
IT大白鼠7 小时前
MySQL 分布式集群系列 · 第三篇——核心原理精讲:NDB 自动分片、多主写入与数据同步
数据库·分布式·mysql
撩得Android一次心动8 小时前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
初願致夕霞9 小时前
MySQL_索引
数据库·mysql
ForteScarlet10 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
一只小李郁vickie10 小时前
mysql 开启压缩传输3402条数据2.1秒压缩到毫秒级
数据库·mysql
方白羽11 小时前
Android Studio 自动国际化插件:SmartI18n
android·android studio·intellij idea
前端兰博11 小时前
04-数据库-MySQL
后端·mysql