基于mysqldump快速搭建从库

mysql主从搭建总的来说大致分为3个步骤,一是为主从实例添加复制所需参数以及创建复制用的账户,二在是需要在主库建立快照,三是在从库上添加指向主库IP,端口,用户名,密码,binlog位置等。而对于主从搭建的快照方式有很多种,如使用InnoDB hotbak,xtrabackup,mysqldump以及直接使用tar方式来建立快照。本文主要介绍使用mysqldump方式来建立快照,适用于不超过20GB左右的数据库。

与本文有关的相关参考:
        使用mysqldump导出数据库        MySQL 复制简要描述及示例        MySQL多实例配置(一)        MySQL多实例配置(二)

1、实例级别的主从搭建

-- 演示环境,另,本文演示基于同一主机的多实例,主端口为3406,从端口为3506
[email protected][(none)]> show variables like ‘version‘;
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| version       | 5.6.12-log |
+---------------+------------+

[email protected][(none)]> system cat /etc/issue
CentOS release 5.4 (Final)
Kernel \r on an \m

--有关参主从数配置,请参考MySQL 复制简要描述及示例
--创建用于复制的账户
[email protected][(none)]> grant replication slave on *.* to ‘repl‘@‘192.168.1.177‘ identified by ‘xxx‘;
Query OK, 0 rows affected (0.01 sec)

--全局读锁
[email protected][(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.02 sec)

[email protected][(none)]> system pwd
/data/inst3406

--获取master binlog位置
[email protected][(none)]> show master status;
+--------------------+----------+--------------+------------------+-------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+--------------+------------------+-------------------+
| inst3406bin.000001 |     2169 |              |                  |                   |
+--------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

--使用mysqldump导出实例
[email protected][(none)]> system mysqldump -uroot -pxxx -S /tmp/mysql3406.sock --routines --all-databases --opt >alldb.sql

[email protected][(none)]> system ls
alldb.sql  data3406  

--解锁
[email protected][(none)]> unlock tables;

[email protected][(none)]> exit

--从库上面导入dump
[[email protected] inst3406]$ mysql -uroot -pxxx -S /tmp/mysql3506.sock <alldb.sql

--从库上设置主库的相关信息(host,port等等)
[[email protected] inst3506]$ mysqls
[email protected][(none)]> change master to
    -> MASTER_HOST=‘192.168.1.177‘,
    -> MASTER_USER=‘repl‘,
    -> MASTER_PASSWORD=‘xxx‘,
    -> MASTER_PORT=3406,
    -> MASTER_LOG_FILE=‘inst3406bin.000001‘,
    -> MASTER_LOG_POS=2169;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

--启动slave
[email protected][(none)]> start slave;

2、部分库从库搭建

--以下演示为仅搭建部分从库,为只同步sakila tempdb 2个库
--重置从库
[email protected][(none)]> stop slave;
Query OK, 0 rows affected (0.01 sec)

[email protected][(none)]> reset slave all;
Query OK, 0 rows affected (0.01 sec)

--为从库添加只同步sakila tempdb 2个库,以下为修改后的结果
[[email protected] ~]$ grep replicate /data/inst3506/data3506/my3506.cnf
replicate-do-db=test
replicate-do-db=sakila

[[email protected] ~]$ grep skip-slave /data/inst3506/data3506/my3506.cnf
skip-slave-start

--修改后重启3506以使从配置生效
[[email protected] ~]$ mysqladmin -uroot -pxxx -S /tmp/mysql3506.sock shutdown

[[email protected] ~]$ mysqld_safe --defaults-file=/data/inst3506/data3506/my3506.cnf &

--从主库仅导出sakila tempdb
[[email protected] ~]$ mysqldump -uroot -pxxx -S /tmp/mysql3406.sock --single-transaction --master-data=2 -R --database sakila tempdb>multidb.sql

--在从库端登陆执行dump文件
[[email protected] ~]$ mysqls
[email protected][(none)]> source multidb.sql

--查看dump期间的master binlog位置
[email protected][tempdb]> system grep -i "change master" multidb.sql
-- CHANGE MASTER TO MASTER_LOG_FILE=‘inst3406bin.000001‘, MASTER_LOG_POS=3293117;

--从库上设置主库的相关信息(host,port等等)
[email protected][tempdb]> change master to
    -> MASTER_HOST=‘192.168.1.177‘,
    -> MASTER_USER=‘repl‘,
    -> MASTER_PASSWORD=‘xxx‘,
    -> MASTER_PORT=3406,
    -> MASTER_LOG_FILE=‘inst3406bin.000001‘,
    -> MASTER_LOG_POS=3293117;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

--启动从库
[email protected][tempdb]> start slave;
Query OK, 0 rows affected (0.01 sec)

-- Author : Leshami
-- Blog   : http://blog.csdn.net/leshami
--校验结果
[email protected][tempdb]> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.177
                  Master_User: repl
                  Master_Port: 3406
                Connect_Retry: 60
              Master_Log_File: inst3406bin.000001
          Read_Master_Log_Pos: 3293117
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 285
        Relay_Master_Log_File: inst3406bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test,sakila

--需要注意的是,本文的mysqldump期间,--single-transaction 仅仅对innodb引擎有效
--如果仅使用--master-data,则会开启--lock-all-tables
The --master-data and --single-transaction options can be used simultaneously, which provides a convenient way to
       make an online backup suitable for use prior to point-in-time recovery if tables are stored using the InnoDB
       storage engine.
时间: 2024-11-04 23:32:45

基于mysqldump快速搭建从库的相关文章

基于 Jenkins 快速搭建持续集成环境

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能.本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境. 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变

wwwlyjustcom基于HTML5快速搭建3D机房设备面板199O8836661

以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟的设备是机房设备,先来目睹下最终效果: 基于HTML5快速搭建3D机房设备面板我来解释下这个模型,一个带有透明玻璃门的机柜,机柜里装有5台设备,门可以开合,设备可以插拔,那么我么该如何搭建这样的设备呢?方法不难,我们一步一步来.基于HTML5快速搭建3D机房设备面板看起来有模有样的,其实呢,它就是一

基于Docker快速搭建多节点Hadoop集群--已验证

Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群. 一. 项目简介 GitHub: kiwanlau/hadoop-cluster-docker 直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说.他们还没开

基于Vue-cli 快速搭建项目

Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装vue和vue-cli 1.nodejs和npm安装方法详见https://www.cnblogs.com/le220/p/8670349.html 2.npm install -g vue 3.npm install -g vue-cli 二.vue-cli快速搭建项目 安装完成后,同时在C:\Us

基于 Docker 快速搭建 Oracle 开发环境

要给开发人员搭建 Oracle 测试环境,准备基于 Docker 构建,同时建立一个 Docker 私有仓库,谁需要就让他装一个 Docker,才从这私有仓库 pull 镜像即可. 环境如下: CentOS 7 docker-ce-18.03.1.ce-1.el7.centos.x86_64Oracle 12c 安装Docker # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 #

基于HTML5快速搭建3D机房设备面板

以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟的设备是机房设备,先来目睹下最终效果:http://www.hightopo.com/demo/blog_3d_20150810/server.html 我来解释下这个模型,一个带有透明玻璃门的机柜,机柜里装有5台设备,门可以开合,设备可以插拔,那么我么该如何搭建这样的设备呢?方法不难,我们一步一步

基于Jenkins快速搭建持续集成环境

看了园友张善友的博文,尝试成功.便有此作.原网址:http://www.cnblogs.com/shanyou/p/3750714.html 天下事有难易乎?为之,则难者亦易矣:不为,则易者亦难矣. 首先要学会使用MSBuild构建脚本 附网址:http://www.infoq.com/cn/articles/MSBuild-1. 目标:学会用MSBuild编译程序,主要用于asp.net 或者 asp.net mvc. 最终,我写的脚本如下: <Project xmlns="http:/

基于Docker快速搭建wordpress博客

wordpress数据存储依赖mysql数据库,以docker容器方式部署完整的wordpress博客服务,则需要从镜像仓库拉取mysql.wordpress镜像,这里选择从开源的docker hub 获取mysql 5.7版本,wordpress latest版本,同时需要准备一台具备外网环境的机器,硬件配置最好1C2G以上,当然1C1G也是没有问题的. docker pull mysql:5.7 docker pull wordpress:latest 启动mysql数据库服务 docker

基于容器快速搭建onos环境

docker pull onosproject/onos:1.14.0 docker pull iwaseyusuke/mininet:latest docker create --name onos1140 --hostname onos  -p 8101:8101 -p 8181:8181 -p 6633:6633 -it onosproject/onos:1.14.0 docker run -it -d -it --privileged -e DISPLAY  -v /tmp/.X11-u