Mysql集群

该文详细介绍了如何在Docker容器中设置MySQL的主从复制和主主复制。首先通过Docker拉取镜像并启动两个MySQL服务,然后配置my.cnf文件,包括设置服务器ID、启用binlog等。接着在主机上创建用户并授权,从机使用changemaster命令关联主机,并启动从机同步。最后,文章提到了将从机转变为另一主机以实现主主复制的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql 主从复制

环境准备

# 镜像搜索
docker search mysql
# 镜像拉取
docker pull docker.io/mysql:5.7

服务启动

#服务一
docker run --name mysqlm1 -p 3306:3306 --privileged=true -ti -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -v /home/mysql/docker-data/m1/conf:/etc/mysql/conf.d -v /home/mysql/docker-data/m1/data/:/var/lib/mysql -v /home/mysql/docker-data/m1/logs/:/var/log/mysql -d mysql:5.7
#服务二
docker run --name mysqls1 -p 13306:3306 --privileged=true -ti -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -v /home/mysql/docker-data/s1/conf:/etc/mysql/conf.d -v /home/mysql/docker-data/s1/data/:/var/lib/mysql -v /home/mysql/docker-data/s1/logs/:/var/log/mysql -d mysql:5.7

主从机配置

默认mysqlm1为主机,mysqls1为丛机

my.cnf配置

# 创建文件my.cnf
touch /home/mysql/docker-data/m1/conf/my.cnf
touch /home/mysql/docker-data/s1/conf/my.cnf
# 编辑my.cnf、拷贝配置填充
vim /home/mysql/docker-data/m1/conf/my.cnf
vim /home/mysql/docker-data/s1/conf/my.cnf

配置如下:

主机

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

character_set_server=utf8
init_connect='SET NAMES utf8'

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

lower_case_table_names=1
#指定主机号,不允许出现重复
server-id=129
#开启binlog
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=1

#rpl_semi_sync_master_enabled=1
#rpl_semi_sync_master_timeout=10000

从机

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

character_set_server=utf8
init_connect='SET NAMES utf8'

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

lower_case_table_names=1
#指定主机号,不允许出现重复
server-id=130
#开启binlog
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=1

#rpl_semi_sync_master_enabled=1
#rpl_semi_sync_master_timeout=10000

主机创建、授权主从权限

# 创建与用户
CREATE USER 'dog'@'%' IDENTIFIED BY '123456';
# 分配权限
# 分配库访问权限
GRANT ALL ON test.* TO 'dog'@'%';
# 核心权限
GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'dog'@'%' IDENTIFIED BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
# 重启容器
docker restart mysqlm1;  # 主机上添加用户信息
# 查看主机的binlog信息
show master status;

在这里插入图片描述

画圈为重点、下面用得着

从机关联主机配置

#语法
change master to master_host='master的ip',master_port=master的端口号,master_user='repluser',master_password='123456',master_log_file='master中的binlob文件',master_log_pos=master中的position位置信息;
#命令
change master to master_host='192.168.200.132',master_port=3306,master_user='dog',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=154;
# 查看从机状态
show slave status \G; 
# 启动从机
start slave;
# 查看主从信息
show global variables like "%log%";
# 查看mysql用户服务信息
show processlist;

启动前
在这里插入图片描述
启动后
在这里插入图片描述
主从信息
在这里插入图片描述
主机服务信息
在这里插入图片描述
从机服务信息
在这里插入图片描述

Mysql主主复制

基于上面主从复制之后,将从机变成主机就可以实现主主复制

主机创建、授权主从权限

# 创建与用户
CREATE USER 'dog'@'%' IDENTIFIED BY '123456';
# 分配权限
# 分配库访问权限
GRANT ALL ON test.* TO 'dog'@'%';
# 核心权限
GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'dog'@'%' IDENTIFIED BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
# 重启容器
docker restart mysqls1;  # 从机变主机,从机上添加用户信息
# 查看主机的binlog信息
show master status;

在这里插入图片描述

从机关联主机配置

#命令
change master to master_host='192.168.200.132',master_port=13306,master_user='dog',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=1100;
# 查看从机状态
show slave status \G; 
# 启动从机
start slave;
# 查看主从信息
show global variables like "%log%";
# 查看mysql用户服务信息
show processlist;

s1
在这里插入图片描述
m1
在这里插入图片描述

### MySQL 集群搭建与配置教程 #### 一、环境准备 在开始配置之前,需确认已准备好以下条件: - 至少三台服务器(可以是虚拟机),分别作为管理节点、数据节点以及SQL节点。 - 安装并配置好MySQL Cluster软件版本 `mysql-5.7.16` 和 NDB 版本 `ndb-7.5.4`[^1]。 #### 二、下载与安装 按照官方文档指引完成MySQL集群组件的下载工作。具体操作可参考相关说明文档[^2]。通常情况下,可以通过以下命令获取安装包: ```bash wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.5/mysql-cluster-community-management-server_7.5.4-1ubuntu18.04_amd64.deb ``` #### 三、创建用户账户 对于两台主服务器(假设IP地址分别为192.168.x.128和192.168.x.129),登录到MySQL控制台后执行如下语句来创建必要的数据库用户[^3]: ```sql CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` #### 四、日志设置与权限调整 为了确保复制功能正常运行,在 `/var/log/` 文件夹下建立名为 `mysql` 的新目录,并在其内部生成 `mysql-bin.log` 日志文件。随后给予适当的操作许可给这些资源以便于后续步骤能够顺利实施[^4]: ```bash sudo mkdir /var/log/mysql/ sudo touch /var/log/mysql/mysql-bin.log sudo chown -R mysql:mysql /var/log/mysql/ sudo chmod -R 755 /var/log/mysql/ ``` #### 五、验证Master状态 最后一步是在每台主机上检验其当前MASTER角色的状态信息。通过输入下面这条指令即可获得所需详情: ```sql SHOW MASTER STATUS\G; ``` 以上即为完整的MySQL集群构建流程概述,涵盖了从初始阶段直至最终测试环节的各项要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值