• mysql主从复制


    版本mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

    原理:主从复制涉及三个线程,主库dump_log线程负责把主库的bin.log的文件名跟位置点跟文件发给从库,从库I/O线程把主库的bin.log文件名跟位置点记录在从库的master.info里面,并且把获取到的文件改成replay.bin.log文件,从库的SQL线程把replay.bin.log文件翻译成sql语句,执行,并把目前为止执行过的replay.bin.log文件名跟位置点保存在replay.info里面

    步骤:1,主库先开启log-bin功能并修改server-id的值确保在局域网内唯一(/etc/my.cnf/mysqld)生成日志

               2,主库授权用户复制权限,让从库能够来主库获取日志,GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.8.11' identified by 'test123456' 注意,@后面是否可以改成网段或者%有待验证

               3,使用mysqldump -u -p -B 数据库名称 --master-data=1 --events > *.sql 注意:-B是导入数据库时不用先建库,--master-data=1是当备份数据库时进行短暂锁库,并记录下来change master to的数值,方便从库执行change master to时不用指定主库binlog日志的名称跟位置点,因为加了这个参数后,导出的备份数据里面已加有日志名称跟位置点,还有导出备份时最好不要把mysql默认的库也导出来(试过导出并导入从库中,从库的主从复制状态一直不对,后面没导出默认数据库就成功了),况且当没有指定只同步指定数据库时,默认会同步所有数据库。

               4,拷贝备份文件到从库并导入文件scp -P端口 文件 用户@从库IP:/目录      mysql -u -p < *.sql

               5,进入从库执行change master to语句 CHANGE MASTER TO MASTER_HOST='172.16.2.10', MASTER_PORT=3306, MASTER_USER='rep', MASTER_PASSWORD='oldboy123';

               6,检查从库状态 show slave statusG;当Slave_IO_Running: Yes   Slave_SQL_Running: Yes两个yes后即成功

    生产环境下一般不会同步一些库不同步一些库,只会在同步时忽略一些表:

    binlog-do-db:要同步的数据库名

    还可以显示 设置不同步的数据库:

    binlog-ignore-db = mysql 不同步mysql库和test库
    binlog-ignore-db = test

    错误排查:MySQL同步故障:" Slave_SQL_Running:No" 两种解决办法  https://blog.csdn.net/heng_ji/article/details/51013710

    mysql错误代码表:https://www.cnblogs.com/JimCalark/p/7808575.html

    忽略从库同步数据时错误代码 slave_skip_errors = 1007,1062,1032(/etc/my.cnf/mysqld)

     从库开启bin-log分两种情况:

    a,从库做其他服务器的主库(即级联)

    b,从库做备份服务器

    开启方法:在my.cnf下面的mysqld模块下增加log-slave-updates  expire_logs_days=7(删除七天前的log日志)

              

  • 相关阅读:
    省市县 三级 四级联动Javascript JQ 插件PCASClass.js
    【转】提高PHP性能的53个技巧
    Windows下Wamp装不上Memcache扩展
    Weui 微信网站开发样式插件使用教程
    div高度自适应填充剩余部分
    Storm简介
    Spark简介
    MapReduce的输入输出
    MapReduce 2简介
    Hadoop的I/O操作
  • 原文地址:https://www.cnblogs.com/allmdzz/p/10436161.html
Copyright © 2020-2023  润新知