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

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

相关推荐
人才瘾大42 分钟前
Android录屏内部音频录制完全指南:原理、限制与方案选型
android·音视频
网安蟹佬霸1 小时前
Webshell免杀与检测实战:从一句话木马到加密流量
android·安全·web安全·网络安全·黑客·网安·渗透测试·
01_ice2 小时前
MySQL事务
数据库·mysql
00后程序员张3 小时前
SSL Pinning 抓包抓不到明文?绕过证书固定的几种方案
网络协议·计算机网络·网络安全·ios·adb·https·udp
阿巴斯甜4 小时前
Android SharedMemory 详细使用
android
sun0077004 小时前
android的dns的常见错误resolv
android
恋猫de小郭5 小时前
Flutter A2UI 的正确用法,怎么把 AI 和动态 UI 结合有效生产
android·前端·flutter
余额瞒着我当琳5 小时前
C++--vector第二讲:手写 C++ STL:vector 源码剖析与迭代器失效分析
android·java·c++
程序员-珍5 小时前
安卓开发:同名 styles.xml 在不同分支/文件夹的合并规则
android·xml·前端
我命由我123455 小时前
Compose Codelab 学习 - Compose 中的基本布局
android·java·java-ee·kotlin·android studio·android-studio·android runtime