博客
关于我
Mysql5.6主从复制-基于binlog
阅读量:790 次
发布时间:2023-02-11

本文共 1899 字,大约阅读时间需要 6 分钟。

MySQL主从复制基于日志的配置步骤

环境配置

  • Master数据库IP:192.168.247.128
  • Slave数据库IP:192.168.247.130
  • MySQL版本:5.6.14

1. 修改Master配置文件并重启服务

修改Master的配置文件文件(通常位于 /etc/my.cnf~/.my.cnf)中相关参数:

[mysqld]server_id=1binlog_ignore_db=testreplicate_ignore_db=testlog-bin=mysql-binbinlog_cache_size=1Mbinlog_format=mixedexpire_logs_days=3

重启MySQL服务:

sudo systemctl restart mysql

2. 修改Slave配置文件并重启服务

编辑Slave的配置文件:

[mysqld]server_id=2binlog_do_db=mydbbinlog_ignore_db=testreplicate_ignore_db=testlog-bin=mysql-binbinlog_cache_size=1Mbinlog_format=mixedexpire_logs_days=3

重启MySQL服务:

sudo systemctl restart mysql

3. 在Master上创建用于复制的用户

通过MySQL命令创建复制用户:

mysql> GRANT replication slave, replication client ON *.* TO 'repl'@'192.168.247.130' IDENTIFIED BY 'pwd';

4. 备份Master的数据

方法1:锁表后备份

mysql> FLUSH TABLES WITH READ LOCK;mysql> SHOW MASTER STATUS;

记录Master的binlog文件和位置信息,执行备份:

mysqldump -uroot -p --lock-all-tables -R --master-data=2 --databases mydb > /tmp/mydb.sql

方法2:使用--master-data参数

执行备份时保留binlog文件:

mysqldump -uroot -p --hex-blob --lock-all-tables -R --triggers --databases mydb --master-data=2 --default-character-set='utf8' > /tmp/mydb.sql

5. 拷贝备份文件到Slave并导入

将备份文件传输到Slave服务器:

scp /tmp/mydb.sql 192.168.247.130:

在Slave上导入数据:

mysql -uroot -p mydb < /tmp/mydb.sql

6. 在Slave上同步binlog

根据备份方式选择对应的命令:

  • 如果使用了方法1:
    mysql> CHANGE MASTER TO    MASTER_HOST='192.168.247.128',    MASTER_USER='repl',    MASTER_PASSWORD='pwd',    MASTER_LOG_FILE='mysql-bin.000015',    MASTER_LOG_POS=1273;
  • 如果使用了方法2:
    grep -i "CHANGE MASTER TO" /tmp/mydb.sql

    提取binlog文件名和位置信息。

7. 启用复制

在Slave上执行:

mysql> START SLAVE;

8. 验证Slave状态

查看Slave的复制状态:

mysql> SHOW SLAVE STATUS\G

确保Slave_IO_StatestoppedSlave_SQL_Runningyes,并检查是否有错误提示。

常见问题:MySQL UUID冲突

如果Slave与Master的UUID相同,可能是由于虚拟机克隆导致的auto.cnf文件内容相同。解决方法是:

  • 删除Slave上的auto.cnf文件:
    sudo rm /var/lib/mysql/auto.cnf
  • 重启MySQL服务:
    sudo systemctl restart mysql
  • 重启后,Slave会生成新的UUID,完成后验证复制是否正常。

    通过以上步骤,可以实现基于日志的主从复制,确保数据同步与高可用性。

    转载地址:http://sjbfk.baihongyu.com/

    你可能感兴趣的文章
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>
    MySQL 内核深度优化
    查看>>
    mysql 内连接、自然连接、外连接的区别
    查看>>
    mysql 写入慢优化
    查看>>
    mysql 分组统计SQL语句
    查看>>
    Mysql 分页
    查看>>
    Mysql 分页语句 Limit原理
    查看>>
    MySql 创建函数 Error Code : 1418
    查看>>
    MySQL 创建新用户及授予权限的完整流程
    查看>>
    mysql 创建表,不能包含关键字values 以及 表id自增问题
    查看>>
    mysql 删除日志文件详解
    查看>>
    mysql 判断表字段是否存在,然后修改
    查看>>
    MySQL 到底能不能放到 Docker 里跑?
    查看>>
    mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
    查看>>
    MySQL 加锁处理分析
    查看>>
    mysql 协议的退出命令包及解析
    查看>>
    mysql 参数 innodb_flush_log_at_trx_commit
    查看>>
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>