zoukankan      html  css  js  c++  java
  • aws-rds for mysql 5.7.34搭建备库

    环境说明:aws rds开启gtid
    自建mysql也开启gtid


    aws主从复制相关命令:
    https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_stop_replication.html


    1、在自建数据库上备份数据库,只备份业务库

    mysqldump -h127.0.0.1 -uroot -pc123456 -P3357 -B ceshi czg --master-data=2 > mysql_bak.sql

    2、记录备份位点

    head -n 30 mysql_bak.sql
    保存一下,
    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=3763;

    3、恢复备份数据到AWS

    mysql -hczg.ckmuhrbhkmox.ap-east-1.rds.amazonaws.com -uroot -p123456 -P3306 < mysql_bak.sql

    4、在AWS上以位点形式搭主从同步

    #先写一条原生的命令,但AWS不能用
    change master to master_host='16.162.88.254',master_port=3357,master_user='root',master_password='c123456',master_log_file='mysql-bin.000006',master_log_pos=3763;

    4.1停止之前的主从同步

    mysql> CALL mysql.rds_stop_replication;
    +-----------------------------------------------------------------------------+
    | Message |
    +-----------------------------------------------------------------------------+
    | Slave is already stopped or may not be configured. Run SHOW SLAVE STATUSG; |
    +-----------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)


    4.2配置同步复制
    参考文档:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_set_external_master.html

    CALL mysql.rds_set_external_master ('16.162.88.254',3357,'root','c123456','mysql-bin.000006',3763,0);

    4.3启用同步复制

    CALL mysql.rds_start_replication;

    4.4验证测试

    自建数据库操作如下:
    mysql> create database aws_aliyun;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use aws_aliyun;
    Database changed
    mysql> create table t1(id int primary key);
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> insert into aws_aliyun.t1 values(1);
    Query OK, 1 row affected (0.01 sec)

    结论:在AWS RDS可正常查询数据。

    5.在AWS上可以以GTID模式主从同步

    CALL mysql.rds_set_master_auto_position(1);

    常用命令小结:

    CALL mysql.rds_reset_external_master; 等价于 reset slave

    测试过程中遇到的一个bug:
    使用 mysql.rds_set_external_master 存储过程报错后,会将会话级 sql_log_bin 参数值修改为 off,导致当前会话的DML操作都不写binlog。

    mysql> show variables like '%sql_log_bin%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sql_log_bin | ON |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    mysql> CALL mysql.rds_start_replication;
    +-------------------------+
    | Message |
    +-------------------------+
    | Slave running normally. |
    +-------------------------+
    1 row in set (1.01 sec)
    
    Query OK, 0 rows affected (1.01 sec)
    
    mysql> show variables like '%sql_log_bin%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sql_log_bin | ON |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    mysql> CALL mysql.rds_set_external_master ('16.162.88.254',3357,'root','c123456','mysql-bin.000007',1212,0);
    ERROR 3081 (HY000): This operation cannot be performed with running replication threads; run STOP SLAVE FOR CHANNEL '' first
    mysql> show variables like '%sql_log_bin%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sql_log_bin | OFF |
    +---------------+-------+
    1 row in set (0.01 sec)
  • 相关阅读:
    【C/C++】动态内存分配和链表
    【C/C++】递归算法
    UnicodeMath编码教程
    UnicodeMath数学公式编码_翻译(Unicode Nearly Plain
    浅谈Java反射机制
    lvs--小白博客
    python部署lvs
    python部署galery集群
    python第九章:面向对象--小白博客
    python之yagmail模块--小白博客
  • 原文地址:https://www.cnblogs.com/nanxiang/p/15307618.html
Copyright © 2011-2022 走看看