宝塔环境如何 主从复制 主从切换

admin 2025年3月21日01:13:50评论4 views字数 1907阅读6分21秒阅读模式

在前期,我们讲到了利用shell脚本,通过ipv6网络将公网服务器数据库备份到本地服务器。但只能做到备份,如果公网服务器数据库挂掉,能不能用本地的数据库呢?这需要我们先配置主从复制。

由于笔者公网服务器和和本地服务器都部署了宝塔。虽然宝塔有主从复制的插件,但要钱~

宝塔环境如何 主从复制 主从切换

因此,我们只能手搓主从复制了!

环境

  • 公网MySQL 5.7.44
  • 本地MySQL 5.7.44
  • ipv6网络

在实验前,先从公网服务器测试ipv6网络是否能连接本地数据库。

配置主数据库

点击数据库配置文件,进行修改。

[mysqld]server-id = 1log_bin = mysql-binbinlog_format = rowexpire_logs_days = 7binlog_do_db = blog
宝塔环境如何 主从复制 主从切换

接下来,我们用root账号登录。新增一个用于主从复制的账号。

mysql -u root -p#输入密码后,分别执行下面命令CREATE USER 'repl_user'@'%' IDENTIFIED BY 'YourStrongPassword';GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';FLUSH PRIVILEGES;

请将repl_user 和YourStrongPassword更改为你的密码。 接下来,获取主服务器二进制日志状态 执行以下命令并记录 File 和 Position 的值:

SHOW MASTER STATUS;
宝塔环境如何 主从复制 主从切换

本地服务器配置 (从)

编辑从服务器的MySQL配置文件,添加:

[mysqld]server-id = 2relay-log = mysql-relay-binreplicate_do_db = blog

注意

  • server-id 必须与主服务器不同。

  • replicate_do_db 指定从服务器需要复制的数据库。

接下来,重启MySQL服务。

初始化数据

登录主服务器,我们先将数据库进行手动同步。

mysqldump -u root -p --master-data --databases bbs blog > /root/db_dump.sql
宝塔环境如何 主从复制 主从切换

将 db_dump.sql 传输到从服务器,执行导入:

mysql -u root -p < /root/db_dump.sql

启动从服务器复制

登录从服务器MySQL,执行:

CHANGE MASTER TOMASTER_HOST = 'nas.nb.cn',  #主服务器地址MASTER_PORT = 3306,MASTER_USER = 'repl_user',MASTER_PASSWORD = 'YourStrongPassword',MASTER_LOG_FILE = 'mysql-bin.000001',  # 替换为记录的File值MASTER_LOG_POS = 1234;                # 替换为记录的Position值

启动复制

START SLAVE;

检查复制状态

SHOW SLAVE STATUSG

关键指标

  • Slave_IO_Running: Yes

  • Slave_SQL_Running: Yes

宝塔环境如何 主从复制 主从切换接下来,我们对测试表中,加入数据,在本地便可以实时同步。

宝塔环境如何 主从复制 主从切换

主从切换

在宝塔面板环境中实现主数据库故障后自动切换到本地从数据库。 打开网站的Nginx配置,添加以下内容

upstream backend {# 主库对应的应用服务器(默认使用主库)    server 公网应用服务器IP:端口 weight=10 max_fails=3 fail_timeout=30s;# 从库对应的应用服务器(本地IPv6地址,备用)    server [本地IPv6地址]:端口 backup;}server {    listen 80;    server_name your_domain.com;    location / {        proxy_pass http://backend;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }}

假设,http://backend 应用读的数据库为本地数据库。当主服务器不可用时自动切换。但是,这样有个缺陷,该如何确保数据一致性,尤其是在主库恢复后,是否需要重新同步数据,或者将本地数据库提升为新的主库。这可能涉及到主从复制的重新配置。

常见故障分析

Slave_SQL_Running的值为NO,是因为主从服务器数据结构或者数据不一样。根据日志,查看数据异常的表。或者用下面命令跳过。

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;  -- 跳过1个错误事件

原文始发于微信公众号(kali笔记):宝塔环境如何 主从复制 主从切换

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月21日01:13:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   宝塔环境如何 主从复制 主从切换https://cn-sec.com/archives/3860669.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息