zoukankan      html  css  js  c++  java
  • 牛刀小试MySQL--基于GTID的replication

    实验环境:两个MySQL实例

    IP地址:10.0.0.201 端口:3306 (MySQL的Master)
    IP地址:10.0.0.201 端口:3307 (MySQL的Slave)

    需要的参数

    • server_id: 每个MySQL实例的server_id必须不一样。
    • log-bin:MySQL开启binglog日志。
    • gtid_mode=ON : MySQL开启GTID模式。
    • enforce-gtid-consistency=true :保证GTID的数据一致性。
    • log_slave_updates=1:Slave接收来自Master的更新操作日志,并记录至Slave的binlog日志中。可以完成级联复制
    • binlog_format= row:基于行格式,保证数据的一致。
    • skip-slave-start=1:保证Slave数据库启动的时候,slave不会自动启动(可以手动来启动 start slave)

    步骤:

    1.my.cnf的参数配置如下:

    • Master(3306)的配置
        server-id = 1203306
        log-bin = /data/mysqldata/3306/binlog/mysql-bin
    
        #*********** GTID settting*******************
        gtid_mode=ON
        enforce-gtid-consistency=true 
        binlog_format= row
        skip-slave-start=1
        log_slave_updates = 1
    
    • Slave(3307)的配置
        server-id = 1203307
        log-bin = /data/mysqldata/3307/binlog/mysql-bin
    
        #*********** GTID settting*******************
        gtid_mode=ON
        enforce-gtid-consistency=true 
        binlog_format= row
        skip-slave-start=1
        log_slave_updates = 1
    

    2.为Replication创建一个用户

    在master上,配置一个新用户,可以让slaves数据库能权限访问master数据库

    mysql> CREATE USER 'repl'@'10.0.0.201' IDENTIFIED BY 'repl@3307';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.0.201';
    

    3.保证Master数据库的数据一致性,设置为只读

    mysql> SET @@global.read_only = ON;
    

    3.备份Master数据库的数据

    master导出备份
    /usr/local/mysql/bin/mysqldump -uroot -p'zsd@7101' -S /data/mysqldata/3306/mysql.sock --all-databases --triggers --routines --events --flush-logs --single-transaction -e --default-character-set=utf8 | gzip > mysql_3306_full_backup_`date +%F`.sql.gz
    

    参数详解:

    • all-databases: --all-databases, -A。备份所有数据库的所有表。。
    • triggers:备份所有触发器。
    • routines: 备份所有存储过程和函数。
    • events :数据库的事件。
    • flush-logs:在数据dump之前,刷新数据库的日志。
    • single-transaction:服务器dump之前,发起一个BEGIN SQL的语句, START TRANSACTION 放进一个事务里面,保证数据的一致性,防止锁表。
    • default-character-set=utf8:保证导出的字符集为UTF8
    • extended-insert:-e 产生一个相对来说较小的dump文件,加速导入数据库时,插入数据的速度。加快数据库的恢复。
    slave导入备份
    /usr/local/mysql/bin/mysql -uroot -p'zsd@3307' -S /data/mysqldata/3307/mysql.sock --default-character-set=utf8 < mysql_3306_full_backup_2018-06-01.sql
    

    5.SLAVE追日志,完成复制操作

    • 抽象语句
    mysql> CHANGE MASTER TO
         >     MASTER_HOST = host,
         >     MASTER_PORT = port,
         >     MASTER_USER = user,
         >     MASTER_PASSWORD = password,
         >     MASTER_AUTO_POSITION = 1;
    
    • 实战语句
    CHANGE MASTER TO MASTER_HOST = '10.0.0.201',MASTER_PORT = 3306,MASTER_USER = 'repl',MASTER_PASSWORD = 'repl@3307',MASTER_AUTO_POSITION = 1;
    

    6.启动Slave

    mysql> START SLAVE;
    

    7.查看slave状态

    (root@localhost) [(none)]> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.0.0.201
                      Master_User: repl
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000011
              Read_Master_Log_Pos: 1658
                   Relay_Log_File: relay-bin.000002
                    Relay_Log_Pos: 1832
            Relay_Master_Log_File: mysql-bin.000011
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 1658
                  Relay_Log_Space: 2034
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1203306
                      Master_UUID: 4160e9b3-58d9-11e8-b174-005056af6f24
                 Master_Info_File: mysql.slave_master_info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 4160e9b3-58d9-11e8-b174-005056af6f24:27-32
                Executed_Gtid_Set: 4160e9b3-58d9-11e8-b174-005056af6f24:1-32,
    e60a3353-6567-11e8-b305-005056af6f24:1-2
                    Auto_Position: 1
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
           Master_public_key_path: 
            Get_master_public_key: 0
    1 row in set (0.00 sec)
    

    8.Master数据库,关闭只读

    mysql> SET @@global.read_only = OFF;
    

    知识点:完全删除replication的拓扑结构
    (root@localhost) [(none)]> stop slave;
    (root@localhost) [(none)]> RESET SLAVE ALL;

  • 相关阅读:
    自定义动画animate()
    【Java】正则表达式
    【Java】连接数据库SQLServer
    【Java】导入导出TXT文件
    【数据库】SELECT语句
    数据结构与算法系列之目录
    【Java】员工统计
    【Java】生产者消费者模式
    【Java】购物超市
    【Java】导入导出Excel表格
  • 原文地址:https://www.cnblogs.com/zhangshengdong/p/9172110.html
Copyright © 2011-2022 走看看