• MySQL复制


    复制介绍

    MySQL复制:

    • MySQL replication=异步复制
    • 完全同步复制,PXC是同步复制--master和slave,没有区别
    复制是单向的,,只能从master复制到slave上
    slave上对于master包含的数据不能进行写操作
    一组复制结构中可以有多个slave,对于master一般场景推荐只有一个

    原理:

    1.master用户写入数据,生成event记到binary log中
    2.slave I/O thread接收master传来的binlog写入relay log中
    3.slave SQL thread按顺序应用,重现master上的用户操作
      slave 在做日志重放的是串行的io线程是一个(是串行的),sql线程和db一样多(5.6基于库的并行同步)

    复制的使用价值

    利用从库做读能力的提升
    利用从库做master故障的接管
    利用从库做备份减少对业务的影响
    利用复制升级
    利用slave进行特殊SQL统计
     
    环境规范
    1.1组主从里面端口号要一致

    2.要求是每个实例上的server-id为IP最后一位+端口号

    3.主从尽可能是版本一致,严禁主的版本高从的版本低,binlog传输到slave有可能应用不了

    4.复制建一个帐号:grant replication slave on *.* to 'repl'@'%' identified by 'repl4slave';

    5.拿到主库的一致性备份

         
    /usr/local/mysql/bin/mysqldump -u root -p -h 127.0.0.1 --master-data=2  --single-transaction --databases glc > dumpglc.sql
     
    general_log内容:
    ###########################
    160421 14:49:51          2 Connect         root@127.0.0.1 on
                           2 Connect         Access denied for user 'root'@'127.0.0.1' (using password: YES)
    160421 14:50:13          3 Connect         root@127.0.0.1 on
                           3 Query    /*!40100 SET @@SQL_MODE='' */                                                                      #设置SQL模式
                           3 Query    /*!40103 SET TIME_ZONE='+00:00' */                                                                 #设置时区
                           3 Query    SHOW STATUS LIKE 'binlog_snapshot_%'                                                               #查看当前binlog文件名及pos点,该信息用于复制。( --master-data=2 参数)
                           3 Query    SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ                                            #设置当前会话的事物隔离级别为RR,确保本次会话(dump)时,不会看到其他会话已经提交了的数据。
                           3 Query    START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */    
                           3 Query    SHOW VARIABLES LIKE 'gtid\_mode'                                                                   #查看gtid模式状态
                           3 Query    SHOW STATUS LIKE 'binlog_snapshot_%'                                                               #查看当前binlog文件名及pos
                           3 Query    UNLOCK TABLES                                                                                      #对表进行解锁
                           3 Query    SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG'
    AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('glc'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME       #做什么用?
                           3 Query    SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_T
    YPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('glc')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME       #做什么用?
                           3 Query    SHOW VARIABLES LIKE 'ndbinfo\_version'
                           3 Init DB  glc
                           3 Query    SHOW CREATE DATABASE IF NOT EXISTS `glc`
                           3 Query    SAVEPOINT sp
                           3 Query    show tables
                           3 Query    show table status like 'MyClass'
                           3 Query    SET SQL_QUOTE_SHOW_CREATE=1     
     #sql_quote_show_create,有两个值(10),默认是1,表示表名和列名会用``包着的。这个服务器参数只可以在session级别设置,不支持global设置的(不支持my.cnf设置)。
                           3 Query    SET SESSION character_set_results = 'binary'                  #设置会话级别的查询结果字符集
                           3 Query    show create table `MyClass`
                           3 Query    SET SESSION character_set_results = 'utf8'                    #设置会话级别的查询结果字符集
                           3 Query    show fields from `MyClass`
                           3 Query    SELECT /*!40001 SQL_NO_CACHE */ * FROM `MyClass`              #获取表的数据,SQL_NO_CACH  确保不会读取缓存里的数据
                           3 Query    SET SESSION character_set_results = 'binary'
                           3 Query    use `glc`
                           3 Query    select @@collation_database                                   #查看排序
                           3 Query    SHOW TRIGGERS LIKE 'MyClass'                                  #查看触发器
                           3 Query    SET SESSION character_set_results = 'utf8'                    #设置查询结果集
                           3 Query    ROLLBACK TO SAVEPOINT sp                                      #回滚到 SAVEPOINT sp
                           3 Query    show table status like 't1'
                           3 Query    SET SQL_QUOTE_SHOW_CREATE=1
                           3 Query    SET SESSION character_set_results = 'binary'
                           3 Query    show create table `t1`
                           3 Query    SET SESSION character_set_results = 'utf8'
                           3 Query    show fields from `t1`
                           3 Query    SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`
                           3 Query    SET SESSION character_set_results = 'binary'
                           3 Query    use `glc`
                           3 Query    select @@collation_database
                           3 Query    SHOW TRIGGERS LIKE 't1'
                           3 Query    SET SESSION character_set_results = 'utf8'
                           3 Query    ROLLBACK TO SAVEPOINT sp
                           3 Query    RELEASE SAVEPOINT sp   
                           3 Quit      
    Dump表结构的时间字符集改成
    SET SESSION character_set_results = 'binary'
               3 Query   use `glc`
               3 Query   select @@collation_database
               3 Query   SHOW TRIGGERS LIKE 't1'
               3 Query   SET SESSION character_set_results = 'utf8'
               3 Query   ROLLBACK TO SAVEPOINT sp
     
    mysqldump --master-data=2  --single-transaction
    View Code

    简单的主从配置

    基本环境介绍
    MySQL版本:MySQL5.6.27

    角色

    Ip:port

    Server-id

    必备条件

    Master

    192.168.247.12

    123316

    启用log-bin主库上创建复制用户

    Slave

    192.168.247.27

    273316

     
     
    核心配置
    Master
    log-bin
    server-id
    #禁掉gtid
    gtid_mode=off
    主库上创建复制用户
    grant replication slave on *.* to ‘repl’@‘%’ identified by ‘’
    flush privileges
    # mysqldump -S /tmp/mysql3316.sock  --master-data=2 --single-transaction -A >20160516full.sql
    # scp 20160516full.sql  192.168.247.12:/tmp/
    View Code
    Slave
    # mysql -S /tmp/mysql3316.sock  </tmp/20160516full.sql  
    --/tmp/20160516full.sql 文件中找到-- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=215;
    master 创建用户用于复制
    grant replication slave on *.* to 'repl'@'192.168.247.%' identified by '123456'
    slave执行change master语句
    CHANGE MASTER TO  master_host='192.168.247.12',
        master_user='repl',
        master_password='123456',
    master_port=3316, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=215;
    start slave;
    show slave statusG;
    *root@localhost:mysql3316.sock  09:27:10 [(none)]>show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.247.12
                      Master_User: repl
                      Master_Port: 3316
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000003
              Read_Master_Log_Pos: 425
                   Relay_Log_File: mysql-relay-bin.000002
                    Relay_Log_Pos: 493
            Relay_Master_Log_File: mysql-bin.000003
                 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: 425
                  Relay_Log_Space: 666
                  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: 123316
                      Master_UUID: f9f3216c-1865-11e6-b1f4-000c29b01c31
                 Master_Info_File: /data/mysql/mysql3316/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp:
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set:
                Executed_Gtid_Set:
                    Auto_Position: 0
    1 row in set (0.00 sec)
    
    ERROR:
    No query specified
    View Code
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    国内DP厂家的相关资料信息
    【转】挟天子以令诸侯博客关于TCP/IP模型与OSI模型的区别
    TMS320CC657基本外围电路调试
    TMS320C6657双核DSP的图像处理系统开发(1):硬件相关tips
    TI c6657开发资源
    PCIE接口的说明
    Flash Builder4注册机
    myeclipse 方法上加上@Override就报错的处理方法
    oracle安装完成后目录中不论有没有tnsnames.ora和listener.ora文件 PLSQL都能连上的问题解决方法
    POJO和javabean的区别
  • 原文地址:https://www.cnblogs.com/weiwenbo/p/6690161.html
Copyright © 2020-2023  润新知