博客
关于我
Mysql5.6主从复制-基于binlog
阅读量:792 次
发布时间: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中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>