mysql主从集群

本文详细介绍了MySQL主从集群的配置步骤,包括开启主库binlog、设置不同server-id、创建复制账号、备份主库、导入从库、执行CHANGEMASTERTO命令等关键操作。

mysql主从集群

配置步骤

  • 1主库打开log-bin
  • 2主库和从库的server-id 设置的要不相同
  • 3主库上建立用于从库复制的帐号
  • 4把主库做个备份
  • 5将主库的备份灌到从库
  • 6在从库执行CHANGE MASTER TO
  • 7开启同步 start slave; (报错就重启mysql服务 )

主库相关操作

开启主库的log-bin
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=/var/lib/mysql/log/mysql-bin
server-id = 1
这里的log-bin文件放置的目录要的用户和用户组要修改为mysql
server-id 不能重复
mysql-bin是日志文件的前缀,这里的路径/var/lib/mysql/log/一定要存在,才可以

查看log-bin 是否开启
[root@node01 log]# mysql -uroot -p123456 -e “show variables like ‘log_bin’”
+—————+——-+
| Variable_name | Value |
+—————+——-+
| log_bin | ON |
+—————+——-+

在主库上建立用于从库复制的帐号rep
grant replication slave on . to ‘rep’@’%’ identified by ‘123456’
flush privileges;

给主库做备份
1给主库加个锁
mysql> flush tables with read lock;
mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 566 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

2dump数据
mysqldump -uroot -p123456 -A -B –events –master-data=2 > /opt/rep.sql

mysql> unlock tables;

将主库备份灌到从库中
mysql -uroot -p123456 < /opt/rep.sql

从库相关操作

设置从库的server-id
vim /etc/my.cnf
server-id = 3

在从库执行change master to
CHANGE MASTER TO
MASTER_HOST=’192.168.254.50’,
MASTER_PORT=3306,
MASTER_USER=’rep1’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mysql-bin.000001’,
MASTER_LOG_POS=3446

mysql> start slave;

检查是否成功开启
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试

在主库上测试创建数据库或者向表中新增记录

在解决 Docker 搭建 MySQL 主从集群失败的问题时,可从多个方面进行排查和处理。 ### 版本兼容性问题 使用的是 8 版本的 MySQL 镜像,若不是 8 版本,部分命令会无效,所以要确保使用的是 8 版本的 MySQL 镜像,避免因版本不兼容导致搭建失败 [^1]。 ### 环境准备问题 借助 Docker 的容器化技术搭建主从集群,要保证环境准备充分。若搭建失败,需检查是否正确创建了两个 MySQL 容器,且这两个容器是否正确占用主机的两个端口,同时确认主机没有其他额外影响搭建的因素 [^2]。 ### 主节点启动问题 启动 MySQL 主节点时,命令可能存在错误导致搭建失败。可检查启动命令,如: ```bash docker run -d \ -p 4417:3306 \ --restart=always \ -v /data/mysql/conf:/etc/mysql \ -v /data/test/data:/var/lib/mysql \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ -e MYSQL_ROOT_PASSWORD=123456 \ --name mysql mysql-master:8.0.35 ``` 要确保挂载的目录存在且有相应的权限,环境变量 `MYSQL_ROOT_PASSWORD` 等设置正确,镜像名称 `mysql-master:8.0.35` 无误 [^3]。 ### 数据库操作问题 在主库上进行数据库操作时,若命令执行失败也会影响搭建。例如在主库上执行创建数据库和表等操作: ```bash docker exec -it mysql-master bash create database test; mysql> use test; mysql> create table users(sno int,sname varchar(20)); mysql> insert into users values (1,'xixi'); mysql> insert into users values (2,'haha'); ``` 可检查命令是否拼写正确,容器是否正常运行,是否有足够的权限执行这些操作 [^4]。 ### 网络和端口问题 要确保 Docker 容器之间网络连通,主从节点能正常通信。同时检查主机上的端口是否被占用,若端口被占用,可修改启动命令中的端口映射。 ### 配置文件问题 检查挂载的配置文件是否正确,如 `/data/mysql/conf` 目录下的配置文件是否符合 MySQL 主从集群的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值