美文网首页数据库
Mysql-8.0.2 主从复制(GTID)

Mysql-8.0.2 主从复制(GTID)

作者: _大叔_ | 来源:发表于2021-06-10 13:29 被阅读0次

    https://dev.mysql.com/doc/refman/8.0/en/replication.html 官方地址,我这里使用的是 Mysql8.0.2

    主从复制的优点:

    • 横向扩展解决方案,在多个副本之间分散负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。然而,读取可能发生在一个或多个副本上。该模型可以提高写入性能(因为主专用于更新),同时显着提高越来越多的副本的读取速度。
    • 数据安全,因为副本可以暂停复制过程,所以可以在副本上运行备份服务而不会破坏相应的主数据。
    • 分析,可以在主上创建实时数据,而信息分析可以在副本上进行,而不会影响源的性能。
    • 远程数据分发,可以使用复制创建本地数据副本供远程站点使用,而无需永久访问主服务。

    Mysql 8.0 支持多种复制计数,可以从二进制日志复制,也可以GTID(全局事务)标识复制,也可以多主复制等,更多方法可以从官网中查看,这里我们根据 GTID 复制。GTID依赖于事务,也就是说其他引擎是没办法复制的

    在主服务器配置 my.cnf 中配置如下

    # server_id 必须在复制中唯一
    server_id=1
    # 主从复制所需
    gtid_mode=ON
    enforce-gtid-consistency=ON
    

    在从服务器配置的my.cng中配置如下

    server_id=2
    # 主从复制所需
    gtid_mode=ON
    enforce-gtid-consistency=ON
    # 启动每个副本 ,以确保在配置副本设置之前不会启动复制
    skip-slave-start=on
    # 指定复制的数据库
    replicate-do-db=test
    # 过滤复制的数据库
    replicate-ignore-db=iedp:wiedp_sub:wiedp
    

    启动主服务器,添加一个让子服务器连接的账号和密码

    # 创建用户
    CREATE USER repl@'10.240.30.%' IDENTIFIED BY 'repl@password';
    # 授权
    GRANT REPLICATION SLAVE ON *.* TO repl@'10.240.30.%';
    

    启动从服务器,并输入如下语句

    CHANGE MASTER TO
        MASTER_HOST = '10.240.30.101',
        MASTER_PORT = 3306,
        MASTER_USER = 'repl',
        MASTER_PASSWORD = 'Repl@123',
        MASTER_AUTO_POSITION = 1;
    

    注意要复制的库在从库不能存在,否则会报错,在从库执行如下命令

    mysql> START SLAVE;
    

    主从复制结束。

    注意事项:
    从库可以删除同步的数据和表以及被同步的库;
    从库删除的数据、表、库,在主库添加数据时从库无法恢复;
    从库在首次复制不能拥有要复制的库,否则报错;
    从库主动删除的数据无法恢复,只能拥有未被复制过的数据;

    如果想动态设置需要复制的库,可以通过如下命令

    # 需要先停止之前复制线程
    STOP SLAVE SQL_THREAD;
    # 重新设置要复制哪些库,replicate_ignore_db(不复制的库)
    CHANGE REPLICATION filter replicate_do_db=(test_1,test);
    # 重新启动复制线程
    start slave sql_thread;
    

    相关文章

      网友评论

        本文标题:Mysql-8.0.2 主从复制(GTID)

        本文链接:https://www.haomeiwen.com/subject/kdsueltx.html