欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 解决:mysql 主从机备份

解决:mysql 主从机备份

2025/5/3 20:33:42 来源:https://blog.csdn.net/huohuo5211314/article/details/143602003  浏览:    关键词:解决:mysql 主从机备份

文章目录

      • 安装mysql
      • 配置master
      • slave配置
      • 问题

安装mysql

  1. 先安装mysql apt-get update;
  2. 启动mysql sudo apt-get install mysql-server
  3. 启动mysql 服务 sudo service mysql start
  4. 查看mysql 服务 sudo service mysql status
  5. 设置mysql 开机自启 sudo systemctl enable mysql
  6. 登录mysql mysql -u root -p
  7. 查询mysql 密码 (第一次默认没有密码 直接回车) sudo tail /var/log/mysql.log
  8. 设置root账号密码
    1. usr mysql; # 进入mysql
    2. select host ,user,authentication_string from user; # 查看root用户数据
    3. alter user 'root'@'localhost' identified with mysql_native_password by 'joint2023'; # 为root账号赋权
    4. flush privileges; # 刷新权限
    5. exit; 退出
  9. 设置远程访问
    1. 设置账号权限
      • use mysql; # 进入mysql
      • update user set host ='%' where user = 'root' and host ='localhost'; # 设置登录ip为% 通配符,取消ip登录限制
      • flush privileges; # 刷新权限
      • select host ,user,authentication_string from user ;# 查看数据情况
      • exit; # 退出
    2. 修改配置文件
      • vim /etc/mysql/mysql.conf.d/mysqld.cnf
      • 注释掉 bind-address 和 mysql-bind-address
    3. 重启mysql
      • service mysql restart; # 重启mysql
  10. 防火墙开启3306端口
    • sudo ufw allow 3306/tcp


配置master

  1. vim /etc/mysql/mysql.conf.d/mysqld.cnf

  2. [mysqld]
    ...
    # 开启二进制日志(必须)
    log-bin = mysql-bin
    # MySQL服务ID,保证整个集群环境中唯一,默认为1(必须)
    server-id = 1
    # 二进制日志格式,默认ROW(可选)
    binlog_format = ROW
    # 忽略的数据,不需要同步的数据库
    # binlog-ignore-db = mysql
    # 指定同步的数据库
    binlog-do-db = ects
    
    • binlog-ignore-db 和binlog-do-db 不指定 默认同步所有
  3. 重启mysql systemctl restart mysql

  4. 登录mysql 创建远程链接账号,授权 主从复制权限

    • create user 'jointbackup'@'%' identified with mysql_native_password by 'joint2023 ;' # 创建用户和设置密码
    • grank replication slave on *.* to 'jointbackup'@'%'; # 分配主从权限
  5. 查看二进制日志坐标show master status;
    请添加图片描述

    字段说明
    File当前正在写入二进制日志文件名
    Position当前正在写入二进制日志文件位置
    Binlog_Do_DB指定需要写入二进制日志的数据库名
    Binlog_Ignore_DB指定不需要写入二进制日志的数据库名


    slave配置

    1. 修改配置文件

      • vim /etc/mysql/mysql.conf.d/mysqld.cnf

      • [mysqld]
        ...
        # 开启二进制日志(必须)
        log-bin = mysql-bin
        # MySQL服务ID,保证整个集群环境中唯一,默认为1(必须)
        server-id = 2
        # 二进制日志格式,默认ROW(可选)
        binlog_format = ROW
        # 是否只读,1代表只读,0代表读写 (root 除外)
        read-only = 1
        
    2. 重启mysql服务 systemctl restart mysql

    3. 设置主从配置

      • MySQL8.0.23之前的版本,执行如下SQL语句:change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
      • MySQL8.0.23之后的版本,执行如下SQL语句:change replication source to source_host='xxx.xxx.xxx.xxx',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;
    4. 开启同步操作

      • # 8.0.22之后
        show replica status; 
        # 8.0.22之前
        show slave status;
        



问题

  • 查询报错 no qurey specified 检查SLAVE_SQL_Running 是no
  • 解决:查询show replica status
  • 我的Last_SQL_Error 是 Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at source log mysql-bin.000001, end_log_pos 1170. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.
  • 查询日志 tail -f /var/log/mysql/error.log 报错 unknown database ‘ects’ 是因为我的从数据库上没先创建这个数据库
  • 创建库和表结构后请添加图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词