• MySql5.7-多源复制(多主单从)


    1.1.主库配置

    my.cnf

     

    #确保唯一

    server-id=1

    #作为Master要开启binlog

    log-bin=mysql-bin

    #binlog format有三种形式:Statement、Mixed、Row,默认设置为mixed

    binlog-format=mixed

    #需要同步的库,不指定默认同步全部库

    binlog-do-db=radius

    #不需要同步的库

    binlog-ignore-db=mysql

    binlog-ignore-db=information_schema

    binlog-ignore-db=performance_schema

    binlog-ignore-db=sys

    #这个比较重要,直接影响同步的性能 延时等问题.mysql5.7多源复制参数,5.7之前版本可不加

    sync_binlog=1

    auto_increment_increment=2

    auto_increment_offset=1

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    #GTID模式

    gtid-mode=on

    enforce-gtid-consistency

    1.2创建主库授权从库同步的用户

    mysql>grant replication slave on *.* to 'slave'@'192.168.100.%' identified by '308731044';

    replication slave:远程用户备份权限

    *.*:第一个星号代表库,第二个星号代表数据库里的表。可指定库和表

    'slave'@'192.168.100.%':@前为用户名,@后为授权的IP段(就是允许那些IP使用这个账号权限访问)

    '308731044':远程备份用户密码

    1.3刷新设置(修改的内容刷新到数据库配置里 )

    mysql>flush privileges;

    查看和删除授权授权用户(删除不使用的账号)

    查询用户:select user,host from mysql.user;

    删除用户:Delete FROM mysql.user Where User='sns_qnzs' and Host='172.17.116.%';

    92B4CA3786DA4A34986F582367FD6AE3

    1.4从库配置

    #确保唯一

    server-id = 3

    #复制的库,不指定默认备份全部库

    replicate-do-db = master1

    replicate-do-db = master2

    #不复制的库

    replicate-ignore-db = mysql

    replicate-ignore-db = information_schema

    replicate-ignore-db = performance_schema

    replicate-ignore-db = sys

    #binlog日志设置

    relay-log = /home/mysql/data/

    mysqld-relay-bin

    log-slave-updates = ON

    slave-parallel-type=LOGICAL_CLOCK

    relay_log_recovery=ON

    #超时

    slave_net_timeout = 30

    #复制并发数设置

    slave_parallel_workers = 16

    #从库复制跳过错误

    slave-skip-errors = 1062,1053,1146,1213,1264,1205,1396

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    #mysql5.7多源复制必须添加的参数(不加报错),5.7版本之前不用加

    master_info_repository=TABLE

    relay_log_info_repository=TABLE

    #GTID模式(使用GTID就可以不用记录备份位置点)

    gtid-mode=on

    enforce-gtid-consistency

    1.5.从库配置用户及binlog位置信息(推荐使用GTID模式)

    #GTID模式配置

    CHANGE MASTER TO MASTER_HOST='192.168.1.131', MASTER_USER='slave', MASTER_PORT=3451, MASTER_PASSWORD='xxxxxx', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';

    主库配置可以使用到多个主库上,从库添加相应的配置即可(GTID模式配置)

    #Binlog模式

    CHANGE MASTER TO

    MASTER_HOST='192.168.100.108',

    MASTER_PORT=3306,

    MASTER_USER='rep',

    MASTER_PASSWORD='308731044',

    MASTER_LOG_FILE='mysql-bin.000002',

    MASTER_LOG_POS=107;

    107就是备份binlog位置点。使用GTID可以省略

    MASTER_LOG_POS=107;

    68835FEC23464BF9919652D00C02D2D0

     

    查看主从复制状态:

    show slave status G; 
    show slave status for channel 'master-1' G; 
    IO及SQL线程状态为YES时,表示正常

    7BEBCAB327FB4F479AD1851665F342EB

    1.6重置备份配置

    1.主库操作

    restet master

     

    2.从库操作

    stop slave;

    stop slave for channel 'master-1'

    reset slave all for channel 'master-1'

    restet master;

    重复步骤1.5

    start slave for channel 'master-1'

    flush privileges;

    mysql主库复制小结:

    stop slave; #<==临时停止同步开关。

    start slave;#<==临时停止同步开关。

    show processlist;查看sql慢查询语句

    80E4ADCBCE8D4998AF0061AA0C8A91C1

    set global sql_slave_skip_counter =1 ; #<==将同步指针向下移动一个,如果多次不同步,可以重复操作。

    主库设置从库跳过错误设置:

    1. 当从库复制遇到错误时,比如报错“要创建的数据库已存在”

    解决方案: 让从库跳过这一步操作,继续执行其它的操作

    方法一: 命令行实现,跳过这一步;

    mysql> stop slave;
    mysql> set global sql_slave_skip_counter =1;
    mysql> start slave;

    方法二: 配置文件中,指定忽略的错误;

    [root@MySQL opt]# grep slave-skip /data/3308/my.cnf
    slave-skip-errors = 1032,1062

    grep slave-skip /data/3306/my.cnf

    vim /data/3306/my.cnf

    slave-skip-errors = 1032,1062,1007(添加可忽略错误状态)

    数据库级联同步设置必要参数:

    log-slave-updates #<==必须要有这个参数

    log-bin = /data/3307/mysql-bin

    expire_logs_days = 7 (七天自动删除binlog文件)

    总结:

    领导要求部署MySql多主单从,之前都是单间单主多从。听到多主单从后,表示一脸懵比。查询一番话。原来是MySql5.7新出的功能。

    MySql5.7新功能-多源复制,可以节省服务器成本。提高服务器利用率。搭建和之前的版本大致步骤类似。使用GTID模式更加快捷。

    但在集群的过程中,也遇到了很多的坑。大部分都是常见的错误。可以百度也可以根据错误日志进行排查(推荐),使用fpm打包了MySql。

    以后也可以放到内网的yum源上,方便重复安装,每天记录一点点。

  • 相关阅读:
    Notes for Advanced Linux Programming 2. Writing Good GNU/Linux Software
    GIT 子模块温习
    Memcached 源码分析——从 main 函数说起
    Zookeeper 初体验之——JAVA实例
    如何使用 indent 美化你的代码
    PGF/TIKZ 资源汇总
    Zookeeper 进阶之——Zookeeper编程示例(如何使用Zookeeper实现屏障Barriers和队列Queues)
    Zookeeper 进阶之——典型应用场景(二)
    如何将 Linux 内核实现的红黑树 rbtree 运用到你的 C 程序中?
    三行代码实现C语言单元测试框架
  • 原文地址:https://www.cnblogs.com/zhanmeiliang/p/5911558.html
Copyright © 2020-2023  润新知