MySQL配置主从数据库

目前有两个服务器:

主服务器 ,192.168.118.110 , mysql端口: 3879 , 用户名:master1 密码 111111

从服务器 ,192.168.118.111 , mysql端口: 3879 , 用户名:slave1 密码 111111

修改主服务器的 /etc/my.cnf 文件,添加:

server-id=1
log-bin=mysql_bin1

server-id 必须比所有从服务器的id都小。

修改 从服务器的 /etc/my.cnf 文件,添加

server-id=2
relay-log=slave_relay_bin2

登录主服务器,运行 show master status; 查看主服务器的状态

SHOW MASTER STATUS  ;

获得 当前 主机的 File 和 position

登录次服务器,运行 如下代码:

change master to master_host='192.168.118.110', master_port=3879, master_user='master1', master_password='111111', 
master_log_file='mysql_bin1.000001', master_log_pos=830;


show slave status \G;


start slave ;

然后在主数据库中的修改,在次数据库中会马上同步更新。

### 配置 Docker 中 MySQL 主从复制 #### 创建并启动主服务器容器 为了建立 MySQL主从复制环境,在 Docker 中新建主服务器可以通过如下命令完成: ```bash docker run -d \ -p 3306:3306 \ --name mysql_master \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ mysql:5.7 ``` 此操作将会基于指定版本 `mysql:5.7` 启动一个新的名为 `mysql_master` 容器,并映射相应的端口以及卷到宿主机上[^3]。 #### 进入主服务器容器配置 一旦主服务已经成功运行,可以利用下面这条指令进入到该容器内部以便进一步设置: ```bash docker exec -it mysql_master /bin/bash ``` 这一步骤允许直接访问容器内的 Bash shell 来执行必要的初始化工作和修改配置文件等操作[^1]。 #### 修改 Master 节点配置 在 `/etc/mysql/my.cnf.d/server.cnf` 文件中添加或编辑以下参数来启用二进制日志记录功能和其他必需选项。确保这些更改反映了正确的 server-id 和 binlog-format 设置。 ```ini [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=testdb ``` 上述配置中的 `server-id` 应当唯一标识每一个参与复制链路的服务实例;而 `log-bin` 则用于开启二进制日志支持,这对于后续同步数据至关重要。 #### 创建 Slave 用户权限 回到 MySQL 命令行界面内创建一个专门供 slave 使用的账户,并赋予其 REPLICATION SLAVE 特权: ```sql CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` 这里的 `'repl'` 是用来连接 master 数据库进行增量更新所使用的用户名,密码可以根据实际情况自行设定。 #### 获取 Master 状态信息 通过查询当前 master 上的状态获取 File 名字与 Position 数值作为稍后配置 slave 所需的数据源位置依据: ```sql SHOW MASTER STATUS\G ``` 记住输出结果里的 `File` 变量名及其对应的数值,因为它们将在下一步被用作 slave 初始化时的关键输入项之一。 #### 构建并启动 Slave 容器 同样地构建另一个新的 MySQL 实例充当 follower 或者说 secondary node (即slave),区别在于此次命名不同且监听不同的外部端口号: ```bash docker run -d \ -p 3307:3306 \ --name mysql_slave \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /mydata/mysql-slave/log:/var/log/mysql \ -v /mydata/mysql-slave/data:/var/lib/mysql \ -v /mydata/mysql-slave/conf:/etc/mysql \ mysql:5.7 ``` 此时便有了两个独立运作却又相互关联着的 MySQL Server 实体——master 和 slave。 #### 访问 Slave 并调整相应配置 如同之前对待 master 的方式一样,现在也应当进入新近部署完毕的那个 slave container 内部继续开展剩余的工作流程: ```bash docker exec -it mysql_slave /bin/bash ``` 之后依照先前获得自 master end point 处的信息去完善本地 my.cnf 下面有关于 replication section 的定义部分[^2]。 #### 更改 Slave 节点配置 编辑 `/etc/mysql/my.cnf.d/server.cnf` 添加下列内容以指明本节点的角色属性: ```ini [mysqld] server-id=2 relay-log=mysql-relay-bin read-only=ON replicate-wild-ignore-table=%.auto_increment_column_name ``` 注意此处 `server-id` 不可重复,必须不同于其他任何已存在的成员;另外 relay log 参数有助于提高性能表现,同时 read only 模式下能防止意外写入破坏一致性。 #### 开始 Slave 复制过程 最后一步是在 slave side 发起 CHANGE MASTER TO 请求指向远程 master 地址及相关认证凭证,紧接着 START SLAVE 即可触发整个同步机制正式启动起来: ```sql CHANGE MASTER TO MASTER_HOST='ip_of_mysql_master', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='recorded_file_from_show_master_status', MASTER_LOG_POS=pos_number; START SLAVE; ``` 以上就是完整的搭建一套简单的 MySQL 主从架构的方法概述。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小崔爱读书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值