MySQL主从数据库简单搭建

打印 上一主题 下一主题

主题 941|帖子 941|积分 2823

环境:准备两个linux假造机服务器,两台必要安装雷同版本的MySQL服务,此处示例使用的是 10.6.8-MariaDB MariaDB Server 版本,确保两台服务器可以ping通,检查防火墙是否关闭,或防火墙开启但对应数据库端口必要放开。
示例中选取 192.168.37.224作为主数据库,192.168.37.225作为从数据库。
由于示例中修改了默认端口,所以针对端口设置的部分,假如未修改使用默认端口3306,可不处置惩罚端口部分。
一、主数据库修改

1、编辑主服务器的配置文件:编辑数据库配置文件 vi my.cnf,检查如下配置
  1. port=3310 # 指定端口
  2. server-id=1  # 设置主服务器的唯一 ID
  3. binlog-do-db=lmtest # 需要复制的数据库名
  4. binlog-ignore-db=mysql # 忽略的不需要复制的数据库名
  5. log-bin=mysql-bin # 开启二进制日志
复制代码
2、重启 MySQL 服务:生存配置文件修改后,重启主服务器上的 MySQL 服务使更改生效。
3、创建用于从服务器复制的用户:在主服务器上创建一个用于主从复制的用户,并赋予 REPLICATION SLAVE 权限。
  1. # 创建用户
  2. CREATE USER 'replication_user'@'192.168.37.225' IDENTIFIED BY 'password';
  3. # 授予权限
  4. GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'192.168.37.225';
  5. # 刷新权限
  6. FLUSH PRIVILEGES;
复制代码
此中 replication_user 、password 替换成本身要修改的用户密码。
4、检察主服务器状态:使用以下命令检察主服务器状态,记载 File 和 Position 值,备用于从服务器配置。
  1. SHOW MASTER STATUS;
复制代码
示例如图:

5、个人踩的坑


  • 使用 SHOW MASTER STATUS;
    无信息展示

   当执行 SHOW MASTER STATUS;
命令时,假如展示为空,可能有几个缘故原由导致这种情况发生:
1、未启用二进制日记(Binary Log):在MySQL中,要执行主从复制,主数据库必须启用二进制日记。假如主数据库的二进制日记未启用,那么执行 SHOW MASTER STATUS;
命令将不会显示任何内容。
2、主数据库未设置为主服务器(Master Server):确保当前毗连的数据库实例是配置为主服务器的主数据库。假如当前数据库实例不是主服务器,那么执行 SHOW MASTER STATUS;
命令将不会显示任何内容。
3、权限题目:可能当前毗连的用户没有足够的权限来执行 SHOW MASTER STATUS;
命令。请确保毗连的用户具有足够的权限来检察主服务器的状态信息。
4、主服务器尚未生成任何二进制日记:假如主服务器还没有生成任何二进制日记,执行 SHOW MASTER STATUS;
命令也会返回空值。
  首先检查了下二进制日记是否开启
  1. # 是否开启二进制
  2. SHOW VARIABLES LIKE 'log_bin';
复制代码
off是未开启,on是开启

二进制日记未开启,又去检查了配置文件,配置文件中我直接将配置项放到了文件最后一行之后,调解了一下位置,重新启动数据库。
调解前:
  1. # 第1、2行原先配置文件就有,在[mysqld]下
  2. port=3310 # 指定端口
  3. server-id=1  # 设置主服务器的唯一 ID
  4. # 后三行我直接粘贴到文件最后,在[mysqld_safe]下
  5. binlog-do-db=lmtest # 需要复制的数据库名
  6. binlog-ignore-db=mysql # 忽略的不需要复制的数据库名
  7. log-bin=mysql-bin # 开启二进制日志
复制代码
调解后
  1. # 全部放在[mysqld]下port=3310 # 指定端口
  2. server-id=1  # 设置主服务器的唯一 ID
  3. binlog-do-db=lmtest # 需要复制的数据库名
  4. binlog-ignore-db=mysql # 忽略的不需要复制的数据库名
  5. log-bin=mysql-bin # 开启二进制日志
复制代码
再次查询,二进制日记开启

二、从数据库修改

1、编辑从服务器的配置文件:编辑数据库配置文件 vi my.cnf,检查如下配置
  1. server-id = 2  # 设置从服务器的唯一 ID,需确保与主服务器不同
复制代码
2、重启 MySQL 服务:生存配置文件修改后,重启从服务器上的 MySQL 服务。
3、毗连主服务器:毗连到从服务器的 MySQL 实例,并配置其作为主服务器的从服务器。
  1. CHANGE MASTER TO MASTER_HOST='192.168.37.224', MASTER_PORT=3310, MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='xxxx', MASTER_LOG_POS=xxx;
  2. START SLAVE;
复制代码
此中MASTER_LOG_FILE=‘xxxx’, MASTER_LOG_POS=xxx 为之前在主服务器检察的值。
4、检察从服务器状态:使用以下命令检察从服务器状态,确认从服务器已经开始复制主服务器的数据。
  1. SHOW SLAVE STATUS\G;
复制代码
一般来说检察从服务器状态这两个字段为yes根本就是成功了。
\G按列展示。

5、个人踩的坑


  • 数据库连不上
    1、最初数据提示毗连失败,由于我修改了默认端标语,而从服务器毗连主服务器那一步又没有指定端口,导致服务器使用默认端口3306毗连,从而提示毗连失败。
    2、尚有一种可能是,主服务器配置文件中有bind-address=127.0.0.1这行配置,这会限制数据库仅支持本地毗连。
三、验证

1、在主数据库创建监听同步的数据库,建表,插入一条数据
2、观察从服务器数据库中是否出现雷同内容,假如出现则简单搭建成功

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表