精华内容
下载资源
问答
  • 首先在两台MySQL服务器192.168.1.89(主)和192.168.1.90(备)上安装版本一样的mysql,大家可以参照着点击打开链接去安装安装好以后在192.168.1.89(主)上面的my.cnf文件上面加入以下参数binlog_format = mixedexpire_...

    首先在两台MySQL服务器192.168.1.89(主)和192.168.1.90(备)上安装版本一样的mysql,大家可以参照着点击打开链接去安装

    安装好以后在192.168.1.89(主)上面的my.cnf文件上面加入以下参数

    binlog_format = mixed

    expire_logs_days = 15

    //慢sql时间

    slow_query_log = 1

    long_query_time = 1

    //慢sql输出位置

    slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log

    log_error = /usr/local/mysql/logs/mysql-error.log

    #主服务器的id

    server-id = 1

    log-bin = /usr/local/mysql/logs/mysql-bin.log

    //需要同步的db名称

    binlog-do-db=test

    //不需要同步的db名称

    binlog-ignore-db=mysql

    innodb_buffer_pool_size = 1000M

    192.168.1.90(从)上面的my.cnf文件加入一下参数

    binlog_format = mixed

    expire_logs_days = 15

    #慢sql时间

    slow_query_log = 1

    long_query_time = 1

    #慢sql输出位置

    slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log

    log_error = /usr/local/mysql/logs/mysql-error.log

    #从服务器的id

    server-id = 2

    log-bin = /usr/local/mysql/logs/mysql-bin.log

    #需要同步的db名称

    replicate-do-db=test

    #不需要同步的db名称

    replicate-ignore-db=mysql

    innodb_buffer_pool_size = 1000M

    配置MySQL主服务器(192.168.1.89)

    mysql -uroot -p #进入MySQL控制台

    insert into mysql.user(Host,User,Password) values('localhost','slavetest',password('123456')); #创建用于主从备份的帐号

    ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

    报以上错误的话

    原因:在我的配置文件my.cnf中有这样一条语句

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    指定了严格模式,为了安全,严格模式禁止通过insert 这种形式直接修改mysql库中的user表进行添加新用户

    解决办法:

    将配置文件中的STRICT_TRANS_TABLES删掉,即改为:

    sql_mode=NO_ENGINE_SUBSTITUTION

    #建立MySQL主从数据库同步用户slavetest密码123456

    flush privileges; #刷新系统授权表

    #授权用户slavetest只能从192.168.1.89这个IP访问主服务器192.168.1.90上面的数据库,并且只具有数据库备份的权限,设置密码为123456

    grant replication slave on *.* to 'slavetest'@'192.168.1.89' identified by '123456' with grant option;

    备份db

    先锁表

    FLUSH TABLES WITH READ LOCK;

    然后重新起一个ssh再导出

    mysqldump -u root -p -h 127.0.0.1 -P 3306 --skip-lock-tables test >/home/sh/test.sql

    然后再查看,记录下bin和pos

    SHOW MASTER STATUS;

    +------------------+----------+--------------+------------------+-------------------+

    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

    +------------------+----------+--------------+------------------+-------------------+

    | mysql-bin.000002 | 752 | | mysql | |

    +------------------+----------+--------------+------------------+-------------------+

    1 row in set (0.00 sec)

    最后解锁

    UNLOCK TABLES;

    然后传输到另外一台服务器

    scp test.sql root@192.168.1.90:/home/sh/

    配置从Mysql服务器(192.168.1.90)

    mysql -u root -p #进入从服务器MySQL控制台

    create database test; #创建数据库

    use test #进入数据库

    source /home/sh/test.sql #导入备份文件到数据库

    或者通过以下的方式也可以导入到db

    mysql -u root -p -h 127.0.0.1 -P 3306 -B test < test.sql

    停止同步

    stop slave;

    #执行同步语句

    change master to master_host='192.168.1.89', master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=752,master_user='slaveTest',master_password='123456';

    开始同步

    start slave;

    #查看slave同步信息,出现以下内容

    SHOW slave STATUS \G

    root@(none) 11:04>show slave status\G;

    *************************** 1. row ***************************

    Slave_IO_State: Waiting for master to send event

    Master_Host: 192.168.1.89

    Master_User: slaveTest

    Master_Port: 3306

    Connect_Retry: 60

    Master_Log_File: mysql-bin.000002

    Read_Master_Log_Pos: 752

    Relay_Log_File: relay-log.000003

    Relay_Log_Pos: 372

    Relay_Master_Log_File: binlog.000007

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    Replicate_Do_DB: test

    Replicate_Ignore_DB: mysql,mysql

    Replicate_Do_Table:

    Replicate_Ignore_Table:

    Replicate_Wild_Do_Table:

    Replicate_Wild_Ignore_Table: mysql.%

    Last_Errno: 0

    Last_Error:

    Skip_Counter: 0

    Exec_Master_Log_Pos: 229

    Relay_Log_Space: 797

    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: 88888

    1 row in set (0.00 sec)

    最后注意查看:

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    以上这两个参数的值为Yes,即说明配置成功!

    测试MySQL主从服务器双机热备是否成功

    1、进入MySQL主服务器

    mysql -u root -p #进入主服务器MySQL控制台

    use test #进入数据库

    CREATE TABLE test2 ( id int not null ,name char(20) ); #创建test表

    2、进入MySQL从服务器

    mysql -u root -p #进入MySQL控制台

    use test #进入数据库

    show tables; #查看test表结构,会看到有一个新建的表test2,表示数据库同步成功

    至此,MySQL数据库配置主从服务器实现双机热备实例教程完成

    展开全文
  • 一 简介 我们来探讨下多机房下的mysql架构二 目的:首先要清楚你的目的1 实现异地机房的容灾备份2 实现异地机房的双活三 叙说1 实现异地机房的容灾备份目的 只是将数据备份到异地,当第一机房发生故障时,能最大可能的...

    一 简介 我们来探讨下多机房下的mysql架构

    二 目的:

    首先要清楚你的目的

    1 实现异地机房的容灾备份

    2 实现异地机房的双活

    三 叙说

    1 实现异地机房的容灾备份

    目的 只是将数据备份到异地,当第一机房发生故障时,能最大可能的保留数据.实现冗余效果

    业务 核心业务在第一机房,第二机房和第一机房都共同使用第一机房的数据源,只有当第一机房发 生故障时,核心业务才会切换到第二机房

    实现难度 简易

    角色 1 数据备份冗余 2 故障发生时的数据写入保留

    2 实现异地机房的双活

    目的 多机房状态下的多业务进行

    业务 核心业务在第一机房和第二机房都开展,各自有本地的数据源,当某一机房发生故障时,核心业务会合并到正常的机房

    实现难度 复杂

    角色 1数据备份冗余 2 支撑异地业务和故障的业务再支持

    四 针对单一业务的解决方案

    数据库角度

    1 单一业务 只需在异地机房搭建mysql从库即可,做好mysql从库的延迟监控,定期备份,打开读写,实现了数据库的冗余备份,不要求高实时性和数据准确性

    2 采用 MGR/PXC 方案,但是还是单写方式,这样能实现异地机房的高一致性,但是记住这样的架构依赖于非常好的专线网络,否则会降低整个集群的性能

    3 采用 半同步复制,只要binlog传输到异地机房则代表可以继续进行,这样至少能保证binlog的成功保存,也可以直接采用binlog_server 保存binlog

    4 采用程序中间件和对数据库的二次改造 通过对异地机房程序进行数据的确认和减少binlog的传输量入手

    程序角度

    1 双机房程序共用第一机房的数据源,第二机房的数据源不会使用,建议采用DNS方式,当第一机房挂掉后,DNS才会转移到第二机房提供正常服务

    五 针对多机房业务的解决方案

    1 双机房都提供读写服务,针对DB级别进行拆分,比如DB1在第一机房读写 DB2在第二机房读写,机器在双机房进行数据同步,实现异地双活提供服务和数据冗余备份功能

    2 采用MGR/PXC方案,是多写方式,这样能实现双机房数据的一致性

    3 采用程序中间件和对数据库的二次改造实现

    六 总结:

    建造异地机房必须要考虑的几个方面

    1 良好稳定的网络带宽

    2 减少网络开销,压缩binlog或者WS(MGR/PXC的验证机)网络参数优化

    3 按照业务优先级进行建造

    4 异地数据的确认

    展开全文
  • mysql开启二进制log_bin mysql版本: mysql -V mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrappe 配置文件目录为/etc/mysql/mysql.cnf 进入conf.d目录,打开mysql.cnf,发现并没有...

    mysql开启二进制log_bin

    mysql版本:
    mysql -V
    mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrappe


    配置文件目录为/etc/mysql/mysql.cnf

    进入conf.d目录,打开mysql.cnf,发现并没有配置
    进入mysql.conf.d目录,打开mysql.cnf,可以看到配置项

    然后修改下面两项,把注释去掉即可

    这里写图片描述

    说明:mysqld.cnf需要修改权限,默认是644改为可读可写可执行chmod 777,然后权限再修改回来
    这里写图片描述


    重启mysql

    sudo service mysql restart

    show variables like ‘%log_ bin%’这里写图片描述

    可以看到log_bin由原来的OFF改为了ON,
    修改成功,perfect!

    展开全文
  • 您看,像在mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪...

    一、什么是主从复制?

    主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。您看,像在mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到从服务器的更新中去。当一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从哪个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新

    二、主从复制的作用(好处,或者说为什么要做主从)重点?

    做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

    架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的评率,提高单个机器的I/O性能。

    读写分离,使数据库能支持更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

    1--在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;(主库写,从库读,降压)

    2--在从主服务器进行备份,避免备份期间影响主服务器服务;(确保数据安全)

    3--当主服务器出现问题时,可以切换到从服务器。(提升性能)

    三、主从复制的原理?

    1.数据库有个bin-log二进制文件,记录了所有sql语句。

    2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。

    3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。

    4.下面的主从配置就是围绕这个原理配置

    5.具体需要三个线程来操作:

    1.binlog输出线程:每当有从库连接到主库的时候,主库都会创建一个线程然后发送binlog内容到从库。在从库里,当复制开始的时候,从库就会创建两个线程进行处理:

    2.从库I/O线程:当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件,其中包括relay log文件。

    3.从库的SQL线程:从库创建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。

    可以知道,对于每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个binlog输出线程,每一个从库都有它自己的I/O线程和SQL线程。

    主从复制如图  帮助理解:

    dae709e9896b22141c8f7379b436cc73.png

    5173adcaf99d2b037b0431745188ae7a.png

    四、主从复制的好处?

    做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

    架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的评率,提高单个机器的I/O性能。

    读写分离,使数据库能支持更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

    好处一:实现服务器负载均衡

    通过服务器复制功能,可以在主服务器和从服务器之间实现负载均衡。即可以通过在主服务器和从服务器之间切分处理客户查询的负荷,从而得到更好地客户相应时间。通常情况下,数据库管理员会有两种思路。

    一是在主服务器上只实现数据的更新操作。包括数据记录的更新、删除、新建等等作业。而不关心数据的查询作业。数据库管理员将数据的查询请求全部 转发到从服务器中。这在某些应用中会比较有用。如某些应用,像基金净值预测的网站。其数据的更新都是有管理员更新的,即更新的用户比较少。而查询的用户数 量会非常的多。此时就可以设置一台主服务器,专门用来数据的更新。同时设置多台从服务器,用来负责用户信息的查询。将数据更新与查询分别放在不同的服务器 上进行,即可以提高数据的安全性,同时也缩短应用程序的响应时间、提高系统的性能。

    二是在主服务器上与从服务器切分查询的作业。在这种思路下,主服务器不单单要完成数据的更新、删除、插入等作业,同时也需要负担一部分查询作 业。而从服务器的话,只负责数据的查询。当主服务器比较忙时,部分查询请求会自动发送到从服务器重,以降低主服务器的工作负荷。当然,像修改数据、插入数 据、删除数据等语句仍然会发送到主服务器中,以便主服务器和从服务器数据的同步。

    好处二:通过复制实现数据的异地备份

    可以定期的将数据从主服务器上复制到从服务器上,这无疑是先了数据的异地备份。在传统的备份体制下,是将数据备份在本地。此时备份 作业与数据库服务器运行在同一台设备上,当备份作业运行时就会影响到服务器的正常运行。有时候会明显的降低服务器的性能。同时,将备份数据存放在本地,也 不是很安全。如硬盘因为电压等原因被损坏或者服务器被失窃,此时由于备份文件仍然存放在硬盘上,数据库管理员无法使用备份文件来恢复数据。这显然会给企业 带来比较大的损失。

    而如果使用复制来实现对数据的备份,就可以在从服务器上对数据进行备份。此时不仅不会干扰主服务气的正常运行,而且在备份过程中主服务器可以继 续处理相关的更新作业。同时在数据复制的同时,也实现了对数据的异地备份。除非主服务器和从服务器的两块硬盘同时损坏了,否则的话数据库管理员就可以在最 短时间内恢复数据,减少企业的由此带来的损失。

    好处三:提高数据库系统的可用性

    数据库复制功能实现了主服务器与从服务器之间数据的同步,增加了数据库系统的可用性。当主服务器出现问题时,数据库管理员可以马上让从服务器作为主服务器,用来数据的更新与查询服务。然后回过头来再仔细的检查主服务器的问题。此时一般数据库管理员也会采用两种手段。

    一是主服务器故障之后,虽然从服务器取代了主服务器的位置,但是对于主服务器可以采取的操作仍然做了一些限制。如仍然只能够进行数据的查询,而 不能够进行数据的更新、删除等操作。这主要是从数据的安全性考虑。如现在一些银行系统的升级,在升级的过程中,只能够查询余额而不能够取钱。这是同样的道理。

    二是从服务器真正变成了主服务器。当从服务器切换为主服务器之后,其地位完全与原先的主服务器相同。此时可以实现对数据的查询、更新、删除等操 作。为此就需要做好数据的安全性工作。即数据的安全策略,要与原先的主服务器完全相同。否则的话,就可能会留下一定的安全隐患。

    四 从数据库的读的延迟问题了解吗?如何解决?

    主库宕机后,数据可能丢失

    从库只有一个sql Thread,主库写压力大,复制很可能延时

    解决方法:

    半同步复制—解决数据丢失的问题

    并行复制—-解决从库复制延迟的问题

    https://blog.csdn.net/darkangel1228/article/details/80003967

    主从复制和主主复制区别?

    最大区别是 主从是对主操作数据,从会实时同步数据。反之对从操作,主不会同步数据,还有可能造成数据紊乱,导致主从失效。 主主则是无论对那一台操作,另一个都会同步数据。一般用作高容灾方案

    转自:https://blog.csdn.net/weixin_43879074/article/details/88525006

    展开全文
  • 一 简介 我们来探讨下多机房下的mysql架构二 目的:首先要清楚你的目的1 实现异地机房的容灾备份2 实现异地机房的双活三 叙说1 实现异地机房的容灾备份目的 只是将数据备份到异地,当第一机房发生故障时,能最大可能的...
  • mysql 架构 ~异地容灾

    2018-08-30 10:47:00
    一 简介 我们来探讨下多机房下的mysql架构二 目的: 首先要清楚你的目的 1 实现异地机房的容灾备份 2 实现异地机房的双活 三 叙说 1 实现异地机房的容灾备份 目的 只是将数据备份到异地,当第一机房发生故障时,能最大...
  • MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时...
  • mysql-5.6.28主从备份,异地容灾

    千次阅读 2016-04-26 22:08:51
    首先在两台MySQL服务器192.168.1.89(主)和192.168.1.90(备)上安装版本一样的mysql,大家可以参照着点击打开链接去安装 安装好以后在192.168.1.89(主)上面的my.cnf文件上面加入以下参数 binlog_format = mixed ...
  • 1. 容灾的基本认识1.1 概念容灾系统是指在相隔较远的异地,建立两套或多套功能上相同的系统。一个系统处于正常的运行状态,对外提供服务(主机),担任备份功能的系统则称为备机。当主机系统因意外(火灾、洪灾等)停止...
  • MSSQL、Mysql数据库容灾灾备

    千次阅读 2014-08-08 15:29:06
    这段时间,好多朋友都问我异地的应用级
  • MySQL异地备份策略容灾脚本--shell

    千次阅读 2013-11-27 13:27:06
    由于公司的机器异地的是win主机,需要把linux的备份脚本远程传输到这台win上,所以我选择ftp,大家可以使用wput会好很多,而且比较强大; [root@Mysql28 shell]# cat test.sh  #!/bin/bash #tar xvzfi --------...
  • otter是阿里巴巴去o开发的一款基于Java且免费、开源、基于数据库增量日志解析、准实时同步到本机或异地机房的mysql/oracle数据库的解决方案 otter manager和node安装包下载地址:...
  • },{"title":"创新技术的实验田","desc":"异地多活本质上是提供了自上而下的一种流量隔离能力,业务具备单元间隔离的能力,在最小隔离单元内,业务可灵活进行风险可控的技术演进,例如基础设施升级、新技术验证等。...
  • mysql5.7.21版本主从异地热备份 数据库版本:5.7.21 1.两台ip地址: 服务器A(ubuntu):192.168.10.68 服务器B(window):192.168.10.167 2.开启服务器A的log_bin以及授权服务器B的登录访问 ...
  • 数据库跨云备份和异地多活解决方案.PDF数据库跨云备份和异地多活解决方案数据库跨云备份和异地多活解决方案是一种高效、可靠、灵活、可控的...客户提供数据库同城或异地多活、跨云备份的多云以及跨云的容灾备份能力...
  • 饿了么技术团队花了1年多的时间,实现了业务的整体异地多活,能够灵活的在多个异地机房之间调度用户,实现了自由扩容和多机房容灾的目标。本文介绍这个项目的中五大核心基础组件中的DAL与GZS,关于项目整体介绍以及...
  • Linux服务器MySQL数据库简单的异地备份方案首先简单说下:1、执行脚本导出数据库。mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/backup.sql2、使用scp将导出的数据库文件传输到其他服务器上...
  • 为了防止天灾人祸、不可抗力,在同城或异地建立对应的IT系统,其中最核心的工作是数据同步。 本文选取应用层容灾的场景中,对于哪些数据表需要跨云同步,哪些数据表不需要跨云同步的问题进行探讨。通过一个具体的...
  • 为了防止天灾人祸、不可抗力,在同城或异地建立对应的IT系统,其中最核心的工作是数据同步。本文选取应用层容灾的场景中,对于哪些数据表需要跨云同步,哪些数据表不需要跨云同步的问题进行探讨。通过一个具体的案例...

空空如也

空空如也

1 2 3 4 5
收藏数 97
精华内容 38
关键字:

mysql异地容灾

mysql 订阅