博客
关于我
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 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    MySQL 的 varchar 水真的太深了!
    查看>>
    mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
    查看>>
    MySQL 的instr函数
    查看>>
    MySQL 的mysql_secure_installation安全脚本执行过程介绍
    查看>>
    MySQL 的Rename Table语句
    查看>>
    MySQL 的全局锁、表锁和行锁
    查看>>
    mysql 的存储引擎介绍
    查看>>
    MySQL 的存储引擎有哪些?为什么常用InnoDB?
    查看>>