mysql集群

mysql主从复制

China☆狼群 提交于 2020-01-01 03:50:17
第1章 MySQL主从复制 1.1 数据库损坏了? 主要理解为:业务不能使用数据库 外在原因: 1、网络问题 2、业务应用有问题,客户端损坏 数据库本身的原因: 1、物理损坏:机器坏了、硬盘坏了、存储坏了 2、逻辑损坏:误drop、delete、truncate、、update。 解决方案: 1、备份 2、主从复制 1.2 MySQL主从复制 1.2.1 MySQL复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行,从而使复制服务器和主服务器的数据保持同步。复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slaves)。主服务器将更新重新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器、从服务器在日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。 复制的用途: 通过主从复制(master-slave)的方式来同步数据,再通过读写分离(mysql-proxy)来提升数据库的并发负载能力,或者用来作为主备机的设计,保证在主机停止响应之后在很短的时间内就可以将应用切换到备机上继续运行。 优势: (1)数据库集群系统具有多个数据库节点

MySQL集群(二)之主主复制

被刻印的时光 ゝ 提交于 2020-01-01 02:45:21
前面介绍了主从复制,这一篇我将介绍的是主主复制,其实听名字就可以知道,主主复制其实就是两台服务器互为主节点与从节点。接下来我将详细的给大家介绍,怎么去配置主主复制! 一、主从复制中的问题 1.1、从节点占用了主节点的自增id   环境:     主节点:zyhserver1=1.0.0.3     从节点:udzyh1=1.0.0.5   第一步:我们在主节点中创建一个数据库db_love_1,在创建一个表tb_love(里面有id自增和name属性)。   create database db_love_1;   use db_love_1;   create table tb_love( id int primary key auto_increment, name varchar(30));   第二步:在主节点中添加一条数据,我们可以 在主从节点中都可以看到这条数据都有了 。   insert into tb_love(name)values('zhangsan');   第三步:如果我们在从节点中加入一条数据   insert into tb_love(name)values('lisi');     在从节点中: 在主节点中:     这是自然的因为我们是主从复制,只有主节点写的数据才能同步到从节点中,从节点中的数据是不能同步同主节点中的。因为从节点并没有二进制日志文件

mysql双机热备实现

与世无争的帅哥 提交于 2020-01-01 02:26:00
说明 机器A:(172.16.1.251),机器B:(172.16.1.252) 两台机器都创建数据库web: create database hello default charset utf8; 实现步骤 双向热备份:首先设置A上数据库为master,B上的备份数据库为slave;然后配置B上的数据库为master,A上数据库为slave (1)修改 A和B上的 配置文件my.cnf,加入以下内容 #机器A配置 server-id=7 # 主ID,与从ID不能相同 log-bin=mysql-0-bin #设定生成log文件名 binlog-do-db=web #设置同步数据库名 binlog- ignore-db=mysql #忽略同步mysql数据库 replicate-do-db=web # 两处web是一致的 replicate- ignore-db=mysql auto-increment-increment=10 # 插入id增长间隔 auto-increment-offset=1 #从1开始增长 #机器B配置 server-id=17 # 主ID,与从ID不能相同 log-bin=mysql-1-bin #设定生成log文件名 binlog-do-db=web #设置同步数据库名 binlog- ignore-db=mysql #忽略同步mysql数据库

如何建立主从服务器

空扰寡人 提交于 2020-01-01 01:49:43
1. 2.  a、为什么需要读写分离?   一台服务器满足不了访问需要。数据的访问基本都是2-8原则。   b、怎么做?    不往从服务器去写了,那就要主上写的操作都要同步到从(主从同步)    (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);    (2) slave将master的binary log events拷贝到它的中继日志(relay log);   (3) slave重做中继日志中的事件,将更改应用到自己的数据上。    把读的请求同步到从,把写的请求分发的主。(读写分离) 技术选型,myproxy 2.1 这里在一台计算机上模拟开启两台数据库服务,主从服务器配置好后如下图: 2.2 2.3 在该路径下D:\MySQL\MySQL Server 5.5_master\bin,执行如下命令:(cmd必须是在管理员模式下运行) mysqld --install MySQLXY --defaults-file="D:\MySQL\MySQL Server 5.5_master\my.ini" 安装服务 注意:MySQLXY是服务名称,可以任意取名称 defaults-file="D:\MySQL\MySQL Server 5.5_master\my.ini"是主数据库配置文件地址

专职DBA-MySQL主从异步复制

孤街浪徒 提交于 2020-01-01 01:49:26
专职DBA-MySQL主从异步复制 MySQL主从复制企业级应用场景 1.从服务器作为主服务器的实时数据备份。 2.主从服务器实现读写分离,从服务器实现负载均衡。 3.根据业务重要性对多个从服务器进行拆分访问。 MySQL主从读写分离实现方案 1.通过开发程序实现读写分离(需要程序支持) 2.通过开源的软件实现读写分离。 3.大型门户独立开发DAL层综合软件。 mysql主从复制原理重点小结: 1.主从复制是异步的逻辑的SQL语句级的复制。 2.复制时,主库有一个binlog dump线程,从库有两个线程,I/O线程和SQL线程。 3.从mysql 5.6起,slave从库的SQL线程可以是多个。 4.实现主从复制的必要条件是主库要开启记录binlog的功能。 5.用于复制的所有mysql节点配置中的server-id都不能相同。 6.binlog文件只记录对数据库有更改的SQL语句(来自主库内容的更改),不记录任何(select,show)查询以及未对数据库做出更改的语句。 链接克隆两台主机,模板机安装请参考install_linux_os.sh VMware克隆Centos6.4虚拟机网卡无法启动问题 # cat /etc/sysconfig/network-scripts/ifcfg-eth0 # sed -i '/UUID/d' /etc/sysconfig/network

mysql双主互备

拈花ヽ惹草 提交于 2020-01-01 01:47:44
mysql主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave),备服务器从主服务器同步数据,完成数据的备份。 【异步同步】 前提:2台服务器,主 192.168.1.101 备 192.168.1.102 1.首先主 备 服务的mysql配置的server的id必须不同,server_id是为了标识binlog,防止同步死循环。 #服务器ID,同个集群必须不同 server_id=1 #端口 port=63751 skip-name-resolve #binlog 过期时间,超过3天未修改的清除 expire_logs_days = 3 #binlog 的名称 log-bin=mysql-bin.log #同步的库排除mysql binlog-ignore-db=mysql #同步的库排除mysql replicate-ignore-db=mysql slave-skip-errors=all #id 的自增量 auto_increment_increment=2 #id 的开始 auto_increment_offset=1 #最大连接数 max_connections=1000 #编码 collation-server=utf8_unicode_ci init-connect=

mariadb/mysql高可用读写分离

家住魔仙堡 提交于 2020-01-01 01:29:25
第一步mariadb主从配置 第二步ProxySql读写分离 第三步keepalived高可用proxysql 第四步测试mysql读写分离高可用是否成功 第一步mariadb主从配置: 首先配置好mariadb主从同步,这里采用的一主两从,node1和node2为半同步复制,node1和node3为异步复制,也可以全部采用异步复制,根据业务需求配置即可 保证各服务器节点时间同步,可参考 时间同步设置方案 http://www.longma.tk/p=629 初始化环境 node1和 node2 ,为保证不受其它实验干扰,建议恢复至初始状态,新装的mariadb即可,不要有其它实验项目干扰 主服务器node1配置: 1 2 3 4 5 6 7 8 9 10 11 配置文件 vim / etc / my .cnf .d / server .cnf [ mysqld ] skip_name_resolve = ON innodb_file_per_table = ON server_id = 1 log_bin = mysql - bin systemctl start mariadb .service mysql > GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'repluser' @ '172.18.43.%'

轻松构建Mysql高可用集群系统

南楼画角 提交于 2020-01-01 01:28:37
转自:http://ixdba.blog.51cto.com/2895551/583232 原文作者: 技术成就梦想 一、 MySQL复制的实现原理 MySQL支持单向、双向复制、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新 写入一个二进制日志文件中,并创建一个索引文件以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,日志文件会通知主 服务器,从服务器在日志中读取的最后一次成功更新的位置。接着,从服务器在上次成功更新的位置处开始进入更新操作。更新完成后从服务器开始进入等待状态, 等待主服务器后续的更新。 需要注意的是:在进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,可能发生对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。 单向复制有利于健壮性、速度和系统管理. 主服务器/从服务器设置增加了健壮性。主服务器出现问题时,可以切换到从服务器。 通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。 MySQL提供了数据库的同步功能,这对实现数据库的冗灾、备份、恢复、负载均衡等都是有极大帮助的。 一般情况下

mysql 集群 数据同步

扶醉桌前 提交于 2020-01-01 01:08:02
mysql集群配置在网站负载均衡中是必不可少的; 首先说下我个人准备的负载均衡方式;   1、通过nginx方向代理来将服务器压力分散到各个服务器上;   2、每个服务器中代码逻辑一样;   3、通过使用redis缓存来保存内存中数据,使用redis同步功能来同步不同服务器内存中的数据;   4、在通过mysql的集群配置来实现数据库数据同步; 这里我整理了几种数据同步方式; 一:主从服务器同步;   顾名思义:主服务器负责数据的增删改查,从服务器负责同步数据;   主服务器建立二进制文件;每产生语句变化或磁盘变化写入日至;   从服务器读主服务二进制日至;将读到的日至转成从服务的relaylog,从服务读取relaylog同步主主服务器;   主服务器建立授权复制账号;   从服务器利用账号来监听主服务器;   步骤:   1、首先需要至少两台服务器,我这边118.xxx.xxx.1(主),118.xxx.xxx.2(从)两台服务器;两台搭建mysql方式不同,一台安装mysql,和mysql-server;一台通过直接安装mariadb方式;没什么影响;   2、主服务器修改/etc/my.cnf;     #在[mysqld]下添加,建立二进制日至#server-id一般用服务器后一位server-id=1 log-binary=mysql-bin #监听变化方式

MySQL入门(四)

陌路散爱 提交于 2020-01-01 00:15:24
1. 集群搭建之主从复制 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。 1.1 主服务器的配置 1.1.1 第一步:修改my.conf文件: 在[mysqld]段下添加: #启用二进制日志 log-bin=mysql-bin #服务器唯一ID,一般取IP最后一段 server-id=133 1.1.2 第二步:重启mysql服务 service mysqld restart 1.1.3 第三步:建立帐户并授权slave mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456'; mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; #一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。 刷新权限 mysql> FLUSH PRIVILEGES; 查看mysql现在有哪些用户 mysql>select user,host from mysql.user; 1.1.4 第四步:查询master的状态