MySQL5.7新特性之redo log事务日志大小调整
在MySQL5.6/5.7之前的版本中,如MySQL5.5,如果要修改ib_logfile(redo log)大小,步骤如下:1)执行set global innodb_fast_shutdown=0命令,把所有脏数据写入磁盘;2)执行mysqladmin shutdown命令关闭数据库;3)在my.cnf文件里修改innodb_lof_file_size参数值;4)执行mv ib_logfile* ***bak命令,将redo log移动...
binlog_ignore_db引起的同步复制故障
在MySQL master上使用binlog_ignore_db参数之后,mysq -e执行的所有语句都不写binlog了。 查看MySQL操作手册,忽略某个库的复制有两个参数:1、binlog_ignore_db该参数设置到master上,例如:binlog_ignore_db=test,那么针对该库的所有操作(增、删、改)都不会被记录下来,这样slave接受的binlog就会减少,...
mysql -e详解
可以用shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作 。mysql -hhostname -Pport -uusername -ppassword -e 相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。实例:#!/bin/bash...
slave_exec_mode参数处理同步错误
MySQL主从同步中,经常遇到的三种同步错误:1、在master上delete一条记录,若在slave上没有这条数据,会出现报错。2、在master上insert一条记录,若在slave上主键值已经存在,会出现报错。3、在master上update一条记录,若在slave上没有这条数据,会出现报错。如果slave的my.cnf已经配置了slave_skip_errors参数,则可...
slave的中继日志relay-log损坏
当slave意外宕机时,有可能会损坏中继日志relay-log,再次开启同步复制时,会出现报错。 解决方法:找到同步的binlog日志和POS点,然后重新进行同步,这样就可以有新的中继日志了。 下边看个案例,模拟了中继日志损坏的情况,查看到的信息如下:点击(此处)折叠或打开...
误删除InnoDB ibdata数据文件的恢复
下边这个案例模拟人为误删除数据文件和重做日志文件。1)删除数据文件和重做日志文件cd /mysql/datarm -rf ib*2)若此时数据库可以支持工作,数据可以正常写入,千万不要将mysqld杀死,否则没法挽救,找到mysqld的pid[root@mysql data]# netstat -nltp |grep mysqldtcp 0 &nb...
MySQL故障切换之事件调度器注意事项
事件调度器(event)是在MySQL5.1中新增的任务调度器,解决了在之前版本中只能依赖系统定时任务才能完成的功能。 下边看一个案例:开启event:mysql> set global event_scheduler=ON;Query OK, 0 rows affected (0.01 sec)mysql> show variables like 'event%';+-----------------+-------+| Variable_n...
谨慎设置binlog_format=MIXED
binlog_format有三种格式,STATEMENT、ROW和MIXED。statement在二进制日志里,记录的是实际的SQL语句,ROW在二进制日志记录的是实际行的变更。 在二进制日志里,MIXED默认还是采用STATEMENT格式记录的,但在下面这6种情况下会转化为ROW格式: 第一种情况:DNB引擎,表的DML操作会以ROW格式...
连接数过多导致程序连接报错原因分析
1、参数设置太小,max_connections需要根据主机的性能和实际需要进行合理的配置。2、磁盘I/O瓶颈,比如被一条SQL堵死,造成后边的DML操作等待,又比如增、删、改、查很频繁,磁盘I/O遇到瓶颈,导致无法处理繁忙的请求。3、MySQL处理完一条请求后,会根据wait_timeout值来释放连接(参数含义:服务器关闭非交互连接之前等...
MySQL5.7中GTID复制的改进
1、支持创建临时表MySQL5.7版本可以支持create temporary table、drop temporary table命令。2、开启GTID复制模式,不用开启log_slave_updates参数MySQL5.6版本的GTID复制模式,必须开启log_slave_updates参数,否则启动会报错,因为需要在binlog找到同步复制的信息(UUID:事务号)3、在线开启/关闭GTID,不用重启my...
MySQL5.7主从复制-GTID复制搭建
两台服务器,系统是Redhat6.5,MySQL版本是5.7.18。1、在主库上,创建复制使用的用户,并授予replication slave权限。这里创建用户repl,可以从IP为10.10.10.210的主机进行连接。grant replication slave on *.* to 'repl'@'10.10.10.210' identified by 'mysql';2、修改主服务器配置,加入如下配置:cat /etc/...
MySQL5.7主从复制-半同步复制搭建
两台服务器,系统是Redhat6.5,MySQL版本是5.7.18。1、打开主库和从库的MySQL服务,然后安装插件,半同步复制插件在目录/usr/local/mysql/lib/plugin下在主库安装semisync_master.so插件:点击(此处)折叠或打开mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';...
MySQL5.7主从复制-异步复制搭建
两台服务器,系统是Redhat6.5,MySQL版本是5.7.18。1、在主库上,创建复制使用的用户,并授予replication slave权限。这里创建用户repl,可以从IP为10.10.10.210的主机进行连接。grant replication slave on *.* to 'repl'@'10.10.10.210' identified by 'mysql';2、修改主服务器配置,加入如下配置:cat ...
Redhat6.5安装MySQL5.6
1、安装make编译器,系统已安装2、安装bison,系统已安装3、安装gcc-c++,系统已安装4、安装ncurses,系统已安装5、安装cmake,下载的cmake-3.4.3源码包,进行安装6、创建mysql用户组和用户groupadd -g 300 mysqluseradd -u 300 -g mysql mysql7、解压并安装mysqltar -zxvf mysql-5.6.35.tar.gzcd mysql-5....
Redhat6.5安装MySQL5.7
1、安装make编译器,系统已安装2、安装bison,系统已安装3、安装gcc-c++,系统已安装4、安装ncurses,系统已安装5、安装cmake,下载的cmake-3.4.3源码包,进行安装6、创建mysql用户组和用户groupadd -g 300 mysqluseradd -u 300 -g mysql mysql7、解压并安装mysqltar -zxvf mysql-5.6.35.tar.gzcd mysql-5....
MySQL5.7新特性之优化union all
MySQL5.6中,使用union all相当于创建一张临时表,这在执行大的联合查询时候会增加I/O开销,降低查询速度。 例如执行以下SQL语句: (select id from accessLog order by id) union all (select id from access_test order by id); 在MySQL5.6环境:点击(此处)折叠或打开...
MySQL5.7新特性之优化排序limit
测试一个案例,测试环境分别为MySQL5.5和MySQL5.7。 在MySQL5.5环境中:点击(此处)折叠或打开mysql> select * from access_test order by rand() desc limit 5;+---------+------------------------------------------+------------+---------------------+-----...
MySQL5.7新特性之select半连接优化
MySQL的子查询一直以来都是性能差的著称,解决方法是以join代替。 MySQL5.5版本中该查询先把accessLog表中版本为2.2的数据线过滤出来,然后每个符合条件的数据都与内表进行一次select id from accessLog_01,因此性能低下。MySQL5.5采取的解决方法是将in重写为exists。 在MySQL5.6/5.7版本中,子查询执...
MySQL5.7新特性之错误日志打印到操作系统日志文件
通常,MySQL将错误日志输出在hostname.err文件中,但MySQL5.7可以将错误日志打印到操作系统日志中,具体操作如下: MySQL服务器启动的时候,mysqld_safe加 --syslog参数,如下: 启动MySQL服务:[root@mysql log]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --syslog --user=mysq...
MySQL5.7新特性之explain UPDATE/DELETE/INSERT
在MySQL5.5版本中,explain查看执行计划,只能支持select语句,但是在MySQL5.6/5.7版本中,可以支持DML语句,即UPDATE、DELETE、INSERT。 建立测试表accessLog和accessLog_bak进行测试:点击(此处)折叠或打开mysql> explain select * from accessLog where id=16649850;...