精华内容
下载资源
问答
  • MySQL复制类型 异步复制 MySQL默认的复制,主库完成事务时立即将结果返回给客户端,并不关心从库是否接受并处理,因此此类型的响应速度快,但是数据的可靠性低。 全同步复制 当主库执行完一个事务,并且所有从库...

    MySQL复制类型

    异步复制

    MySQL默认的复制,主库完成事务时立即将结果返回给客户端,并不关心从库是否接受并处理,因此此类型的响应速度快,但是数据的可靠性低

    全同步复制

    当主库执行完一个事务,并且所有从库也都执行完该事务时才给客户端返回结果,所以全同步复制的数据可靠性极高

    半同步复制

    MySQL5.5以后才开始支持的半同步复制,介于上两者之间。主库在执行完一个事务后,等待至少一个从库收到并写入到中继日志中才返回给客户端,所以相对于全同步来说缩短了响应时间
    因为这个延迟的时间至少是一个TCP/IP的往返时间,所以最好在低延迟的网络中使用

    MySQL的复制方式

    1. 基于SQL语句复制(SBR)
    2. 基于行的复制(RBR)
    3. 混合模式复制(MBR)
    4. 基于GTIDS复制(MySQL5.6.5以后采用该复制方式,对事务的复制)

    部署MySQL主从复制(异步)

    实验环境

    Master:192.168.200.112
    slave1:192.168.200.111
    slave2:192.168.200.11

    准备工作

    所有机器关闭防火墙及selinux

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# iptables -F
    [root@localhost ~]# setenforce 0
    

    为了保证实验顺利进行,还需要对三台服务器进行时间同步。
    Master:

    [root@localhost ~]# yum -y install ntp
    [root@localhost ~]# vim /etc/ntp.conf
    #添加两行
    server 127.127.1.0
    fudge 127.127.1.0 startum 8
    [root@localhost ~]# systemctl start ntpd
    

    slave1、2

    [root@localhost ~]# yum -y install ntpdate
    [root@localhost ~]# ntpdate 192.168.200.112
    

    所有机器安装mysql,这里是用yum安装的mariadb,效果一样

    [root@localhost ~]# yum -y install mariadb mariadb-server
    

    配置主服务器

    修改配置文件

    [root@localhost ~]# vim /etc/my.cnf
    #手动修改或添加
    [mysqld]
    server-id=1	//主从不能相同!!
    log-bin=mysql-binlog	//开启二进制日志,后面是文件的前缀名
    log-slave-ipdates=ture		//允许从服务器更新数据
    

    开启服务器

    [root@localhost ~]# systemctl start mariadb 
    

    创建授权账号、刷新授权表

    MariaDB [(none)]> grant replication slave on *.* to 'myslave'@'192.168.200.%' identified by '123456'
    MariaDB [(none)]> flush privileges;
    

    replication slave:用于复制型从服务器(从主服务器中读取二进制日志的权限)

    查看状态并记下文件名及位置编号,也就是File和Position的值。

    MariaDB [(none)]> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |     1261 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    

    注意,在进行主从复制的时候,如果master以前就有部分数据,为了保持数据的一致性,可以将原始数据进行一次全备,发送给从服务器。

    配置从服务器

    Slave1主配置文件

    [root@localhost ~]# vim /etc/my.cnf
    #手动修改或添加
    server-id=2
    relay-log=relay-log-bin		//前缀名
    relay-log-index=slave-relay-bin.index		//索引文件
    

    Slave2主配置文件

    [root@localhost ~]# vim /etc/my.cnf
    #手动修改或添加
    server-id=3
    relay-log=relay-log-bin		//前缀名
    relay-log-index=slave-relay-bin.index		//索引文件
    

    修改完重启数据库

    [root@localhost ~]# systemctl restart mariadb
    

    启动从库,进行主从库数据同步,Slave1、2相同

    [root@localhost ~]# mysql
    MariaDB [(none)]> change master to
    ->master_host='192.168.200.112',
    ->master_user='myslave',
    ->master_password='123456',
    ->master_log_file='mysql-bin.000003',
    ->master_log_pos='1261';
    MariaDB [(none)]> start slave;
    MariaDB [(none)]> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.200.112
                      Master_User: myslave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 245
                   Relay_Log_File: relay-log-bin.000007
                    Relay_Log_Pos: 529
            Relay_Master_Log_File: mysql-bin.000004
                 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: 245
                  Relay_Log_Space: 1105
                  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: 1
    1 row in set (0.00 sec)
    

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    可以看到从库中的IO线程和SQL线程的开启状态都是“YES”

    测试

    所有库查看下库中信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在主库中创建一个新库,观察从库的情况

    MariaDB [(none)]> create database good; 
    Query OK, 1 row affected (0.00 sec)
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | ab                 |
    | good               |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    6 rows in set (0.00 sec)
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 场景:拷贝一个数据库,其中一张表里含有BLOB类型字段,在执行sql时报错 ORA-01704: 文字字符串过长! 网上通过存储过程,把字段作为变量,再插入到表中。但不太可能批量执行。 最终解决:通过远程数据库,将数据...

    场景:拷贝一个数据库,其中一张表里含有BLOB类型字段,在执行sql时报错

               ORA-01704: 文字字符串过长! 

               网上通过存储过程,把字段作为变量,再插入到表中。但不太可能批量执行。

    最终解决:通过远程数据库,将数据直接插入本地数据可以执行。

    --创建oracle远程连接--
    CREATE PUBLIC DATABASE LINK linkname CONNECT TO 用户名 IDENTIFIED BY 密码 USING '192.168.30.109:1521/orcl';
    
    --关闭远程连接--
    DROP PUBLIC DATABASE LINK linkname;
    
    --查询远程库的表,不能含有CLOB  blob字段--
    select ID_, NAME_ from ACT_GE_BYTEARRAY@linkname;
    
    --先创建表--
    insert into ACT_GE_BYTEARRAY select *from ACT_GE_BYTEARRAY@linkname;  

     

    展开全文
  • 之前都是“备份-还原”,抑或“导出-导入...将工具下载并安装完成后,打开客户端,【连接】-【SQL Server】(根据自己要连接的数据库类型进行选择)如下图:2. 新建连接,配置数据库的连接信息,只需一次,如下图:3....

    之前都是“备份-还原”,抑或“导出-导入”。今天在将SqlServer中的数据导入到MySql中时发现了一个非常方便的方法,无需任何繁琐的配置和操作。废话少说,进入正题:

    工具:Navicat Premium(点击下载)

    1. 将工具下载并安装完成后,打开客户端,【连接】-【SQL Server】(根据自己要连接的数据库类型进行选择)如下图:

    43583c48bbfb14d0b66b80553039b262.png

    2. 新建连接,配置数据库的连接信息,只需一次,如下图:

    03e714e25bcfed26e5fae7aa958dc702.png

    3. 将源数据库和目标数据库都配置好,如下图:

    42e346fca9414f8d923a31b7e6def63f.png

    4. 这里是将SQL Server中的PlatformInfo导入到MySQL中的platforminfo

    7e8fceaefd3541286d1a0763a4e55b29.png

    5. 右键点击源数据库“PlatformInfo”,选择“数据传输...”,如下图:

    61aa04090fa59b855ae13ed73f5bdf07.png

    6. 模式选择为dbo,表可以自行选择特定的哪几张表,默认全选。选择目标数据库,然后点击“开始”。如下图:

    82c0fe9f645f28e99154ac35aae2edcc.png

    7. 信息提示,选择“确定”,如下图:

    2274a6423c99ef773ba946dd3c9205d3.png

    8. 传输过程,如下图:

    e7573576cdca78d5a5ee7db179a3d13a.png

    9. 传输完成后关闭数据传输窗口,然后刷新目标数据库,如下图:

    9adb3e990c9887be35ff1ab1fba84e68.png

    10. 刷新后可以看到源数据库中的表已经到了目标数据库中,如下图:

    698be18dfb1c546303e0c077fa8d98e1.png

    2015.11.16 9:56 willem SQL Server数据库向My SQL数据库导入数据,其他数据库之间的导入数据操作类似

    展开全文
  • 复制mysql/data 文件夹 下面的数据库的形式来复制数据库出现的问题提示找不到表,我去看了一下,丢失了很多个表;问题:直接拷贝data下的数据库数据进行备份 , 发现部分数据表不见了。原因 :以表“Table”为例: ...

    用复制mysql/data 文件夹 下面的数据库的形式来复制数据库出现的问题

    提示找不到表,我去看了一下,丢失了很多个表;

    问题:

    直接拷贝data下的数据库数据进行备份 , 发现部分数据表不见了。

    原因 :

    以表“Table”为例: 如类型是MyISAM, 数据文件则以”Table.frm”,”Table.MYD”,”Table.MYI”三个文件存储于”/data/databasename/”目录中. 如类型是InnoDB, 数据文件则存储在”/data/″中的ibdata1文件中(一般情况),结构文件存在于Table.frm中. MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。 而使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。 MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。

    解决方法就是:

    同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置。启动MySQL的Windows服务 由于MySQL这样数据混杂的形式, 往往很容易让使用者在备份时忘记了备份InnoDB, 从而导致了上述错误。

    如果还是有问题,停止mysql服务,将目录下的ib_logfile*文件全部删除掉,重新启动mysql服务。

    总结:

    1,在进行mysql数据库备份的或迁移的时候,尽量备份完成所需要的数据;

    2,如果直接拷贝原有数据库文件"*.frm"、"*.MYD"、"*.MYI"等文件时候,如果原数据库引擎是InnoDB,切记还需拷贝ibdata1文件

    3,备份数据库的时候,最好是用相关的工具进行备份或是导出sql文件,以免浪费时间在数据库恢复上

    4,msyql版本或是备份工具的版本不同,也可能引起数据恢复有问题。

    展开全文
  • SQL Server数据库复制

    2016-08-27 21:47:00
    事务复制是一种复制类型,对订阅服务器上应用的初始数据快照,然后当发布服务器上发生数据修改时,将捕获到个别的事务并传播到订阅服务。 事务复制的原理是先将发布服务器数据库中的初始快照发送到各订阅服务器,...
  • [20141208]数据库复制并不会复制索引创建删除 背景: 因为一个语句传入的参数和表中类型不一致,然后就修改类型。碰到有依赖列的索引,所以删除了索引,修改,然后创建索引。 问题和原因: 导致在...
  • redis-copy, 将一个redis数据库复制到另一个数据库 RedisCopy这个工具提供了一种将一个redis数据库的内容移动到另一个redis数据库的方法。 代码是由包含在redis源代码中的 redis-copy.rb 脚本插件激发的,但目标是...
  • 数据库复制 在网上看到一个数据库复制,感觉挺有意思的 一般情况下最好定期备份,这只是练习 /** *复制表结构的通用存储过程 */ -- Transfer对象的重要属性 -- 1. 属性 属性名 类型 描述 ----------------...
  • 背景: 因为一个语句传入的参数和表中类型不一致...导致在数据库事务复制下,没有复制索引的删除和创建,导致复制报错 本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/p/4150993.htm...
  • 你可能运行的是 Oracle 10g Release 2 数据库服务器 但是需要支持某些应用程序可能是 很早之前写好的在 Oracle 8i 之前的版本创建的数据表常用 LONG 数据类型来存储大型文 本 随着 Large Object LOB 数据类型的引入 ...
  • 众所周知,MYSQL MyISAM类型数据库的备份迁移方法很容易,直接复制数据库文件就可以,不过 需要注意的是复制前要先关闭MYSQL服务。  对于数据量小的数据库,INNODB类型数据库的可行的迁移方法如下:  1. 先导...
  • 数据库经典类型

    2019-02-28 22:06:40
    1、MySQL的复制原理以及流程(基本原理流程,3个线程以及之间的关联;) 主:binlog(负责记录表和库变更的二进制文件,可以用于本机的数据恢复和主从同步)线程将改变了数据库的语句进行记录,放进master上面的binlog中 ...
  • 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使用链接服务器+触发器,来实现数据同步,但当要同步的数据表比较多,那么可以考虑用数据库复制技术,来实现数据的同步。 不同的发布类型...
  • 日志类型: 错误日志(error log) 常规日志(general log) 二进制日志(bin log) 中继日志(relay log) 慢日志(slow log) InnoDB引擎的redo log 这里查看的是跟binlog有关的变量(这是因为之前在搭建MHA高...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,654
精华内容 1,861
关键字:

数据库复制类型