• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysqldump 快速搭建特定库主从架构(GTID)

mysqldump 快速搭建特定库主从架构(GTID)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysqldump,快速搭建,主从架构等相关知识,希望本文的分享对您有所帮助

对于数据总量不大的MySQL数据库搭建主从架构,借助mysqldump工具来实现是不错的选择,再结合MySQL GTID特性,使得高可用轻而易举。本文是基于mysqldump搭建gtid主从的补充。主要是介绍基于多库级别实现GTID主从,即非整个实例级别。下面是本文的具体描述及示例。

相关知识点参考
基于mysqldump搭建gtid主从
MySQL GTID 错误处理汇总
配置MySQL GTID 主从复制
使用mysqldump导出数据库

一、mysqldump时GTID参数

# mysqldump --help|grep gtid-purged -A8
  --set-gtid-purged[=name] 
                      Add 'SET @@GLOBAL.GTID_PURGED' to the output. Possible
                      values for this option are ON, OFF and AUTO. If ON is
                      used and GTIDs are not enabled on the server, an error is
                      generated. If OFF is used, this option does nothing. If
                      AUTO is used and GTIDs are enabled on the server, 'SET
                      @@GLOBAL.GTID_PURGED' is added to the output. If GTIDs
                      are disabled, AUTO does nothing. If no value is supplied                      then the default (AUTO) value will be considered.
        这个参数用于控制在导出数据库时是否导出GTID,针对已开启GTID的mysql实例                      
        就是说导出的数据中已经包含了这些GTID,因此在从库开启从之后需要被跳过
        缺省值为AUTO,如果导出时指定为OFF,则在从库开启从之后会收到error 1236

二、主从环境配置

        主服务器:192.168.1.233:3306  server_id : 233
        从服务器:192.168.1.245:3306  server_id : 245--在主库端创建复制用户
        (root@Master)[(none)]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY '123456'; 

-- 查看主库端的配置文件
        (root@Master)[(none)]>system grep -v ^# /etc/my.cnf

        [mysqld]

        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

        basedir = /usr/local/mysql
        datadir = /data

        server_id=233                
        gtid_mode=on                 
        enforce_gtid_consistency=on  

        log_bin=node233-binlog        log-slave-updates=1    
        binlog_format=row              
        report_host=Master   
        report_port=3306
        master-info-repository = TABLE
        relay-log-info-repository = TABLE
        replicate-do-db=tempdb
        replicate-do-db=testdb

        skip_slave_start=1    ###该参数在启动DB时不会自启动slave,需要手动启动  -- 查看从库端的配置文件 
        (root@Slave)[(none)]>system grep -v ^# /etc/my.cnf

        [mysqld]

        basedir = /usr/local/mysql 
        datadir = /data  

        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

        server_id=245                
        gtid_mode=on                 
        enforce_gtid_consistency=on  

        log_bin=node245-binlog        log-slave-updates=1    
        binlog_format=row            
        report_host=Slave
        report_port=3306
        master-info-repository = TABLE
        relay-log-info-repository = TABLE
        replicate-do-db=tempdb
        replicate-do-db=testdb

        skip_slave_start=1  ###该参数在启动DB时不会自启动slave,需要手动启动

三、主库端的设置

演示环境
        (root@Master)[(none)]>show variables like 'version';
        +---------------+------------+
        | Variable_name | Value      |
        +---------------+------------+
        | version       | 5.7.12-log |
        +---------------+------------+

--创建需要复制的数据库tempdb与testdb        (root@Master)[(none)]>create database tempdb;

        (root@Master)[(none)]>use tempdb;

        (root@Master)[tempdb]>create table tb(`userId` int);

        (root@Master)[(none)]>create database testdb;

        (root@Master)[(none)]>use testdb;

        (root@Master)[testdb]>create table tb(`userId` int);

--主库端执行sql,使用如下脚本        # more insert_id.sh 
        #/bin/sh
        cnt=1

        while [ $cnt -le 10000 ]
        do
                mysql -uroot -ppass -e "insert into tempdb.tb(userId) values($cnt);
                                        insert into testdb.tb(userId) values($cnt)"
                let cnt=$cnt+1
                   sleep 1 
                echo "Insert $cnt"
        done

--执行脚本        # ./insert_id.sh 
        mysql: [Warning] Using a password on the command line interface can be insecure.
        Insert 2
        mysql: [Warning] Using a password on the command line interface can be insecure.
        Insert 3
        mysql: [Warning] Using a password on the command line interface can be insecure.
        Insert 4
             ...........

--dump导出库文件     
        # mysqldump --single-transaction --triggers --routines --events --user=root --password=pass \
        > --databases tempdb testdb  >/tmp/multidb.sql  

--dump文件的内容        # more /tmp/multidb.sql
        -- MySQL dump 10.13  Distrib 5.7.12, for linux-glibc2.5 (x86_64)        --        -- Host: localhost    Database: tempdb        -- ------------------------------------------------------        -- Server version       5.7.12-log        -- 非重要的信息省略 

        SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
        SET @@SESSION.SQL_LOG_BIN= 0;

        --        -- GTID state at the beginning of the backup        --
        --GTID信息,重要,用于主从复制跳过)        SET @@GLOBAL.GTID_PURGED='1b64c25d-8d2b-11e6-9ac0-000c29b82d0d:1-2318';

        --        -- Current Database: `tempdb`        --
        CREATE DATABASE /*!32312 IF NOT EXISTS*/ `tempdb` /*!40100 DEFAULT CHARACTER SET latin1 */;

        USE `tempdb`;

        --        -- Table structure for table `tb`        --
        DROP TABLE IF EXISTS `tb`;        /*!40101 SET @saved_cs_client     = @@character_set_client */;        /*!40101 SET character_set_client = utf8 */;
        CREATE TABLE `tb` (
          `userId` int(11) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;        /*!40101 SET character_set_client = @saved_cs_client */;

        --        -- Dumping data for table `tb`        --
        LOCK TABLES `tb` WRITE;        /*!40000 ALTER TABLE `tb` DISABLE KEYS */;
        INSERT INTO `tb` VALUES (1),(2),(3),(4),(5);        /*!40000 ALTER TABLE `tb` ENABLE KEYS */;
        UNLOCK TABLES;

        --        -- Dumping events for database 'tempdb'        --
        --        -- Dumping routines for database 'tempdb'        --
        --        -- Current Database: `testdb`        --
        CREATE DATABASE /*!32312 IF NOT EXISTS*/ `testdb` /*!40100 DEFAULT CHARACTER SET latin1 */;

        USE `testdb`;

        --        -- Table structure for table `tb`        --
        DROP TABLE IF EXISTS `tb`;        /*!40101 SET @saved_cs_client     = @@character_set_client */;        /*!40101 SET character_set_client = utf8 */;
        CREATE TABLE `tb` (
          `userId` int(11) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;        /*!40101 SET character_set_client = @saved_cs_client */;

        --        -- Dumping data for table `tb`        --
        LOCK TABLES `tb` WRITE;        /*!40000 ALTER TABLE `tb` DISABLE KEYS */;
        INSERT INTO `tb` VALUES (1),(2),(3),(4),(5);        /*!40000 ALTER TABLE `tb` ENABLE KEYS */;
        UNLOCK TABLES;

        --        -- Dumping events for database 'testdb'        --
        -- 在上面dump出来的每个表中可以看到导出的时候已经产生了数据1-5        -- Dumping routines for database 'testdb'        --        SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

--将导出文件复制到从服务器        [root@node233 ~]# scp /tmp/multidb.sql 192.168.1.245:/tmp

四、从库端的设置

(root@Sl
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析mysqldump的delay-insert选项
  • 解析MySQL中mysqldump工具的基本用法
  • mysqldump造成Buffer Pool污染的研究
  • Mysql导入导出工具Mysqldump和Source命令用法详解
  • Windows下实现MySQL自动备份的批处理(复制目录或mysqldump备份)
  • mysql mysqldump只导出表结构或只导出数据的实现方法
  • mysql数据库备份及恢复命令 mysqldump,source的用法
  • 运用mysqldump 工具时需要注意的问题
  • mysql备份恢复mysqldump.exe几个常用用例
  • mysql中mydumper 和 mysqldump对比使用详解

相关文章

  • 2018-12-05php运行提示Can''t connect to MySQL server on ''localhost
  • 2017-05-11在数据库里将毫秒转换成date格式的方法
  • 2018-12-05Mysql数据格式
  • 2018-12-05 MongoDB循序渐进之[特性]面向文档存储
  • 2018-12-05详解SQL四种语言:DDL DML DCL TCL_MySQL
  • 2018-12-05 【MySQL 10】游标
  • 2018-12-05mysql全文索引数据查询问题
  • 2018-12-05SQL Server 2012 错误处理增强THROW
  • 2018-12-05Mysql 报Row size too large 65535 的原因及解决方法_MySQL
  • 2018-12-05MySQL死锁问题解决的代码详细介绍

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Redis中整数小集合
    • 有关decimal类型的文章推荐10篇
    • Oracle 随机数
    • MYSQL错误:Can’t open file: ‘×××.MYI’ (err
    • 深入Mysql字符集设置 图文版
    • 关于mysql中替代null的IFNULL()与COALESCE()函数详解
    • MySQL中group_concat函数深入理解
    • MySQL里面的子查询实例
    • SQL Server 2005中更改sa的用户名的方法
    • 提高MySQL 查询效率的三个技巧第1/2页

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有