mysql数据库

初识 MySQL 5.5、5.6 半同步复制

半腔热情 提交于 2020-03-18 08:02:36
MySQL默认的复制都是异步的,在服务器崩溃时丢失事务是使用异步复制不可避免的结果。而5.5之后推出的一项新功能:半同步复制,可以限制事务丢失的数量。 MySQL5.7在5.6/5.5的基础上增强了几点功能: 1)无数据丢失 MySQL5.6/5.5 半同步复制的原理 :提交事务的线程会被锁定,直到至少一个Slave收到这个事务,由于 事务在被提交到存储引擎之后才被发送到Slave上 ,所以事务的丢失数量可以下降到最多每线程一个。因为事务是在被提交之后才发送给Slave的,当Slave没有接收成功,并且Master挂了,会导致主从不一致:主有数据,从没有数据。如下面的情况:( AFTER_COMMIT) 客户端执行一个事务,master接收到之后提交后并把事务发送给slave,在发送的期间网络出现波动,但要等待slave把binlog写到本地的relay-log,然后给master一个返回信息,等待以rpl_semi_sync_master_timeout参数设置的超时为准(默认为10秒)响应。在这等待的10秒里,其他会话查可以看到Master上的事务,此时一旦master发生宕机,由于事务没有发送给slave,而master已经提交了,导致数据不一致。 例子: A客户端执行的事务将字段Z从0修改为1。 1.A提交事务到master 2.master写binlog 3.master

MySQL半同步复制

大城市里の小女人 提交于 2020-03-18 07:55:35
l 安装配置: 略 l 机器分布 IP 作用 用途 192.168.15.3 master 主库 192.168.15.4 Slave1 备库 192.168.15.5 Slave2 备库 l 基本的MySQL主从配置 MySQL复制过程分成三步: master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events; slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的 Master配置 1)分配复制权限 主库和从库均需要执行 mysql> grant replication client,replication slave on *.* to 'replck1'@'192.168.15.%' identified by "replck1#!123"; mysql> flush privileges; 2)将master中的数据dump到slave1 slave2中 /opt/app/mysql/bin/mysqldump -uroot -p'' --opt --default-character-set=utf8 \ --triggers -R --master-data=2

MySQL 5.7 深度解析: 半同步复制技术

不问归期 提交于 2020-03-18 07:52:56
复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 MySQL的复制分为四种: 普通的replication,异步同步。 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,可谓非常成熟。 但是这种架构数据是异步的,所以有丢失数据库的风险。 semi-sync replication,半同步。性能,功能都介于异步和全同步中间。从mysql5.5开始诞生,目的是为了折中上述两种架构的性能以及优缺点。 sync replication,全同步。目前官方5.7基于Group replication的全同步技术处在labs版本,离正式集成已经不远。全同步技术带来了更多的数据一致性保障。相信是未来同步技术一个重要方向,值得期待。 mysql cluster。 基于NDB引擎,搭建也简单,本身也比较稳定,是mysql里面对数据保护最靠谱的架构,也是目前唯一一个数据完全同步的架构,数据零丢失。不过对业务比较挑剔,限制也较多。 半同步复制 我们今天谈论第二种架构。我们知道,普通的replication,即mysql的异步复制,依靠mysql二进制日志也即binary log进行数据复制。比如两台机器,一台主机(master),另外一台是从机(slave)。 正常的复制为:事务一(t1)写入binlog buffer;dumper

mysql主从之半同步复制和lossless无损复制

邮差的信 提交于 2020-03-18 07:52:34
一 MySQL 的三种复制方式 1.1 简介 asynchronous 异步复制 fully synchronous 全同步复制 Semisynchronous 半同步复制 从MySQL5.5 开始,MySQL 以插件的形式支持半同步复制。 1.2 异步复制(Asynchronous replication) MySQL 默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash 掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,将从提升为主,可能导致新主上的数据不完整。 原理:在异步复制中,master 写数据到binlog 且sync,slave request binlog 后写入relay‐log 并flush disk 优点:复制的性能最好 缺点:master 挂掉后,slave 可能会丢失数据 1.3 全同步复制(Fully synchronous replication) 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。 优点:数据不会丢失 缺点:会阻塞master session,性能太差,非常依赖网络 1.4 半同步复制(Semisynchronous

数据库主从复制

风流意气都作罢 提交于 2020-03-18 07:09:44
步骤如下: 主服务器:从服务器ip地址分别为 192.168. 145.222、 192.168. 145.226 1、修改主服务器master: vi /etc/my.cnf [mysqld] log-bin=mysql-bin #[必须]启用二进制日志 server-id= 222 #[必须]服务器唯一ID,默认是1,一般取IP最后一段 2、修改从服务器slave: vi /etc/my.cnf [mysqld] log-bin=mysql-bin #[不是必须]启用二进制日志 server-id= 226 #[必须]服务器唯一ID,默认是1,一般取IP最后一段 3、重启两台服务器的 MySQL systemctl restart mariadb 4、在主服务器上建立帐户并授权slave: mysql mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@ '%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如 192.168. 145.226,加强安全。 5、登录主服务器的mysql,查询master的状态 mysql>show master status; +------------------+----------+--

mysql主从复制

被刻印的时光 ゝ 提交于 2020-03-18 07:09:08
mysql主从复制 (超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码 2、修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 3、修改从服务器slave: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[不是必须]启用二进制日志 server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 4、重启两台服务器的mysql /etc/init.d/mysql restart 5、在主服务器上建立帐户并授权slave: #/usr/local/mysql/bin/mysql -uroot -pmttang mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226

MySQL 运行环境建议规范

我与影子孤独终老i 提交于 2020-03-18 06:38:54
一、操作系统环境 操作系统版本选择 CentOS/RHRL/ORACLE Linux 5.x/6.x x86_64 发行版 建议磁盘分区规则 MySQL 运行环境建议规范 挂载点 大小 分区类型 分区用途 /boot 100M 系统默认即可 /boo swap 4G-16G swap swap /opt 20G xfs 安装应用软件 应用程序安装在 /opt/app/ 下的子目录,例如 /opt/app/mysql-5.5.37 / 40G ,最小不低于 20G 系统默认即可 / /home 第一个 Raid 剩余 ,不低于 20G xfs 存放备份文件目录 备份文件放在 /home/backup 下的子目录,例如 /home/backup/mysql/20140819 /data 第二个 Raid 的全部,根据数据大小决定 xfs 存放 MySQL 数据文件目录 数据文件放在 /data/mysql 下的子目录,例如 /data/mysql/myapp_3306 /tmp 8-16G tmpfs 采用 tmpfs,利用内存的共享内存,加速 /tmp 目录的文件读写性能 内核参数建议值 1. 调整最大文件数限制 ulimit -n 65535 并且写入 /etc/sysctl.conf,重启后也能生效 2. 修改 IO 调度器设置 io 调度器修改为 deadline,如果是

RPM方式安装MySQL5.6

喜你入骨 提交于 2020-03-18 05:02:47
摘自: https://www.cnblogs.com/wangshuyi/p/6089344.html RPM方式安装MySQL5.6 RPM方式安装MySQL5.6 a. 检查 MySQL 及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称) 1 [root@localhost ~]# rpm -qa | grep -i mysql 2 mysql-libs-5.1.66-2.el6_3.x86_64 3 [root@localhost ~]# yum -y remove mysql-libs* b. 下载 Linux 对应的RPM包,如:CentOS6.4_64对应的RPM包,如下: 1 [root@localhost rpm]# ll 2 total 74364 3 -rw-r--r--. 1 root root 18442536 Dec 11 20:19 MySQL-client-5.6.15-1.el6.x86_64.rpm 4 -rw-r--r--. 1 root root 3340660 Dec 11 20:06 MySQL-devel-5.6.15-1.el6.x86_64.rpm 5 -rw-r--r--. 1 root root 54360600 Dec 11 20:03 MySQL-server-5.6.15-1.el6.x86_64.rpm

windows环境下mysql数据库的主从同步备份步骤

亡梦爱人 提交于 2020-03-18 05:02:19
以下配置在本机上已经成功: 实现功能:A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的。 环境: A、B的MySQL数据库版本同为4.1.20 A: 操作系统:Windows 2003 server IP地址:192.168.100.1 B: 操作系统:Windows 2003 server 的IP地址:192.168.100.2 配置过程: 1、在A的数据库中建立一个备份帐户,命令如下: GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@'192.168.100.2' IDENTIFIED BY ‘1234’; 建立一个帐户backup,并且只能允许从192.168.100.2这个地址上来登陆,密码是1234。 2、因为mysql版本新密码算法不同,所以进入mysql下,输入:set password for 'backup'@'192.168.100.2'=old_password('1234'); 3、关停A服务器,将A中的数据拷贝到B服务器中,使得A和B中的数据同步,并且确保在全部设置操作结束前,禁止在A和B服务器中进行写操作,使得两数据库中的数据一定要相同! 4、对A服务器的配置进行修改,打开mysql/my

SoapUI 之 JDBC请求

让人想犯罪 __ 提交于 2020-03-18 04:13:26
之前有试过Jmeter的JDBC请求,挺方便的,今天下午闲来没事,看见soapUI里面也有一个JDBC请求,便也来试试。 首先添加一个JDBC请求,然后直接把Jmeter的一些链接参数复制过去,一直报错,没法访问数据库。便到处百度查看了下,最后还是去官网上找到了答案,记录下来供分享,以后大家遇到类似的需要用到,可以不用撞破头啦! 1.添加一个JDBC request 2.添加完毕后,看到JDBC的内容页面: 需要我们自己去添加驱动以及连接字符串。 注意:驱动需要我们自己去下载,mysql-connector-java-5.1.7-bin.jar,下载好后,把它直接放在 soapui的 lib文件夹下面。 看到上面的连接方式,我这里就只说了mysql的连接方式。 Driver:Mysql/com.mysql.jdbc.Driver ---->这里是mysql的驱动引用方式。 Connection String:jdbc:mysql://120.44.25.15:3306/test?user=root&password=123456 ---->这里是连接数据库字符串的拼接方式。下面进行特别说明: 连接字符串的组成方式如下: jdbc:mysql://ip[数据库所在的服务器IP地址]:port[端口号]/database[数据库名称]?user=[这里填写登录数据库用户名]